人工智能核心:神经网络(青少科普版)
上QQ阅读APP看书,第一时间看更新

1.1 没有人工智能的计算机——只认识0和1

小时候,我们可能都干过这样一件当时觉得很奇妙的事情。黄昏时分,当我们好奇地按下灯的开关时,哇,一盏灯就在屋里亮起来了!然后我们尝试着再次按下开关,咦,灯怎么又灭了?通常,我们会在一段时间内陶醉在这么一个简单而有趣的游戏里,直到我们明白,灯的开关就是控制灯的“灭”与“亮”两种状态的关键。那么,现在如果我告诉你,开关控制灯的“灭”与“亮”两个状态的现象,跟世间万物在计算机中的表达方式的原理是一样的,你相信吗?

小明:太不可思议了,一盏灯的“灭”与“亮”怎么可能描绘出我们看到的世间万物构成的画面呢?

老师:你提出的这个问题非常好,一盏灯的“灭”与“亮”是不足以描绘这个美丽的世界的。然而,如果不是一盏灯,而是很多很多盏灯一起呢?我们可能在现实生活中或者网上看到过类似图1-1这样的画面。一栋大楼有很多窗户,有的窗户亮起了灯光,有的没有。如果有一个神奇的“总开关”,能控制每盏灯的灭和亮,我们是不是就可以用这些灯的“灭”与“亮”组合出各种各样的图案呢?这栋大楼就好比咱们用的计算机,那些窗户就是我们看到的计算机屏幕。通过窗户后面的灯的灭和亮,我们就能在这个“屏幕”上看到各种各样的图像。

图1-1 大楼里灯的亮灭构成的图案

小明:难道我用的计算机、手机、iPad里,也有这么多灯吗?这可放不下啊!

老师:哈,你说得太对了,计算机里是没办法放下这么多灯的。因此,计算机不是用灯的“灭”与“亮”来表达世间万物的,而是用计算机最擅长处理的两个数字“0”和“1”来描述所有事物的。我们可以类比,灯的“灭”就是计算机里的数字“0”,灯的“亮”就是计算机里的数字“1”。通过“0”和“1”的组合,计算机就可以像图1-2这样描绘出类似图1-1这样的图画了。

图1-2 “0”和“1”构成的图案

小明:那我理解了,灯的“灭”和“亮”就是计算机里的“0”和“1”,大楼的窗户就是计算机的屏幕。可是,控制这些灯的“总开关”是什么呢?

老师:这又是一个很好的问题!我们一起来想想,计算机为什么叫“计算”机呢?对了,这个“计算”能力,就是控制灯的“总开关”。计算机的主要功能就是对原始的“0”和“1”进行计算,进而得到能在屏幕上展示世间万物的“0”和“1”的组合。因为这个计算过程只有“0”和“1”两个数字参与,所以计算机里的计算方法就叫二进制

小明:二进制?这个名字听着好耳熟啊!这跟我们以前学的十进制有关系吗?

老师:没错没错,二进制与十进制是有点像的。我们先来回顾一下十进制的基本原理。使用0~9构成的数字进行表达和计算的方法就叫十进制。比如,十进制数99就是由两个十进制位组成的,十位上的数字“9”代表了9个十,个位上的数字“9”代表了9个一。在进行计算时,按照“逢十进一”的进位规则,一旦某一位上的数字相加之和大于9,就需要往前进一位。比如,9+1=10,就是个位上的数字相加之和大于9了,则要在十位加一,得到10。

小明:十进制,我们当然都知道啦,那二进制和十进制有什么区别呢?

老师:很简单啦,十进制下的每一位上的数字可以是0~9,而二进制下的每一位上的数字就只能是0或1。在进行计算时,类比十进制的进位规则“逢十进一”,二进制的进位规则就是“逢二进一”。

小明:还是有点儿晕,您能举一个例子吗?

老师:好的,下面咱们就来看具体的例子。比如,十进制数1,在二进制是什么呢?对了,还是1,也可以写成“01”。那么十进制数2呢?在二进制下就不能是2了,因为每一位上的数字只能是0或1。因为第一位(注意,这里我们不叫“个位”了)超过1了,所以十进制数对应的二进制表示就是“10”了。十进制数3呢?对应的二进制表示就是“11”。我们再来看看二进制下的计算。比如,十进制的计算1+2=3,在二进制下就是01+10=11;十进制计算1+3=4,在二进制下就是01+11=100。

小明:好的,我现在基本明白二进制了。可是,这个二进制计算看起来比十进制计算麻烦好多啊,为什么计算机不用我们都熟悉的十进制进行计算,而非要用这么麻烦的二进制进行计算呢?

老师:是的,二进制看起来确实比十进制要麻烦。之所以计算机内部一定要用二进制计算,是因为计算机比我们人类“笨”啊!这听起来有点儿不可思议吧,计算机居然比人类要笨?!事实确实如此。我们人类的大脑在进行十进制计算时,可以使用0~9这十个数字,是因为我们人类的大脑里有十种不同的状态或者符号来进行对应表示。如果计算机内部也采用十进制来计数的话,我们就需要找到一种元件,这种元件须具有十种互不相同的状态。很遗憾的是,目前世界上还没有这样一种电子元件能用于计算机。计算机使用的计算器件叫晶体管[见图1-3(a)],它只有电流的“通”和“断”两种状态。计算机使用的存储器件叫硬盘[见图1-3(b)],它只有“磁化”和“非磁化”两种状态。你看,计算机就是这么笨笨的,所以只能用二进制啦。

图1-3 晶体管和硬盘

小明:在前面您有一个提示,说二进制的第二位不叫“十位”了,那么二进制的每一位分别叫什么呢?

老师:在二进制中,每一数字的位置叫作位(又称“比特”,由英文bit音译而来),其单位符号为b。位是计算机的最小计算和存储单位。一个二进制位,其值可以为0或1。比如,二进制1就是1位,10就是2位。那么现在来考考你,一个二进制数101010有多少位呢?对了,有多少个二进制数位就有多少位,答案是6位。

小明:上面这个一长串的二进制数101010看着有点儿晕啊,它对应的十进制数是多少啊?我好像还不知道怎么把二进制数变成十进制数呢。

老师:好,下面我们来看看怎么把二进制数变成十进制数。对于二进制数而言,从右到左(又可以称为由低到高),每个位对应一个数字,我们称这个数字为基值。例如,第1位对应的基值为1,第2位对应的基值为2,第3位对应的基值为4,第4位对应的基值为8,以此类推。也就是,从1开始,每往左一位,对应的基值是上一位对应的基值乘以2。二进制数变成十进制数,就是将每位的数字与基值相乘,然后将所有相乘的结果加在一起。下面我们看一下表1-1中的几个例子。

表1-1 二进制数转换为十进制数

小明:看起来二进制中的1就好像十进制中的9一样,1越多,二进制数就越大,对吧?

老师:是的,当二进制数的位数确定时,我们就能计算出其能表达的最大二进制数了。下面我们来看一下表1-2(具体过程,你可以试试自己计算哦)。

表1-2 二进制位数与最大二进制数

小明:二进制数到十进制数的转换,我现在学会了,可是一个位一个位地数,好像有点儿太慢了,有没有更快的计位方法呢?

老师:一个二进制位只能表示0和1这两个非常小的数,八个二进制位能表示0~255范围内的数。当需要处理更大的数据(比如大于255的数字)时,我们需要引入一个新的单位:字节。在现代计算机应用中,我们一般将8个连续存储的二进制位称为1字节(英文为byte,简写为B)。为什么1字节是8位呢?这是因为早期的计算机处理连续存储的8位数据比较便捷,所以约定1字节等于8位,沿用至今。

小明:我现在知道二进制数的表达方式了,那么计算机是怎么对二进制数进行相加计算的呢?

老师:跟十进制类似,二进制加法就是两个二进制数的每一位自右向左对应位的数字相加,逢二进一。例如,10+11=101,1100+0010=1110。

【1.1习题】

1.已知二进制数101011,求其对应的十进制数。

2.表示十进制数8需要几个二进制位?试着写出其对应的二进制数。

3.计算二进制加法101+011,并写出其结果对应的十进制数。