Table of Contents
二进制
只要是学习计算机的,或者不学习计算机的,都一定听说过二进制这个词语。什么逢二进一,反正感觉不像人话,也听不懂。不管懂不懂呢,大家基本都认识到了二进制的巨大威力,并且也知道了这样一个笑话,世界上有10种人,一种懂二进制,一种不懂二进制。所以,这一次,我想讲讲二进制的一些故事。在正式讲二进制之前,我先来说说二维码。
二维码
自从手机时代以后,每个人都难免要扫一扫二维码。什么是二维码呢?简单来说,二维就是平面,码就是code的意思,编码。二维码就是在平面方向上一个黑白相间的图形。比如说,我们经常使用的微信的二维码就是其中的一种,也是最流行的一种二维码,叫做矩阵式二维码。这个二维码上有三个最大的色块,就是角上那三个最大的色块,是用来定位的,这样就不怕扫描二维码的时候,手机拿偏了,导致信息扫描不出来。
矩阵二维码有很多版本,在这里只讲version 1, 一个21×21的矩阵。二维码有40个尺寸,每一个尺寸增加4,也就是说version 2是25×25,最大的尺寸是21+(40-1)*4 = 177,最大的尺寸就是177 X 177个小格子。可以把这个想象成围棋的棋盘。对二维码进行编码就是把这个棋盘涂成黑白两种颜色。其中当然包括很多其它的技术细节,我只讲几个技术细节,首先讲纠错码。
在我们常见的二维码中,分为四种级别的纠错码,分别是LMQH四种级别。L 级别是7%的字码可修改,M级别是15%的字码可修改,Q级别是25%的字码可修改,H级别是30%的字码可修改。所以,二维码破损也可以被识别。很多人在二维码上加上自己的头像。二维码纠错的算法是Reed-Solomon error correction(里德•所罗门纠错算法),比较复杂,纯数学。然后再将这数据和纠错码交替放在一起,最后一步才是填充最后的编码。
填充的过程是从左下角开始填充,黑色代表1,白色代表0,如果碰到非数据区,就绕开或者跳过,最后,就生成二维码的图片。生成以后,如果二维码出现大面积的空白或者黑色,扫描起来会更困难。所以,最后填充的图片还要经过一个操作,叫Masking(化妆)。QR里面有8个不同的图形供大家选择,这8个图像黑白分布非常均匀,因此,还要把最终生成的图像和这8个提供的mask图像做一个XOR操作。这个Mask操作只和数据区进行操作,不会影响功能区。所以我们看到的二维码,不会出现大片连续的黑色或者大片连续的白色。
我为什么讲二维码呢?因为二维码可能是目前我们用眼睛看到的,用的最多的一种二进制。黑色的代表1,白色的代表0。计算机中就是使用二进制。
十进制
不管我们是去日本还是去美国,可能其它的文字看不懂,但是去超市的话,有一个东西一定看得懂,就是数字。从0-9这十个数字,不管哪个国家,都是使用这个方式来写数字,除了一些美洲的印第安人部落可能使用其它的计数方式。可以说,阿拉伯数字是最通用的语言。这0-9的十个数字是人类广泛使用的计数体系。据说,十进制在5000多年以前就出现在古埃及了,中国也考证说在殷墟里的甲骨文上也发现了十进制,大约3000多年以前。具体是不是真的,我不知道。
有个说法是,因为人有十根手指,所以才使用十进制,如果青蛙来计数的话,可能是8进制,因为青蛙可能是有四根手指头,我从网上搜了几张图片看了一下,感觉是四根手指头。当然了,我不懂生物学,只是个程序员,闷声写代码,如果说错了,不要笑我太简单太幼稚。如果青蛙会认识数字的话,应该也是数手指头,可能会用8进制,所以,以后如果青蛙开始制造电脑,天生使用八进制,应该是个非常大的优势。
算盘
算盘这个东西,我们这里有意无意的暗示,这玩意是中国发明的,而且算盘和计算机有莫大的关系。这么说也不算错,中国算盘确实是中国发明的,但是这个世界上存在各种各样的算盘,有巴比伦算盘,有古希腊算盘,有古罗马算盘,样子都差不多。都是使用一些小球球来计数,中国的算盘其实是宋朝末期,元朝初期才开始大规模流行。在此之前使用的方法是算筹,这玩意也很先进,有兴趣的可以研究一下,算筹这个从周朝,汉朝就大规模使用了,就是用一些木棍就能计算。
我们古代的算盘是上面两个珠子,下面五个珠子。如果用这种算盘来计数十进制的话,有两个珠子永远都用不到,所以,日本的算盘是上面一个珠子,下面四个珠子,我们中国现在的算盘,基本上也是日本算盘的样子,当然,现在都用计算器了。现在很少见到有人用算盘了。我看过一篇文章,因为中国有一个成语叫“半斤八两”,那篇文章里说,中国古代的算盘其实是计算十六进制的,如果那篇文章是正确的,那就能解释为啥中国古代算盘是上面两个珠子,下面5个珠子,因为这样,正好是十六进制中的最大的数15,而中国古代,16两算一斤,不是现在的10两算一斤。我个人认为这个说法是靠谱的。
算盘虽然不用了,但是,我们可以通过算盘来理解进位的概念。我们以上面一个珠子,下面四个珠子的日本算盘为例。当我们要输入9的时候,在最后面的一栏,使用上面一个珠子,下面四个珠子,如果输入数字10,只能使用倒数第二位的一个珠子,也就是所谓的逢9进1。如果我们使用二进制算盘,每一栏只需要一个珠子,因此,只要表示超过数字1,就进一位。所以,当有进位的困扰的时候,心里想一下算盘就好了。
二进制对计算机来说,尤其是我做的这个系列,使用继电器来构造一个计算机,只要有电流通过就是1,没有电流通过就是0。因此,这样对计算机来说,使用二进制很简单,但是,对人类来说,二进制的长度太长了,增加的速度太快,并不容易读,为了解决这个问题,每四个二进制组成一组,这样可以组成八进制或者十六进制,从某种意义上来说,八进制和十六进制,纯粹是为了满足人类的可读性,对计算机来说,都是二进制。
在1950年左右,一个美国数学家意识到二进制的重要性,这个数学家的名字叫约翰•威尔德•特克,他决定给二进制起一个名字,在此之前二进制的英文单词是binary digit。这是两个单词,这个数学家想起一个更短一点的名字,在选定了好几个名字以后,最终选择了bit这个单词,这个单词只要三个字母,最终也证明了这个数学家的眼光,bit这个单词可以入选上世纪最重要的单词之一。另外,也有人说这个名字是信息论的提出者香农命名的bit,这两种说法都有,我也不知道哪个是真的,所以,留给有考据癖的各位自己去考据吧,考据好了,告诉我一声。
bit的意义
bit到底有什么意义呢?当我们发明一个单词的时候,通常要有某个特殊的意义。在计算机中,比特的意义是信息的最小单位,1比特在计算机中是最小的信息量,也就是说,在计算机上,我们不能传播小于1比特的信息。比特传播的信息非常小,如果要传播更多的信息,就需要更多的比特。
那什么是信息呢?你追个女朋友,她答应或者不答应是一种信息;今天有雾霾或者没有雾霾也是一种信息;这种信息是可以通过计算机传播的,因为这种信息是非此即彼。还要一种信息是没法通过计算机来传播的,尤其是情绪,比如说,女朋友今天的心情,你说好吧,又不太好,你说不好吧,又还可以。这种信息不是非此即彼的,电脑中无法表示这种状态,女朋友的脾气嘛,一会儿好,一会儿坏。这种信息对我们人类至关重要,但是,使用计算机的确非常难以表示这种状态。所以,至今为止,不管人工智能如何发展,我们人类还是没有和计算机建立起某些浪漫的关系。因为二进制的计算机目前只能表示出来确定的状态,不会撒娇,所以,一点也不可爱。也就是说,如果我们无法使用文字,图画或者声音来表示某种事物或者信息,那么我们也没办法用计算机表示出这种信息。比如说,你犯了错误,你女朋友一个犀利的眼神,让你后背发凉,这个犀利的眼神,无法用文字,也无法用语言,更无法用图片表示出来,这种的确存在,而又尽在不言中的信息,计算机无法搞定。
所以,我对人工智能在某些特定的领域超过人类,没有任何怀疑,如果说人工智能全方位超过人类,我是有怀疑的。计算机在一些确定的领域,尤其是非黑即白的领域,比如围棋,象棋领域,还有一些游戏领域,比如说踢FIFA足球游戏,如果调成难度很高的话,实际上很难赢电脑,这也算是人工智能的一种。只是电脑踢球能赢了人类,没引起关注,最近由于围棋以及Google的阿尔法狗才觉得人工智能要翻天了。
人工智能
既然谈到这里,我就多说一点人工智能,显然今天说这个话题,有点落伍,因为Google的AlphaGo以及不是热点了。其实Google的AlphaGo是收购的一个公司,这个公司叫DeepMind公司,是搞深度学习的。深度学习也不算特别前沿的科技,他有一个名字叫人工神经网络,如果年龄比较大的话,肯定听说过这个名字,人工神经网络,一个被抛弃冷落了很多年的技术。这个人工神经网络技术在80年代是热点,90年代被各大研究机构以及各个大学抛弃。所以,正经的名牌大学,根本不怎么研究这玩意。因此,现在人工神经网络改名叫机器学习以后,并且突然热门以后,我们就会发现一个神奇的现象,最热门的热点,不是在美国,而是在加拿大,比如多伦多大学,蒙特利尔大学,这些游离与著名与非著名大学的那种学校,主要的那些著名大学,根本没有研究这种东西的,感觉落后了啊。
让人工神经网络咸鱼翻身的转折点是一篇论文,主要是用来识别手写字母的,当时主流算法的准确率是98.6%,然后一个计算机科学家使用深度置信网络,这是一种神经网络,把准确率提高到98.75%,一下子就超过了主流的SVM算法,然后大家才又开始关注人工神经网络。现在人工神经网络已经在语音识别,包括苹果的siri还有微软的小冰,亚马逊的echo,这些都是深度学习,还有图像识别等领域大放异彩。
以后怎么样,我当然肯定是不知道的,搞不好某一天被某个算法拉下马也是很有可能的。比较深度学习就是这么被冷落了十几年,突然又开始红起来的。
我的一些胡思乱想
人工智能这个东西,我其实一直很关注的。人类这个物种,其实所有人的预测都不怎么准,唯一能提高命中次数的方法就是每天多预测几个事情,然后总有一个两个能预测准确,瞎猫碰到死耗子也能蒙对几个。暂时我们先不管人工智能,先看看其它的领域,都是科学领域吧。
上个世纪,人类造出了原子弹,还把人送到月球上,然后乐观的预测家就说,再过50年,核能驱动的汽车满大街跑,50年内火星上移民不是梦。悲观的预测家则另外一套说辞,完蛋了,练核弹都造出来了,第三次世界大战肯定是互相扔核弹,人类肯定要灭绝了。现在早就超过50年过去了,我们再来看看这两个阵营的预测,都错的十万八千里。乐观者说的核动力汽车满大街跑的景象肯定没出现,别说核动力汽车,我们现在造个汽车,还断轴,不是前轴断就是后轴断,还得弄一块铁板,打个补丁来解决问题。悲观者说世界末日来了,其实人类就使用了两次核弹,都给了日本。如果想灭绝人类,估计还得靠老朋友金三胖,这个最有出息的80后每天就知道放炮打炮。
同样是上个世纪,物理学突飞猛进,一个接一个的理论接踵而至,相对论量子力学一个接一个的出现,乐观者也是很高兴的预测,大统一理论近在咫尺了,结果现在也没搞定。去年还是前年,有个荷兰的科学家提出了墒增理论来加强爱因斯坦的广义相对论,至于这个理论正确不正确我不知道,起码证明了目前还没有搞定大统一理论,预言家又再次乐观过头了。墒增理论很神奇,墒永远都是增大的,永远增大,不会减小,这个广告词可以当男科医院的广告词,墒增男科医院,永远变大,不会缩小。以后有钱了,我打算注册一个男科医院,就叫墒增男科医院。
换到人工智能这个方面,乐观者说,马上了,奇点临近,人类赶紧准备准备后事,马上就没有人类啥事儿了。这个观点现在是主流观点,因为这个观点很吓人,尤其是国外有个博客叫wait buy why,这个博客上写了关于人工智能的一篇文章,然后我觉得国内基本上所有的观点都是这篇博客还有《奇点临近》那本书里的。这个是主流的观点,就是人工智能马上超越人类。我个人觉得,不能太乐观啊。因为核能汽车我们没有见过,再过50年也够呛。大统一理论我们也看不到,其实物理领域,已经差不多停滞了五六十年了,还是不要太乐观的好,最被看好弦理论也没啥突破性的发展。最近看新闻说,谷歌公司的无人驾驶汽车项目已经接近取消了,按照谷歌一贯的原则,很多都是宣传的天花乱坠,最后搞的不声不响就砍掉,比如谷歌眼眼镜,还有组装汽车项目,还有通过气球上网项目,还有每一两年出一个聊天软件项目,最近的最震撼的就是谷歌的自动驾驶项目。要知道,谷歌当时宣传的,以及很多媒体跟风的,说这玩意比人开的好,显然,应该是没达到目的。否则,干嘛不量产,而是选择取消项目呢?只留下乐视自动驾驶汽车一路狂奔了…
如果我们有了达到甚至超越人类的人工智能,她们会不会是个有趣的家伙。通过二进制,做出会下棋的软件没什么问题,只是,通过二进制,能不能模拟出含情脉脉的眼神。这件事情,我经常纠结。而且也一直没有答案。
反正,我现在碰到有人自称是搞人工智能和大数据的,我一般认为这个人是个骗子,对这两个行业的人,我狭隘的思想就是对他们做有罪推定。尤其是现在经常会出“中国人工智能创新百人榜”和“中国大数据创新百人榜”,然后上面列出100个牛人,让我想起了武侠小说里的平湖百晓生弄的那个《兵器谱》,非常的不靠谱,兵器谱排名靠前的,都是被排名靠后的给弄死了。
好了,这期到这里,再见。