人工智能深度学习篇一

一些人类通过直觉可以很快解决的问题,目前却很难通过计算机解决。这些问题包括自然语言理解、图像识别、语音识别等。而它们就是人工智能需要解决的问题。

如果一个程序可以在任务T上,随着经验E的增加,效果P也可以随之增加,则称这个程序可以从经验中学习。

自图林提出“机器与智能”,一直有两派观点:一派认为实现人工智能必须用逻辑和符号系统,这一派看问题是自顶向下的;还有一派认为通过仿生人脑可以达到人工智能,这一派是自底向上的,他们认定如果能造一台机器,模拟大脑中的神经网络,这台机器就有智能了。

深度学习是机器学习的一个分支,它除了可以学习特征和任务之间的关联,还能自动从简单特征中提取更加复杂的特征。

深度学习的发展历程

人工智能的底层模型是“神经网络”(neural network)。神经网络的发展史大致经历三个阶段:

早期的神经网络模型类似于仿生机器学习,它试图模仿大脑的学习机理。最早的神经网络数学模型是由沃伦·麦卡洛可(McCulloch)与沃尔特·皮茨(Pitts)于1943年发表的《神经活动中思想内在性的逻辑演算》论文中提出的。在论文中,两位教授模拟人类大脑神经元的结构提出了第一个脑神经元的抽象模型,叫做麦卡洛可-皮茨神经元(McCullock-Pitts neuron)结构,简称MCP。

神经网络研究的后一个大突破是1957年。弗兰克·罗森布拉特(Frank Rosenblatt)在一台IBM-704计算机上模拟实现了一种他发明的叫做”感知机“(Perceptron)的神经网络模型。罗森布拉特1962年出了本书:《神经动力学原理:感知机和大脑机制的理论》(Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms),基于MCP神经元提出了第一个感知器学习算法,同时它还提出了一个自学习算法,此算法可以通过对输入信号和输出信号的学习,自动的获取到权重系数,通过输入信号与权重系数的乘积来判断神经元是否被激活(产生输出信号)。

201712191512131.png

人工智能奠基人之一马文·明斯基认为神经网络不能解决人工智能的问题,他和佩普特1969年发表的巨作《感知机:计算几何学》(Perceptrons: An Introduction to Computational Geometry)。在书中指出:单层神经网络不能解决XOR(异或)问题,多层感知机又不能给出一种学习算法,因此毫无使用价值。而异或是一个基本逻辑问题,如果这个问题都解决不了,那神经网络的计算能力实在有限。由此感知机的失败导致神经网络研究的式微,陷入“二十年大饥荒”。

即使1974年,哈佛的沃波斯(Werbos)发表的博士论文中证明了在神经网络多加一层,并且利用“后向传播”即BP算法学习方法,可以解决XOR问题,也没有引起多少重视,那时神经网络研究已在低谷徘徊,文章不合时宜。

神经网络在1980年代的复兴归功于物理学家霍普菲尔德(Hopfield)。他提出了一种新的神经网络,可以解决一大类模式识别问题,还可以给出一类组合优化问题的近似解。这种神经网络模型后被称为霍普菲尔德网络。1984年,霍普菲尔德用模拟集成电路实现了自己提出的模型。一帮早期神经网络研究的幸存者,在生物学家克里克(Crick,对,就是发明DNA双螺旋的那位诺贝尔奖得主)和认知科学大佬唐·诺曼(Don Norman)的鼓励下,以加州大学圣地亚哥分校为基地,开始了“连接主义”(Connectionism)运动,这个运动的领导者是两位心理学家鲁梅尔哈特(Rumelhart)和麦克利兰德(McLelland),外加一位计算机科学家辛顿(Geoffrey Hinton)。

1985年,Rumelhart等人重新给出了多层感知机权值训练的BP算法,该算法通过实际输出对比理论输出产生的误差(Error),反向微调各层连接权值系数从而优化网络权值,从而解决了明斯基认为不能解决的多层感知机的学习问题。连接主义运动的成果之一就是那本著名的被称为PDP(Parallel and Distributed Processing)的文集(分两卷 )。此书的出版给认知科学和计算机科学吹了股大风,被后起的神经网络新秀们成为圣经,掀起了神经网络的第二次高潮。连接主义运动也培养了一堆新人,并使得加州大学圣地亚哥分校的认知科学系成为同类系科的佼佼者。鲁梅尔哈特后转往斯坦福大学任教,乔丹就是他的学生,而Andrew Ng( 吴恩达)又是乔丹的学生。

神经网络在八十年代的光芒被后来的互联网掩盖了。但进入21世纪后又恰恰是互联网给了神经网络更大的机会。随着计算能力的迅猛提升和大数据的涌现,这几年计算机科学最火的词儿就是“深度学习”,神经网络迎来了第三次高潮。神经网络由一层一层的神经元构成。层数越多,就越深,所谓深度学习就是用很多层神经元构成的神经网络达到机器学习的功能。辛顿就是“深度学习”的始作俑者,他2006年的一篇文章开辟了这个新领域。

2012年,斯坦福大学人工智能实验室主任Andrew Ng(吴恩达)和谷歌合作建造了一个当时最大的神经网络,这是谷歌神秘的X实验室的一个计划。

人工神经网络发展曲线图
img
几个概念之间的关系示意图
img

神经网络的运作

感知机(Perceptron)

感知机如何工作?一个感知机通过一些二进制的输入x1,x2,...x1,x2,...,然后产生一个二进制的输出:

这里写图片描述

在上图中,感知机有三个输入x1,x2,x3x1,x2,x3,通常它可以有更多或者更少的输入。Rosenblatt提出了一个简单的规则来计算输出,它用权重w1,w2...w1,w2...来表示各个输入对输出的重要性。神经元的输出,要么是0要么是1,由权重和​的值是否小于或者大于某一阈值。和权重一样,阈值也是一个实数,它是神经元的一个参数。用代数式表达就是:

这里写图片描述

以上就是感知机的工作原理。

这是基本的数学模型,可以认为感知机就是一种通过权衡各种因素而做出决定的设备。

单层感知机(只有输入层和输出层),对于线性可分,或者近似线性可分的数据集有很好的效果。但异或问题属于线性不可分问题。

多层感知机(MLPs):1991年提出的全局逼近定理为此提供了理论依据,对于一个含有隐藏层的前馈神经网络,如果隐藏层可以由任意多的神经元组成,那么神经网络能够逼近实数范围内的任意连续函数。

这里写图片描述

我们定义的一个感知机都只有一个输出,上图的多层感知机看起来一个感知机有很多个输出,其实它只是把同一个输出传递给不同的下一层感知机用来利用,如果不嫌难看,也可以先画一条输出线,然后再分支。

简化感知机的描述方式,首先我们可以使用向量点积的方式代替​,即​,其中W和X分别是权重值和输入值所组成的向量。其次,我们可以把阈值threshold移到不等式的另一边,即​,其中b被称为感知机的偏差。通过偏差代替阈值,综上,感知机规则改写为:

这里写图片描述

对于分类问题,隐藏层的作用就是把线性不可分的数据,通过线性变换(预激活阶段)和非线性变换(激活阶段)的操作,使得数据变为线性可分。

激活函数

激活函数是神经网络设计的一个核心单元。在神经网络中,把处于在活跃状态的神经元称为激活态,处于非活跃状态的神经元称为抑制态。激活函数赋予了神经元自我学习和适应的能力。

激活函数的作用是为了在神经网络中引入非线性的学习和处理能力。

常用的激活函数(满足1、非线性;2、可微性; 3、单调性)

  1. sigmoid函数

  2. tanh函数

  3. ReLU函数

反向传播(BP算法)和梯度消失

反向传播由前向和后向两个操作构成。

神经网络的架构

这里写图片描述

因为历史的原因,这样的多层网络有时候被称作多层感知机(MLPs),尽管这个网络是有sigmoid组成的而不是感知机。

最左边的一层称为输入层,位于这一层的神经元称为输入神经元。最右边的输出层包含了输出神经元。中间的层被称为隐藏层,因为这些神经元既不是输出也不是输入。神经网络的研究人员已经开发了隐藏层的许多的最优设计规则,这可以帮助人们从他们的网络中的到预期的行为。

到目前为止,我们所讨论的神经网络都是上一层的输出作为下一层的输入。这样的网络被称为前馈神经网络(Feed forward Nerral Networks)。这意味着在网络中没有环状,信息总是往前走的,不会反向。

然而,有些人造神经网络中存在反馈回路是可能的。这样的模型称为递归神经网络。这些模型的思想是让神经元在有限时间里激活,然后保持非激活状态。这种激活可以刺激其他神经元在稍后一段时间激活。

你可能感兴趣的:(人工智能深度学习篇一)