1.人工智能从何而来
现代人工制能是由图灵理论在冯诺依曼计算机结构上发展而来的。
致敬这两位位帅哥。
艾伦·麦席森·图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),英国数学家、逻辑学家,被称为计算机之父,人工智能之父。[1]
冯·诺依曼[1] (John von Neumann,1903~1957),20世纪最重要的数学家之一,在现代计算机、博弈论、核武器和生化武器等诸多领域内有杰出建树的最伟大的科学全才之一,被后人称为“计算机之父”和“博弈论之父”。[2] 原籍匈牙利。布达佩斯大学数学博士。先后执教于柏林大学和汉堡大学。1930年前往美国,后入美国籍。历任普林斯顿大学、普林斯顿高级研究所教授,美国原子能委员会会员。美国全国科学院院士。早期以算子理论、共振论、量子理论、集合论等方面的研究闻名,开创了冯·诺依曼代数。第二次世界大战期间为第一颗原子弹的研制作出了贡献。为研制电子数字计算机提供了基础性的方案。1944年与摩根斯特恩(Oskar Morgenstern)合著《博弈论与经济行为》,是博弈论学科的奠基性著作。晚年,研究自动机理论,著有对人脑和计算机系统进行精确分析的著作《计算机与人脑》。
图灵这哥们提出了一个衡量机器是否具有智能的实验。把一台计算机和一个人分别关在一个房间,由主持人提出问题,计算机和人同时将自己的答案输出到某种显示器上,如果主持人无法判断出回答问题的是计算机还是人,就说这个计算机具有智能。
2.机器学习
机器学习是人工智能的主要命脉。
类似于人们通过对蜻蜓的研究发明了直升机一样,人们也同通过对人的神经网络的运行机理的研究建立了人工神经网络模型,用来模拟人脑的信息处理方式。
2.1神经元
人的神经元
按照此,心理学家McCulloch和数学家Pitts参考了生物神经元的结构,发表了抽象的神经元模型MP。
MP模型
这个就是神经网络的最基本单元,神经元。
神经元模型是一个包含输入,输出与计算功能的模型。输入可以类比为神经元的树突,而输出可以类比为神经元的轴突,计算则可以类比为细胞核。
下图是一个典型的神经元模型:包含有3个输入,1个输出,以及2个计算功能。
连接是神经元中最重要的东西。每一个连接上都有一个权重。
一个神经网络的训练算法就是让权重的值调整到最佳,以使得整个网络的预测效果最好。
我们使用a来表示输入,用w来表示权值。一个表示连接的有向箭头可以这样理解:在初端,传递的信号大小仍然是a,端中间有加权参数w,经过这个加权后的信号会变成a*w,因此在连接的末端,信号的大小就变成了a*w。
可见z是在输入和权值的线性加权和叠加了一个 函数g 的值。在MP模型里,函数g是sgn函数,也就是取符号函数。这个函数当输入大于0时,输出1,否则输出0。
2.2单层神经元计算科学家Rosenblatt提出了由两层神经元组成的神经网络。他给它起了一个名字-- “感知器” (Perceptron)由于神经网络的层数是按照计算层的个数来计算的,所以称其为单层神经元。
在“感知器”中 ,有两个层次。分别是输入层和输出层。 输入层里的“输入单元”只负责传输数据, 不做计算。 输出层里的“输出单元”则需要对前面一层的输入进行计算。
下图显示了带有两个输出单元的单层神经网络,其中输出单元z 的计算公式如下图具有两个输出的单层神经网络模型
2.3两层神经网络
两层神经网络除了包含一个输入层,一个输出层以外,还增加了一个中间层。此时,中间层和输出层都是计算层。我们扩展上节的单层神经网络,在右边新加一个层次(只含有一个节点)。
计算最终输出z的方式是利用了中间层的a1 (2) ,a 2 (2) 和第二个权值矩阵计算得到的,如下图。
Rumelhar和 Hinton 等人提出了反向传播( Backpropagation , BP )算法,解决了两层神经网络所需要的复杂计算量问题。
在神经网络模型中,由于结构复杂,每次计算梯度的代价很大。因此还需要使用反向传播算法。反向传播算法(由前向传播的输出矫正权值)是利用了神经网络的结构进行的计算。不一次计算所有参数的梯度,而是从后往前。首先计算输出层的梯度,然后是第二个参数矩阵的梯度,接着是中间层的梯度,再然后是第一个参数矩阵的梯度,最后是输入层的梯度。计算结束以后,所要的两个参数矩阵的梯度就都有了。
反向传播算法可以直观的理解为下图。梯度的计算从后往前,一层层反向传播。前缀E代表着相对导数的意思。
我们延续两层神经网络的方式来设计一个多层神经网络。
在两层神经网络的输出层后面,继续添加层次。原来的输出层变成中间层,新加的层次成为新的输出层。所以可以得到下图。
多层神经网络中,输出也是按照一层一层的方式来计算。从最外面的层开始,算出所有单元的值以后,再继续计算更深一层。只有当前层所有单元的值都计算完毕以后,才会算下一层。有点像计算向前不断推进的感觉。所以这个过程叫做“正向传播”。
增加更多的层次有什么好处?更深入的表示特征,以及更强的函数模拟能力。
更深入的表示特征可以这样理解,随着网络的层数增加,每一层对于前一层次的抽象表示更深入。在神经网络中,每一层神经元学习到的是前一层神经元值的更抽象的表示。例如第一个隐藏层学习到的是“边缘”的特征,第二个隐藏层学习到的是由“边缘”组成的“形状”的特征,第三个隐藏层学习到的是由“形状”组成的“图案”的特征,最后的隐藏层学习到的是由“图案”组成的“目标”的特征。通过抽取更抽象的特征来对事物进行区分,从而获得更好的区分与分类能力。
2.5卷神经网络