你应该看过《终结者》,《机械公敌》等电影吧,但你知道为什么机器能像人一样思考吗 ?
人工智能早已不是科学幻想,它们是一种已经应用到我们生活方方面面的技术,例如:许多公司的门禁采用了人脸识别系统;医院里要利用计算机快速诊断肺部 CT 影像;在路上开车违章,会被电子烟抓拍罚款…
这里的人脸识别、CT 影像识别、车牌识别通通用到了人工智能。除此之外,手机上的各种语音助手软件、智能音响、美颜软件、短视频平台的推荐机制、电子邮件的防垃圾邮件系统都是人工智能的应用。
在未来我们要实现的自动驾驶、智慧工业等领域,人工智能是不可或缺的。如果将人工智能从我们的生活中剥离,人类恐怕要退回到三十年以前
今天我们就来聊一聊人工智能的话题,希望能让大家了解人工智能和神经网络的基本工作原理
一、人工智能的发展史
人工智能并不是一个新生的科学概念。在上古时代,东西方文明都出现了人造人的神话,到了二十世纪 30-50 年代,由于神经生物学、计算机科学、数学等学科的发展,人工智能第一次进入了科学家的视野。
1950 年,英国计算机科学家图灵提出了一个问题——机器会思考吗?
图灵提出了一种测试机器智能的标准——
图灵测试
。一个人 C 通过文字等方式,与另外一个人 A 和一个计算机 B 进行交流,他能否通过一连串的问题区分 A 和 B 哪个是人,哪个是计算机呢?如果人类无法区分出 A 和 B,那么就称为计算机通过了图灵测试。
图灵预言,到 2000 年的时候,计算机在经过五分钟的提问之后,就会骗过 30%的人类,让人相信对方是真实地人类,而非计算机。
图灵测试每年都会举办,在 2014 年的时候,终于有一个人工智能软件,被 33%的人类认为是一个 13 岁的小男孩,通过了图灵测试,这个软件叫尤金·古斯特曼。
到了 1956 年,美国计算机科学家马文·明斯基、约翰·麦卡锡以及信息论的奠基者香农等人,召开了“达特茅斯会议“,在这次会议上,人们创造出了“人工智能”这个词。从这次会议开始,人工智能进入了人大发展时代
后来,明斯基和麦卡锡都因为在人工智能领域的贡献,获得了图灵奖,而香农已经不需要图灵奖了,他的名字被命名到通信理论方面的诺贝尔奖——“香农奖”上。
从此之后的几十年中,由于算法和算力的限制,人工智能几经起落,直到 1997 年,IBM 的人工智能程序“深蓝”,战胜了雄踞国际象棋霸主 12 年的卡斯帕罗夫,人工智能迎来了第三次大发展。从这之后的二十多年里,在人工智能算法方面,涌现出许多灵魂人物,例如被誉为"深度学习之父"的多伦多大学的计算机学家——杰弗里·辛顿,他将反向传播算法(BP)引入了人工智能领域;纽约大学计算机学家——杨立昆,他最著名的工夫作是卷积神经网络(CNN),他们俩连同加拿大蒙特利尔大学计算机学家——约书亚·本吉奥共同获得了 2018 年的图灵奖
经过众多科学家的努力,在特定的领域——例如图像识别,人工智能识别率已经超过了人类。在语音识别、智能翻译等领域,人工智能也有长足的应用。现在我们上网,遇到看不懂的外文,只需要按一下“翻译”按钮就能变成汉语了。去国外旅游,也可以双方用一个人工智能软件就能交流了。
二、机器学习
计算机到底是如何做到这一点的呢?说到底,这是一个数学问题,我们先来举一个例子,“如何预测房屋的成交价格?”
如何预测房屋价格
也许我们每个人都有一种简单判断,大城市比小城市的房子值钱,市区的房子比郊区的房子值钱,学区房比非学区房值钱… 那么,你能用数学关系把它表示出来吗?
比如,在最简单的模型下,我们考虑房屋价格与面积有关,我们有了一些房屋的面积以及它们的成交价格,把数据 ( x i , y i )) 画在一张图上。从图形上看,我们发现房价和面积接近于正相关,我们希望获得一个函数关系,使得它尽量准确的表示出房价 y 与面积 x 的关系。
最简单的关系就是直线 y=wx+b,其中 w 是直线的斜率, b 是直线的截距,参数 w 和 b 的值不一样,这条直线就能在平面内改变位置。我们希望每一个数据点都能在直线上,但实际上,这往往是做不到的。通过函数关系预测的房价 yi预 和实际房价 yi 之间总是有差别的,我们用损失函数来描述这个差别
损失函数
把每一个数据点真是的价格 y 与输出的价格 y预 做差,再把这些差别做平方和,如果损失的函数特别小,就说明我们的函数最贴近实际的数据。
但是,房屋的价格并不只取决于面积,我们可能有很多的输入数据,比如说每个房子都有
- 面积参数
- 城市参数
- 房屋年龄
- 位置参数
这四个参数,这个时候,我们就要在一个五维空间中寻找损失函数的最小值。
输入数据、进行计算、调整参数,这个过程就称为“机器学习”或者“训练”,加入最后找到了或者逼近预测的最优解,训练就结束了;如果还没有找到。就需要调整参数和模型。
其实,这和人类的学习过程非常相似,老话说“吃一堑长一智”也是这个问题,只是现在,我们用数学的方法把它表现了出来
三、神经网络
单层神经网络
从本质上讲,人工智能问题就是通过这种一点点调整参数的方法,寻找一个损失函数,能够从输入的值尽量准确的获得输出值。实际的机器学习问题,要比刚才的例子复杂得多。在图像识别问题上,一幅图就有上百万个像素点,就是有上百万个输入参数,为了应对这些复发的问题,科学家设计了“神经网络算法“,你在网上搜索人“人工智能“、“机器学习”、“深度学习”等关键词的时候,很可能会看到下图:
上图是一张神经网络图,其中每一个圆圈叫做一个“神经元“,神经网络的开创来源于人类对生物大脑的认识,人脑中有数百亿个神经元细胞,每个神经元细胞前方有树突用来接收信号,当树突收到刺激时,神经元会判断这个刺激大小,如果刺激足够大,神经元就会决定通过神经递质或者电信号的方法,通过突触将信号传给下一级
1943 年,美国神经科学家沃尔特·皮茨,和沃伦·麦卡洛克分析了人类神经元的结构,他们提出:人脑的神经元是一个多输入,单输出系统,而且输出只有 0 和 1 两种。 如果输出是 0,就表示上一级神经元不向下一级传递信号,如果输出是 1,就表示上一级神经元向下一级传递信号。用计算机可以模拟人的大脑,这就是所谓的“人工神经网络”
通过一些操作,我们可以将一堆输入数字变成 0 或者 1 输出,只要选择的参数合适,我们就能让计算机帮助我们做一些判断题。
比如,我们给计算机一幅图:
这是一个有 25 个像素组成的纯黑白图像,我们要让计算机判断这个图像代表的是不是字母 X。
这幅图的 25 个像素相当于有 25 个输入,每个输入端要么是 0,要么是 1,于是,这张图片对于计算机来讲,就是一个 5 ∗ 5 5*5 5∗5 的数字矩阵
如果是彩色图,每个像素点需要用 RGB 三个颜色的饱和度来表示,数据量再扩大三倍。但无论如何,计算机看来,任何一张图片都只是一组数字,只是数字有多有少而已。
将图片代表的数字输入神经网络的输入层,数据依次流过隐层,传递到输出层,输出值只可能有两种可能:0 或者 1。输出 0 代表计算机认为它不是 X,输出 1 代表计算机认为它是 X,这就完成了机器的识别过程
在训练时,我们把许多幅图片输入系统,并且告诉计算机正确的结论,这样计算机就能求出误差函数,模型越接近实际,误差函数就越小,通过梯度下降算法,计算机一次一次的调整参数不断减小误差函数,获得一组最优解,这样训练就完成了。以后,你给我一副图片,我就能很快地判断出字母是不是 X 了
多层神经网络
如果只是判断一张图是不是 X,也许一层神经元就够了,然而,显示当中我们利用人工智能翻译文章,需要认识几千个文字或者单词,并且理解语法,判断含义,只有一层神经元,没法处理现实世界如此复杂的问题。
其实,人脑中的神经元有很多层,每一层神经元又有许多个神经细胞,于是,人工智能也模仿这个结构,做了多层(深度)神经网络。多层神经网络的隐层是多层神经元,每一层中又有许多个神经元,相邻两层间的神经元两两之间都有连接,所以这种神经网络也称为“全连接网络”,它能处理更加复杂的问题 .
于是,机器就能像人一样,可以思国、思家、思社稷,赏花、赏月、赏秋香了。
不过,全连接网络最大的问题是复杂度太高了。举例来讲,如果还是判断刚才的图像是不是 X,有 25 个输入参数,假设隐层有 3 层,每层 25 个神经元,这样就有大约 2000 个参数需要优化,大家注意,这还只是一个 25 个像素的简单黑白图片。实际上,每一幅图像的像素点成千上万,又有 RGB 三种颜色,在实际训练的时候又需要使用大量的图片进行训练,在以前的计算能力下,几乎是不可能完成的任务,这也是之前人工智能陷入低估的原因之一。
后来,辛顿引入了反向传播算法,这种算法的意思是,在优化时,无需对所有参数进行优化,只需要首先考虑最后一层的参数,优化过后再看前一层参数,如此反复进行训练即可。他的工作让人工智能进入了第三次热潮。
在历史上,发生过几次工业革命,每次工业革命,都是以科学的突破和根技术的发展为基础。现在世界正处在以无线互联网、人工智能、新材料、生物科技等为代表的第四次工业革命当中,在这一次,中国人没有缺席。