深度学习原理与实践(开源图书)-总目录
深度学习理论的突破和深度学习硬件加速能力的突破,使AI在模式识别、无人驾驶、智力游戏领域取得空前的成功。学术界和工业界全力以赴掀起人工智能的新一轮热潮。各大互联网巨头纷纷成立人工智能研究中心,唯恐在新一轮人工智能的竞赛被无情淘汰。
如今,机器学习的应用已遍及人工智能的各个分支,如专家系统、自动推理、自然语言理解、模式识别、计算机视觉、智能机器人等领域。但也许我们不曾想到的事机器学习乃至人工智能的起源,是对人本身的意识、自
我、心灵等哲学问题的探索。而在发展的过程中,更是融合了统计学、神经科学、信息论、控制论、计算复杂性理论等学科的知识。
人工智能是机器学习的一个子集。人类的智能是自然界的杰作,但我们对自身智能的理解都非常有限,对构成人的智能的必要元素也了解有限。无数的神级人物利用自己的智慧推动着人工智能的发展,让我们了解一下那一段荡气回肠的历史。
1949年Hebb提出神经心理学学习范式——Hebbian学习理论。Hebbian学习理论后来演化为Hebb学习规则。Hebb学习规则是一个无监督学习规则,这种学习的结果是使网络能够提取训练集的统计特性,从而把输入信息按照它们的相似性程度划分为若干类。这一点与人类观察和认识世界的过程非常吻合,人类观察和认识世界在相当程度上就是在根据事物的统计特征进行分类。该理论就开始研究递归神经网络的节点之间的相关度,它记录下网络上的共性然后像记忆一样工作,正式的表达是这样:假设反射活动的持久性或重复性可以诱导细胞发生变化,以适应这种活动;当神经元细胞A距离神经元细胞B足够近时,它就可以持续重复的激活B,那么这两个细胞之一或者全部就会发生一些代谢过程或生长变化来提高效率。Hebb学习规则与“条件反射”机理一致,并且已经得到了神经细胞学说的证实。。
1950年,阿兰·图灵发表了一篇划时代的论文,文中预言了创造出具有真正智能的机器的可能性。阿兰·图灵创造了图灵测试来判定计算机是否智能。图灵测试认为,如果一台机器能够与人类展开对话(通过电传设备)而不能被辨别出其机器身份,那么称这台机器具有智能。这一简化使得图灵能够令人信服地说明“思考的机器”是可能的。论文中还回答了对这一假说的各种常见质疑。图灵测试是人工智能哲学方面第一个严肃的提案。
2014年6月8日,一台计算机(计算机尤金·古斯特曼是一个聊天机器人,一个电脑程序)成功让人类相信它是一个13岁的男孩,成为有史以来首台通过图灵测试的计算机。这被认为是人工智能发展的一个里程碑事件。
1952,IBM科学家Arthur.Samuel设计开发出西洋棋程序。该程序能够通过观察当前位置,并学习一个隐含的模型,从而为后续动作提供更好的指导。Samuel发现,伴随着该游戏程序运行时间的增加,其可以实现越来越好的后续指导。通过这个程序,Samuel驳倒了普罗维登斯提出的机器无法超越人类,像人类一样写代码和学习的模式。他创造了“机器学习”,并将它定义为“可以提供计算机能力而无需显式编程的研究领域”。
1957年,Rosenblatt基于神经感知科学背景提出了感知机(Perceptron)算法,该算法模拟人脑的运作方式。后来Widrow发明Delta学习规则,也成为最小二乘法。感知器和Delta学习规则的双剑合璧构造了极好的线性分类器。感知器算法的作用是,在不用深入理解只对一些特定生物有机体有效的未知条件的前提下,说明了通用智能系统一些基础特点。
感知器的热度在1969被Minskey一盆冷水泼灭了。他提出了著名的XOR问题,论证了感知器在类似XOR问题的线性不可分数据的无力,形成了当时看来几乎不可逾越的鸿沟。
多层感知器和BP算法的出现,促成了第二次神经网络大发展,1985-1986年NN研究者们成功的实现了实用的BP算法来训练MLP,成功解开“明斯基封印”。
1969年,最近邻算法(The Nearest Neighbor Algorithm)出现,由此计算机可以进行简单的模式识别。kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
kNN的优点在于易于理解和实现,无需估计参数,无需训练,适合对稀有事件进行分类,特别适合于多分类问题(multi-model,对象具有多个类别标签), 甚至比SVM 的表现要好。
Han等人于 2002 年尝试利用贪心法,针对文件分类实做可调整权重的k最近邻居法 WAkNN (weighted adjusted k nearest neighbor),以促进分类效果;而Li等人于2004年提出由于不同分类的文件本身有数量上有差异,因此也应该依照训练集合中各种分类的文件数量,选取不同数目的最近邻居,来参与分类。
1969 年马文·明斯基将感知器兴奋推到最高顶峰。他提出了著名的 XOR 问题和感知器数据线性不可分的情形。
明斯基还把人工智能技术和机器人技术结合起来,开发出了世界上最早的能够模拟人活动的机器人 Robot C,使机器人技术跃上了一个新台阶。明斯基的另一个大举措是创建了著名的“思维机公司”(Thinking Machines,Inc.),开发具有智能的计算机。
此后,神经网络的研究将处于休眠状态,直到上世纪80年代。尽管BP神经的想法由林纳因马在1970 年提出,并将其称为“自动分化反向模式”,但是并未引起足够的关注。
从60年代中到70年代末,机器学习的发展步伐几乎处于停滞状态。虽然这个时期温斯顿(Winston)的结构学习系统和海斯·罗思(Hayes. Roth)等的基于逻辑的归纳学习系统取得较大的进展,但只能学习单一概念,而且未能投入实际应用。此外,神经网络学习机因理论缺陷未能达到预期效果而转入低潮。
这个时期的研究目标是模拟人类的概念学习过程,并采用逻辑结构或图结构作为机器内部描述。机器能够采用符号来描述概念(符号概念获取),并提出关于学习概念的各种假设。
事实上,这个时期整个AI领域都遭遇了瓶颈。当时的计算机有限的内存和处理速度不足以解决任何实际的AI问题。要求程序对这个世界具有儿童水平的认识,研究者们很快发现这个要求太高了:1970 年没人能够做出如此巨大的数据库,也没人知道一个程序怎样才能学到如此丰富的信息。
从70年代末开始,人们从学习单个概念扩展到学习多个概念,探索不同的学习策略和各种学习方法。这个时期,机器学习在大量的时间应用中回到人们的视线,又慢慢复苏。
1980年,在美国的卡内基梅隆大学(CMU)召开了第一届机器学习国际研讨会,标志着机器学习研究已在全世界兴起。此后,机器归纳学习进入应用。
经过一些挫折后,多层感知器(MLP)由伟博斯在 1981 年的神经网络反向传播(BP)算法中具体提出。当然BP仍然是今天神经网络架构的关键因素。有了这些新思想,神经网络的研究又加快了。
1985 -1986 神经网络研究人员(鲁梅尔哈特,辛顿,威廉姆斯-赫,尼尔森)先后提出了MLP与BP 训练相结合的理念。
花开并蒂,各表一枝。1986年被J. R. Quinlan(昆兰)提出一个非常著名决策树算法即ID3算法。这是机器学习的又一个里程碑,与黑盒神经网络模型截然不同,ID3以其简单的规则和明确的推理,解决了很多现实世界的问题。ID3之后,很多其他的算法或改进如雨后春笋般的出现,例如ID4,回归树,CART等等)。直到现在,决策树仍然是ML界中的热点。
决策决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。
1990年,Schapire最先构造出一种多项式级的算法,对该问题做了肯定的证明这就是最初的Boosting算法。一年后 ,Freund提出了一种效率更高的Boosting算法。但是,这两种算法存在共同的实践上的缺陷 ,那就是都要求事先知道弱学习算法学习正确的下限。
1995年, Freund和Schapire改进了Boosting算法 ,提出了 AdaBoost(Adaptive Boosting)算法,该算法效率和Freund于1991年提出的Boosting算法几乎相同 , 但不需要任何关于弱学习器的先验知识 ,因而更容易应用到实际问题当中。
Boosting方法是一种用来提高弱分类算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数。他是一种框架算法,主要是通过对样本集的操作获得样本子集,然后用弱分类算法在样本子集上训练生成一系列的基分类器。
同年,机器学习领域中一个最重要的突破,支持向量(support vector Machines,SVM),由瓦普尼克和科尔特斯在大量理论和实证的条件下年提出。从此将机器学习社区分为神经网络社区和支持向量机社区。然而两个社区之间的竞争并不那么容易,神经网络要落后 SVM 核化后的版本将近2000s 。
支持向量机在以前许多神经网络模型不能解决的任务中取得了良好的效果。此外,支持向量机能够利用所有的先验知识做凸优化选择,产生准确的理论和核模型。因此,它可以对不同的学科产生大的推动,产生非常高效的理论和实践改善。
支撑向量机 , Boosting,最大熵方法(比如 logistic regression, LR)等。这些模型的结构基本上可以看成带有一层隐层节点(如 SVM, Boosting),或没有隐层节点(如LR)。这些模型在无论是理论分析还是应用都获得了巨大的成功。
另一个集成决策树模型由布雷曼博士在2001年提出,它是由一个随机子集的实例组成,并且每个节点都是从一系列随机子集中选择。由于它的这个性质,被称为随机森林(RF),随机森林也在理论和经验上证明了对过拟合的抵抗性。
甚至连 AdaBoost算法在数据过拟合和离群实例中都表现出了弱点,而随机森林是针对这些警告更稳健的模型。随机森林在许多不同的任务,像 DataCastle、Kaggle 等比赛等都表现出了成功的一面。
在机器学习发展分为两个部分,浅层学习(Shallow Learn)和深度学习(Deep Learn)。浅层学习起源上世纪 20 年代人工神经网络的反向传播算法(Back-
propagation)的发明,使得基于统计的机器学习算法大行其道,虽然这时候的人工神经网络算法也被称为多层感知机(Multiple Layer Perceptron),但由于多层网络训练困难,通常都是只有一层隐含层的浅层模型。
神经网络研究领域领军者 Hinton 在2006年提出了神经网络 Deep Learing 算法,使神经网络的能力大大提高,向支持向量机发出挑战。
2006年,机器学习领域的泰斗 Hinton 和他的学生 Salakhutdinov 在顶尖学术刊物《Scince》上发表
了一篇文章,开启了深度学习在学术界和工业界的浪潮。
这篇文章有两个主要的讯息:
1)很多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻划,从而有利于可视化或分类;
2)深度神经网络在训练上的难度,可以通过“逐层初始化”( Layer-wise pretraining)来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。
Hinton 的学生 Yan LeCun 的 LeNets深度学习网络可以被广泛应用在全球的ATM机和银行之中。同时,Yan LeCun和吴恩达等认为卷积神经网络允许人工神经网络能够快速训练,因为其所占用的内存非常小,无须在图像上的每一个位置上都单独存储滤镜,因此非常适合构建可扩展的深度网络,卷积神经网络因此非常适合识别模型。
2015 年,为纪念人工智能概念提出 60 周年,LeCun、Bengio 和 Hinton 推出了深度学习的联合综述。
深度学习可以让那些拥有多个处理层的计算模型来学习具有多层次抽象的数据的表示。这些方法在许多方面都带来了显著的改善,包括最先进的语音识别、视觉对象识别、对象检测和许多其它领域,例如药物发现和基因组学等。深度学习能够发现大数据中的复杂结构。它是利用BP算法来完成这个发现过程的。BP算法能够指导机器如何从前一层获取误差而改变本层的内部参数,这些内部参数可以用于计算表示。深度卷积网络在处理图像、视频、语音和音频方面带来了突破,而递归网络在处理序列数据,比如文本和语音方面表现出了闪亮的一面。
当前统计学习领域最热门方法主要有 deep learning 和 SVM(support vector machine),它们是统计学习的代表方法。可以认为神经网络与支持向量机都源自于感知机。
神经网络与支持向量机一直处于“竞争”关系。SVM 应用核函数的展开定理,无需知道非线性映射的显式表达式;由于是在高维特征空间中建立线性学习机,所以与线性模型相比,不但几乎不增加计算的复杂性,而且在某种程度上避免了
“维数灾难”。而早先的神经网络算法比较容易过训练,大量的经验参数需要设置;训练速度比较慢,在层次比较少(小于等于3)的情况下效果并不比其它方法更优。
神经网络模型貌似能够实现更加艰难的任务,如目标识别、语音识别、自然语言处理等。但是,应该注意的是,这绝对不意味着其他机器学习方法的终结。尽管深度学习的成功案例迅速增长,但是对这些模型的训练成本是相当高的,调整外
部参数也是很麻烦。同时,SVM的简单性促使其仍然最为广泛使用的机器学习方式。
人工智能机器学习是诞生于20世纪中叶的一门年轻的学科,它对人类的生产、生活方式产生了重大的影响,也引发了激烈的哲学争论。但总的来说,机器学习的发展与其他一般事物的发展并无太大区别,同样可以用哲学的发展的眼光来看待。
机器学习的发展并不是一帆风顺的,也经历了螺旋式上升的过程,成就与坎坷并存。其中大量的研究学者的成果才有了今天人工智能的空前繁荣,是量变到质变的过程,也是内因和外因的共同结果。
踌躇满志和披荆斩棘的是集大成者的共同特征。Hinton、Bengio、LeCun都是深度学习领域的先行者。蒙特利尔AI人才集中度高于世界上任何其他地方,这有Bengio不小的功劳。微软、谷歌和facebook相继在蒙特利尔建立人工智能实验室,更是证实了蒙特利尔AI人才充足的事实。谷歌招徕了Hinton、Facebook引入了LeCun、微软今年终于邀请Bengio过来做战略顾问,这三大AI巨头的行为不也从侧面证实Hinton、LeCun和Bengio三人在深度学习领域的顶尖地位。人工智能提出60周年,《Nature》杂志发布了Yann LeCun、Yoshua Bengio和Geoffrey Hinton首次合作的这篇综述文章“Deep Learning”
Hinton本科阶段在剑桥学习心理学,他意识到科学家们并没有真正理解大脑——不能完全掌握数十亿神经元之间的交互以及如何提升智力。这些科学家可以解释电信号沿着一个轴突连接一个神经元到另一个,但他们无法解释这些神经元是如何学习或计算的。Hinton认为这些都是大问题,答案可能最终让我们实现1950年代人工智能研究人员的梦想。
他也没有答案,但他将尽全力寻找答案,至少改进的人工神经网络可以模拟人脑的某些方面。“我非常兴奋,我们发现一种可以使神经网络变得更好的方法,尤其是这种方法能够揭示大脑是如何工作的时候,” Hinton 说,洋溢着青春的热情。这些人工神经网络可以收集信息,并且能够做出反应,它们可以理解东西看起来什么样或听起来像什么。当你将单词组合起来,它们在做决定的时候会变得更聪明,而在完成这些过程中不需要人类提供物体或对象的标签,这是传统的的机器学习工具做不到的。随着人工智能的发展,这些神经网络将更加快速、灵活、高效,它们随着机器规模的增加而变得更加聪明,随着时间的推移将能够解决越来越多的复杂任务。
早在80年代初,当Hinton和同事开始这个想法时,那时的电脑性能还远远不能处理神经网络需要的巨大数据集,成功是有限的,随后人工智能社区背弃了他们,转而去寻找类人脑的捷径,而不是尝试模仿大脑的运作。但仍然有一些研究人员坚定地支持Hinton的工作。根据Hinton和LeCun回忆,这极为艰难,甚至直到2004年——已经是Hinton和LeCun第一次开发“反向传播”算法神经网络20年之后了——学术界对这些毫无兴趣。但是那一年,从加拿大先进项目研究所(CIFAR)拿到的极少量资金,并在LeCun以及Bengio的支持下,Hinton建立了神经计算和自适应感知项目,这个项目只邀请一些计算机科学家、生物学家、电气工程师、神经科学家、物理学家和心理学家。通过招聘这些研究人员,Hinton旨在创建一个世界级的团队,致力于创建模拟生物智能的模拟——模拟大脑如何筛选大量的视觉、听觉以及书面线索来理解和应对它的环境。Hinton认为建立这样一个组织会刺激人工智能领域的创新,甚至改变世界,事实证明,他是对的。
2010之后Hinton等深度学习大神彻底改变了深度学习社区的面貌,使深度学习成了机器学习的主流,并且是炙手可热的核心技术。Hinton非常热心深度学习技术的全球推广,Hinton有一个习惯就是喜欢突然大喊:“我现在理解大脑是如何工作的了!”。Hinton开办了一家暑期学校,致力于培养新一代的人工智能研究人员。有这么多的商业公司进入这一领域,这是比以往任何时候都更加重要。
Yann LeCun是法国科学家,在人工智能社区是神一样的人物,他是纽约大学终身教授,还是纽约大学数据科学中心的创始人,以及Facebook人工智能研究部门(FAIR)负责人。LeCun非常具有富有亲和力。Yann LeCun在上世纪80年代读博期间提出“人工神经网络”,但后来该理论一度被认为过时,他本人甚至被拒绝参加学术会议,直到他在2013年加入Facebook,他的理论才慢慢开始变得热门。而他领导的FAIR不是你想象中的典型Facebook团队。该团队队员不直接研究那些非常受欢迎的Facebook产品:Instagram、WhatsApp、Messenger和Facebook本身。FAIR团队专注于一个目标:创造跟人类具有同等智商的计算机。不断提高计算机视、听和独立进行沟通的能力,并逐渐渗透到Facebook的各个产品中。对于有意将人工智能研究应用于图像识别的科研人员来说,Facebook是一个理想的研究环境。Facebook平台上有数十亿张图像,这给LeCun及其团队提供了用于践行新想法的丰富资源。FAIR推出的计算机视觉工具SharpMark就是个不错的例证。
然而要让计算机具备跟人类同等智商,其基础就是要让计算机学会观察,这是让它们理解这个世界的运作方式的第一步。所以训练机器如何学习是LeCun的团队最重要的工作。过去很长一段时间,他们给机器“喂”了成千上万张图片,来教会机器区分诸如“汽车”和“小狗”。不过LeCun在这个过程中也抛出了新的问题:当有大量可用样本(比如桌椅、猫狗和人)时,训练机器没有问题;但如果机器从来没有见过这些实物,它还能识别出样本吗?LeCun表示,人工智能发展的一大难题就是怎么样才能让机器掌握人类常识,这是让机器和人类自然互动的关键。想要做到这一点,它需要拥有一个内在模型,以具备预测的能力。LeCun用一个公式简洁地概括了这种人工智能系统:预测+规划=推理。
Hinton的算法激活了深度神经网络,让深度神经网络在机器学习社区野蛮生长; Lecun改良了CNN,使CNN衍生出LSTM、RNN、autoencoder等众多深度神经网络算法。 Hinton是深度学习领域的哲学家,为深度学习社区提出了大方向。
Bengio是深度学习领域的架构师,为深度学习社区设计了很多规范,框架和工具。