深度学习介绍
Published:
- 引言
人工智能是一个很广泛的概念,目前的深度学习是其中一个在某些领域具有良好 应用效果的研究方向,下面我先对人工智能做一个简单的介绍,然后提出一些深 度学习的具体建议。
人工智能、机器学习、深度学习
自从人类发明机器以来,一直梦想着能让机器安装人类的意愿执行我们所 需的任务。电子计算机的发明,进一步激发了人们这个意愿,伴随着计算 机技术的发展,人们发展了各种技术进行人类行为的模仿,期望未来有一 天能实现人类意识的机器复现。诚然这个是一个遥远的愿景,这种研究的 背后其实有着人类内在的哲学根基。自古以来许多先贤圣人都在思索着这 样一个问题,那就是人这所有为人究竟是有何决定。最懒的解释就是人的 特殊性在于神的赋予,这就是各种神话或是宗教的来源。这种解析远不能 满足人类自身的思索,所有先贤发出了著名的富有哲理的呐喊:我是谁、 我从哪里来、我要去哪里。这种呐喊也激发了人们对于自身人性、天赋、 能力等的探索,由此引出了人身平等、自由、自我意识、群体关系、社会 关系等一系列现今文明的根基,现代文明社会的各种制度都是以此为根基 进行不同形式的设置。
在现今文明社会的框架下,有许多不同学科分支的研究人员一直致力于上述各 种问题的深层解构和研究,以电子计算机为基础发展起来的“人工智能”其实 是这种研究的一个极小的研究领域,虽然单从“人工智能”的研究范围看,它 是一个涉及多个学科的研究领域,但是放在整个人类的历史视野中它又是通用 人工智能研究中非常狭小的研究领域。
人工智能的发展一直伴随着电子计算机的发展,早期电子计算机的发明主要是用 于进行密码破译,这是人工密码破译的“机器学习”方法,这个工作在二战时期 获得巨大的进步,这进一步促进了战后人工智能的研究,二战后人工智能的研究 主要基于希腊理性思维的根基,当时人们认为人类智能最主要的特征是逻辑推理, 因此当时的研究认为如果我们能设计一套逻辑推理体系我们可以在一定程度上实 现人工智能,当然现在看来这个想法是相当幼稚的。但是我们需要注意这里面的 研究逻辑,任何研究背后其实都有一个最基础的根基,以此为根基进行研究,第 一代人工智能的研究根基是“希腊哲学中的理性思维”。比较不幸的是目前非常 热门的深度学习还没有什么自成体系的根基,只是人们发现它在不少领域能获得 成功,最明显的例子就是目前非常流行的 Relu 激活函数,人们只是发现它有用, 根本不知道其为何有用,我们改以怎么样的研究逻辑找寻更有效的激活函数,研 究逻辑或是研究根基,就像人自身的信念一样,人活一口气,没有这个根基很多 研究往往没有方向,像空中楼阁,这也是目前学术界对于深度研究的不安,悲观 的人甚至认为如果深度学习是一条死胡同,目前众多的研究资源都投注于此,反 而是非常可怕的事情。不过目前乐观的人还是占多数,他们认为即使深度学习是 死胡同,我们总是可以在胡同的尽头前找到其他出路。
基于理性逻辑的第一代人工智能的主要成就就是,发展了各种大型的专家系统, 这类系统基本有两个大部件构成,一个是专家知识的数据库,目前很多类型的数 据库结构(如关系型数据库)都是那时候研究的产物。另一个部件是利用函数语 言如(lisp 语言)写成的逻辑推理体系,这个体系可以根据输入的条件,进行 推理分析在专家数据库中寻找合适的答案。目前来看这一代的人工智能是失败的, 但是这套推理体系的研究成果,目前任然在许多领域获得运用,比如数学公式推 导体系,比较知名的系统用开源的 Maxima、商业软件 Mathmatica 等等。这些 研究成果还在早期的 Word 文字处理软件中获得运用,用于纠正文字处理中的语 法错误,Word2000以前的版本可能都是基于语法规则系统的纠错,如果有用过这 些版本,往往会发现有些纠错处理是相当可笑的。这类体系还用于早期的语言翻 译,这个工作主要是美国军方的投入,主要用于英语和俄语的翻译,是为冷战时 期服务,其结果是相当糟糕的,这也使得美国军方对于后续人工智能的研究相当 冷淡,因为被很多专家忽悠怕了。另外一个附加的产物是函数型语言,很多语言 里面的 lambda 函数就是从函数型语言引进的。Python 也是较早支持 lambda 语言的脚本型语言。
第一代人工智能在冷落了近十年后,上个世纪80年代随着神经网络的出现又出现 一次研究高潮,这一个研究高潮的理论根基和研究逻辑是基于生物神经学的研究 成果以及简单主义的推崇,简而言之就是人们发现大脑是由简单的神经元连接而 成,各个神经元的工作非常简单,但是它们间复杂的联系实现了人类的意识以及 众多功能,这时期的神经网络研究也称为“连接学派”,其认为只要连接够复杂, 简单的单元也可以实现复杂的功能,这其实也是科学研究历史中的“简单主义” 学说,也就是说系统功能远大于单个个体功能之和(1+1>2)。但是这一流派的 好日子没有过多久,就被人工智能的大佬明斯基(Marvin Minsky)判了死刑。随 即神经网络的研究进入了寒冬期,相关资助纷纷停止,研究论文只要有神经网络 的字眼都很难发表。万幸的是现在常用的反向传播算法是这个寒冬里出现的一个 著名成果,之一成果发表后进十年无人关注,值得十年后被 Hinton 在 Science 上重新提出后才获得广泛关注,这篇文章据称还是 Hinton 跟一个审稿人搞好关 系才发表的。熬过寒冬期而成为目前深度学习三巨头的 Geoffey Hinton、Yann Lecun、Yoshua Bengio 也是在当时一些非主流的研究机构获得资助进行研究。 Yann Lecun 稍微好一些,因为他利用卷积神经网络技术开发了商用的支票手写 数字系统,有一定的影响力,因此有段时间在贝尔实验工作,目前入门常用的, Mnist 数据集就是他完成的 。虽然 Yann Lecun(燕乐纯)在贝尔实验工作,但 是他的研究成果当时也被同实验室开发出来的支持向量机(SVM) 打败了,SVM 有充分的数学理论基础,算法简单合乎逻辑,因此备受推崇,从而也将人工智能 的研究转入这个方向,基于统计理论的机器学习,目前常说的机器学习就是这类 已统计为基础的算法,机器学习也可以成为第二代人工智能。机器学习有许多概 念也被深度学习继承,因此要学习深度学习有必要通读一下机器学习的重要概念, 下面的书单有一些参考书目需要通读。需要理解概率分布、贝叶斯推断等等概念。
第三代人工智能就是目前比较火热的深度学习,它的理论根基目前还没有建立, 因此也是最容易学习的,只需要学习怎样使用深度学习的框架解决一些实际的问 题。这里的关键是学习怎样“使用”。具体而言需要掌握 python 的运用、开源 框架比如 tensorflow 的应用。
前面是一些有关人工智能的简要介绍,了解了人工智能的发展,下面具体谈谈如 何学习深度学习的问题。
- 深度学习书单
** http://neuralnetworksanddeeplearning.com/index.html
中文翻译版 https://github.com/zhanggyb/nndl
这本免费的书深入浅出的介绍了神经网络和深度学习的重要概念,同时书里的例 子都是用 python 写的,因此通过阅读其开源的代码也可以同时学习 python, 是一本必须要研读的入门书籍。
这本书重点解析了几个重要的概念如:神经网络的编程思想、反向传播算法、梯 度下降算法策略、随机梯度下降策略、Overfitting、Active Function、 Regularization等等。
本书引用或介绍的参考文献也是比较经典的开山文献,值得仔细研读。
书里的练习都是针对某个提高策略设计,可以自己尝试完成这些练习,从而提高 神经网络的调试能力。比如可以将 Network3.py 变成tensorflow 实现。
*** 本书的另一个特色是展现了一个神经网络的构建、训练、提高的过程及细节
例如本书详细介绍了超参数的选择策略。参数初始化的问题、训练稳定性,过拟 合等现象的判断和规避策略。是一个详细的逐步教学过程。
第一章作者介绍了神经网络的编程思想,以前的程序编写可以看成是数据结构加 算法,需要将问题细分成各种实现算法,神经网络是通过数据集学习算法,这是 一个不一样的巨大变化,需要理解和体会,深度学习的算法只是涉及优化的算法, 并没有对实际问题进行针对性是算法设计。
第二章涉及深度学习中的数学工具,作者通过必要的数学语言简明扼要的介绍了 反向传播算法的工作细节,学习这一章如果有难度,需要补充相关的数学知识。
第三章介绍了深度学习中的各种技巧如正则化、过拟合、梯度消失等概念这些都 是深度学习调试过程需要解决的问题,作者给出了解决的思路、具体过程。可以 将这些经验用到自己以后的项目中。
第四章可以先略过。
第五章和第三章可以结合来看,也是有个深度学习的具体调试过程。
第六章介绍了卷积神经网络,以及卷积神经网络在 Mnist 中的应用,这部分的 源代码可以将其改写成 tensorflow。如果自己能完成 tensorflow 的实现应该 可以开展其他项目的研究。
*** 其它有关神经网络基础的书 Neural Network Design Hagan Neural Networks and Deep Learning
李航这本统计学习书是必需要通读的书,是国内编写比较好的有个机器学习各种算法介绍 的书,机器学习导论这本也是国际比较权威的教材。周志华的西瓜书也是比较经 典的机器学习书籍。
** 深度学习相关的书
Ian goodfellow 等人写的 deep learning 也是一本比较权威的书,但是作为 入门不是太好,可以作为今后的参考书。
** Tensorflow 入门 这本书对 tensorflow 作为深入浅出的介绍,由于 tensorflow 的文档比较混乱, 直接看文档比较难入门,这本书可以参考,目前还没有较好的 tensorflow 介绍 的书。
** 视频主要参考李宏毅的教程
网上有其教程视频,可以下来自己看,作为第一年级的学生需要都看一遍,看完 后每周例会需要进行汇报。