一html
2016 年一月底,人工智能的研究领域,发生了两件大事。react
先是一月二十四号,MIT 的教授,人工智能研究的先驱者,Marvin Minsky 去世,享年89 岁。git
三天以后,谷歌在天然杂志上正式公开发表论文,宣布其以深度学习技术为基础的电脑程序 AlphaGo, 在 2015年 十月,连续五局击败欧洲冠军、职业二段樊辉。 算法
这是第一次机器击败职业围棋选手。距离 97年IBM 电脑击败国际象棋世界冠军,一晃近二十年了。数据库
极具讽刺意义的是,Minsky 教授,一直不看好深度学习的概念。他曾在 1969年 出版了 Perceptron (感知器) 一书,指出了神经网络技术 (就是深度学习的前身) 的局限性。这本书直接致使了神经网络研究的将近二十年的长期低潮。编程
神经网络研究的历史,是怎样的?网络
深度学习有多深?学了究竟有几分?架构
二分布式
人工智能研究的方向之一,是以所谓 "专家系统" 为表明的,用大量 "若是-就" (If - Then) 规则定义的,自上而下的思路。函数
人工神经网络 ( Artifical Neural Network),标志着另一种自下而上的思路。
神经网络没有一个严格的正式定义。它的基本特色,是试图模仿大脑的神经元之间传递,处理信息的模式。
一个计算模型,要划分为神经网络,一般须要大量彼此链接的节点 (也称 '神经元'),而且具有两个特性:
在此基础上,神经网络的计算模型,依靠大量的数据来训练,还须要:
用小明、小红和隔壁老王们均可以听懂的语言来解释,神经网络算法的核心就是:计算、链接、评估、纠错、疯狂培训。
随着神经网络研究的不断变迁,其计算特色和传统的生物神经元的链接模型渐渐脱钩。
可是它保留的精髓是:非线性、分布式、并行计算、自适应、自组织。
三
神经网络做为一个计算模型的理论,1943年 最初由科学家 Warren McCulloch 和 Walter Pitts 提出。
康内尔大学教授 Frank Rosenblatt 1957年 提出的"感知器" (Perceptron),是第一个用算法来精肯定义神经网络,第一个具备自组织自学习能力的数学模型,是往后许多新的神经网络模型的始祖。
Rosenblatt 乐观地预测,感知器最终能够 “学习、作决定、翻译语言”。感知器的技术,六十年代一度走红,美国海军曾出资支持这个技术的研究,指望它 “之后能够本身走、说话、看、读、自我复制、甚至拥有自我意识”。
Rosenblatt 和 Minsky 其实是间隔一级的高中校友。可是六十年代,两我的在感知器的问题上展开了长时间的激辩。Rosenblatt 认为感应器将无所不能,Minsky 则认为它应用有限。
1969 年,Marvin Minsky 和 Seymour Papert 出版了新书:“感知器:计算几何简介”。书中论证了感知器模型的两个关键问题:
第一,单层的神经网络没法解决不可线性分割的问题,典型例子如异或门,XOR Circuit ( 通俗地说,异或门就是:两个输入若是是异性恋,输出为一。两个输入若是是同性恋,输出为零 )
第二,更致命的问题是,当时的电脑彻底没有能力完成神经网络模型所须要的超大的计算量。
此后的十几年,以神经网络为基础的人工智能研究进入低潮,相关项目长期没法获得政府经费支持,这段时间被称为业界的核冬天。
Rosenblatt 本身则没有见证往后神经网络研究的复兴。1971年 他 43 岁生日时,不幸在海上开船时由于事故而丧生。
一
1970年,当神经网络研究的第一个寒冬降临时。在英国的爱丁堡大学,一位二十三岁的年轻人,Geoffrey Hinton,刚刚得到心理学的学士学位。
Hinton 六十年代仍是中学生时,就对脑科学着迷。当时一个同窗给他介绍关于大脑记忆的理论是:
大脑对于事物和概念的记忆,不是存储在某个单一的地点,而是像全息照片同样,分布式地,存在于一个巨大的神经元的网络里。
分布式表征 (Distributed Representation),是神经网络研究的一个核心思想。
它的意思是,当你表达一个概念的时候,不是用单个神经元一对一地存储定义;概念和神经元是多对多的关系:一个概念能够用多个神经元共同定义表达,同时一个神经元也能够参与多个不一样概念的表达。
举个最简单的例子。一辆 "大白卡车",若是分布式地表达,一个神经元表明大小,一个神经元表明颜色,第三个神经元表明车的类别。三个神经元同时激活时,就能够准确描述咱们要表达的物体。
分布式表征和传统的局部表征 (localized representation) 相比,存储效率高不少。线性增长的神经元数目,能够表达指数级增长的大量不一样概念。
分布式表征的另外一个优势是,即便局部出现硬件故障,信息的表达不会受到根本性的破坏。
这个理念让 Hinton 顿悟,使他四十多年来,一直在神经网络研究的领域里坚持下来没有退缩。
本科毕业后,Hinton 选择继续在爱丁堡大学读研,把人工智能做为本身的博士研究方向。
周围的一些朋友对此颇为不解。"你疯了吗? 为何浪费时间在这些东西上? 这 (神经网络) 早就被证实是扯淡的东西了。"
Hinton 1978 年在爱丁堡得到博士学位后,来到美国继续他的研究工做。
二
神经网络当年被 Minsky 诟病的问题之一是巨大的计算量。
简单说,传统的感知器用所谓 "梯度降低"的算法纠错时,耗费的计算量和神经元数目的平方成正比。当神经元数目增多,庞大的计算量是当时的硬件没法胜任的。
1986年 七月,Hinton 和 David Rumelhart 合做在天然杂志上发表论文, "Learning Representations by Back-propagating errors",第一次系统简洁地阐述反向传播算法在神经网络模型上的应用。
反向传播算法,把纠错的运算量降低到只和神经元数目自己成正比。
反向传播算法,经过在神经网络里增长一个所谓隐层 (hidden layer),同时也解决了感知器没法解决异或门 (XOR gate) 的难题。
使用了反向传播算法的神经网络,在作诸如形状识别之类的简单工做时,效率比感知器大大提升。
八十年代末计算机的运行速度,也比二十年前高了几个数量级。
神经网络的研究开始复苏。
三
Yann Lecun (我给他取个中文名叫 "严乐春"吧) 1960年 出生于巴黎。1987年 在法国得到博士学位后,他曾追随 Hinton 教授到多伦多大学作了一年博士后的工做,随后搬到新泽西州的贝尔实验室继续研究工做。
在贝尔实验室,严乐春 1989年 发表了论文, "反向传播算法在手写邮政编码上的应用"。他用美国邮政系统提供的近万个手写数字的样原本培训神经网络系统,培训好的系统在独立的测试样本中, 错误率只有 5%。
严乐春进一步运用一种叫作"卷积神经网络" (Convoluted Neural Networks) 的技术,开发出商业软件用于读取银行支票上的手写数字,,这个支票识别系统在九十年代末占据了美国接近 20%的市场。
此时就在贝尔实验室,严乐春临近办公室的一个同事的工做,又把神经网络的研究带入第二个寒冬。
四
Vladmir Vapnik,1936年 出生于前苏联,90年 移民到美国,在贝尔实验室作研究。
早在 1963年,Vapnik 就提出了 支持向量机 (Support Vector Machine) 的算法。支持向量机,是一种精巧的分类算法。
除了基本的线性分类外,在数据样本线性不可分的时候,SVM 使用所谓 "核机制" (kernel trick) 的非线性映射算法,将线性不可分的样本转化到高维特征空间 (high-dimensional feature space),使其线性可分。
SVM,做为一种分类算法,九十年代初开始,在图像和语音识别上找到了普遍的用途。
在贝尔实验室的走廊上,严乐春和 Vapnik 经常就 (深度) 神经网络和 SVM 两种技术的优缺点,展开热烈的讨论。
Vapnik 的观点是:SVM,很是精巧地在 "容量调节" (Capacity Control) 上 选择一个合适的平衡点,而这是神经网络不擅长的。
什么是 "容量调节"? 举个简单的例子:若是算法容量太大,就像一个记忆力极为精准的植物学家,当她看到一颗新的树的时候,因为这棵树的叶子和她之前看到的树的叶子数目不同,因此她判断这不是树;若是算法容量过小,就像一个懒惰的植物学家,只要看到绿色的东西都把它叫作树。
严乐春的观点是:用有限的计算能力,解决高度复杂的问题,比"容量调节"更重要。支持向量机,虽然算法精巧,但本质就是一个双层神经网络系统。它的最大的局限性,在于其"核机制"的选择。当图像识别技术须要忽略一些噪音信号时,卷积神经网络的技术,计算效率就比 SVM 高的多。
在手写邮政编码的识别问题上,SVM 的技术不断进步,1998年 就把错误率降到低于 0.8%,2002年 最低达到了 0.56%,这远远超越同期传统神经网络算法的表现。
神经网络的计算,在实践中还有另外两个主要问题:
第一,算法常常中止于局部最优解,而不是全球最优解。这比如"只见树木,不见森林"。
第二,算法的培训,时间过长时,会出现过分拟合 (overfit),把噪音当作有效信号。
一
1992 年笔者在纽约州的罗切斯特大学选修计算机课的时候,学到这样一句话,印象极为深入。
When in doubt, use brute force.
"若是遇到困惑 (的问题), 就使用蛮力. "
此话出自当年 UNIX 系统的发明人之一 Ken Thompson。他的本意是,程序设计中,简单粗暴的计算方法,虽然可能计算量大,可是便于实现和维护,长期看,仍是优于一些精巧可是复杂的计算手段。
这句话常令我遐想起,1943年 七月苏联和德国在库尔斯克的坦克大决战。苏军八千多辆傻大黑粗的 T-34 坦克,以损失三倍于对手的惨重代价,最终挫败德军三千多辆质量精良的虎式坦克集群。
有哲人对蛮力有另一个诠释:“ Quantity is Quality ”。
数量就是质量。向数量要质量。
九十年代,一个简单的神经网络数据培训的计算每每至少要花几天、甚至几周的时间。
这对于算法的改进调整和应用开发,都是一个巨大的瓶颈。
神经网络的研究,呼唤着蛮力,呼唤着来自计算速度、网络速度、内存容量、数据规模各个方面的、更强大的、指数增加的蛮力。
二
这个蛮力的基础,其实在 1993年 就埋下了种子。
黄仁勋,1963年 出生于台湾。1993年 从斯坦福大学硕士毕业后不久,创立了 Nvidia。
Nvidia 起家时,作的是图像处理的芯片,主要面对电脑游戏市场。1999 年Nvidia 推销本身的 Geforce 256 芯片时,发明了 GPU (Graphics Processing Unit, 图像处理器) 这个名词。
GPU 的主要任务,是要在最短期内显示上百万、千万甚至更多的像素。这在电脑游戏中是最核心的需求。这个计算工做的核心特色,是要同时并行处理海量的数据。
GPU 在芯片层面的设计时,专门优化系统,用于处理大规模并行计算。
传统的 CPU (中央处理器) 芯片架构,关注点不在并行处理,一次只能同时作一两个加减法运算。 而 GPU 在最底层的算术逻辑单元 (ALU, Arithmetic Logic Unit),是基于所谓的 Single Instruction Multiple Data ( 单指令多数据流) 的架构,擅长对于大批量数据并行处理。
打个最简单的比方,若是有 1, 2, 3, .. 32 个数字,你须要对它们进行计算处理。传统的 CPU,32 个数字要一个个按顺序依次计算。
可是 GPU 在最低层的 ALU,容许同时对 32 个数字作批量处理。
一个 GPU,每每包含几百个 ALU, 并行计算能力极高。因此尽管 GPU 内核的时钟速度每每比 CPU 的还要慢,但对大规模并行处理的计算工做,速度比 CPU 快许多。
而神经网络的计算工做,本质上就是大量的矩阵计算的操做,所以特别适合于使用 GPU。
三
这个速度有多快呢?Nvidia 480 GPU, 2010年 的时候,一秒钟能够显示十六亿个三角形,一秒钟计算速度达 1.3 TFLOPS (万亿次浮点计算)。
而 2015年 出品的 Nvidia Titan X GPU, 一秒钟能够达到 6.1 TFLOPS , 接近 2010年 的五倍。其二手货的市价不到一千美圆。
做为参照,人类的超级计算机,真正第一次突破一个 TFLOPS 的计算速度,实际上也就是 1996年 底,但其价格是几百万美圆量级的。
2007年 Nvidia 推出名叫 CUDA 的并行计算软件开发接口,使开发者能够更方便的使用其 GPU 开发应用软件。多家大学的研究者撰文表示,对于特定工做,NVIDIA GPU 带来的相对于 Intel 的 CPU 的计算速度提升,达到 100-300 倍。
Intel 技术人员 2010年 专门发表文章驳斥,大意是 Nvidia 实际上只比 intel 快 14 倍,而不是传说中的 100 倍。
Nvidia 的 Andy Keane 评论: “老夫在芯片行业混了 26年 了,从没见过一个竞争对手,在重要的行业会议上站起来宣布,你的技术 *** 只是 *** 比他们快 14 倍”。
一个蛮力,一个来自 GPU 的计算蛮力,要在深度学习的应用中爆发了。
一
九十年代末,神经网络研究遇到的困境,除了慢,仍是慢。
抛开计算速度的因素,传统神经网络的反向传播算法,捉虫时极为困难,一个根本的问题叫作所谓 vanishing gradient problem (梯度消失问题)。
这个问题在 1991年,被德国学者 Sepp Hochreiter 第一次清晰提出和阐明缘由。
简单的说, 就是成本函数 (cost function) 从输出层反向传播时, 每通过一层,梯度衰减速度极快, 学习速度变得极慢,神经网络很容易停滞于局部最优解而没法自拔。
这就像原始部落的小混混,山中无老虎时,在本地称王称霸很舒服。 但任何关于"外面的世界很精彩"的信息,在落后的层层传播机制中被噪音混淆淹没了。
小混混一生很开心, 没有意识到外面的世界有多大, 也从未想出去多看看。
二
支持向量机 (SVM) 技术在图像和语音识别方面的成功,使得神经网络的研究从新陷入低潮。
SVM 理论上更加严谨完备,结果重复性好, 上手简单, 获得主流学术界的追捧。
学术界的共识是: 多层神经网络的计算模型,实践效果很差,彻底没有前途。 这是个死胡同。
这个状况到本世纪初,变得如此糟糕, 以致于任何论文送到学术期刊时,研究者都不敢用 “神经网络” 几个字,省得被粗暴拒绝。
2003年,Geoffrey Hinton, 还在多伦多大学,在神经网络的领域苦苦坚守。
一个五十六岁的穷教授, 搞了三十多年没有前途的研究,要四处绞尽脑汁,化缘申请研究经费。他不是卢瑟 (loser) , 谁仍是卢瑟?
2003年 在温哥华大都会酒店,以 Hinton 为首的十五名来自各地的不一样专业的科学家,和加拿大先进研究院 (Canadan Institue oF Advanced Research, 简称 CIFAR) 的基金管理负责人,Melvin Silverman 交谈。
Silverman 问你们,为何 CIFAR 要支持他们的研究项目。
计算神经科学研究者,Sebastian Sung (现为普林斯顿大学教授),回答道,“喔,由于咱们有点古怪。若是 CIFAR 要跳出本身的温馨区,寻找一个高风险,极具探索性的团体,就应当资助咱们了!”
最终 CIFAR 赞成从 2004年 开始资助这个团体十年,总额一千万加元。CIFAR 成为当时,世界上惟一支持神经网络研究的机构。
不夸张地说,若是没有 2004年 CIFAR 的资金支持,人类在人工智能的研究上可能还会在黑暗中多摸索几年。
Hinton 拿到资金支持不久,作的第一件事,就是先换个牌坊。
两千多年前的刘三, 改了名换了姓,叫什么 "汉高祖"。鉴于"神经网络"口碑很差,也被 Hinton 改了名,换了姓,叫 "深度学习" (Deep Learning) 了。
Hinton 的同事,此后时不时会听到他忽然在办公室大叫,"我知道人脑是如何工做的了!"。
三
2006年,Hinton 和合做者发表论文,"A fast algorithm for deep belief nets" (深信度网络的一种快速算法)。
在这篇论文里,Hinton 在算法上的核心,是借用了统计力学里的"玻尔兹曼分布"的概念 (一个微粒在某个状态的概率,和那个状态的能量的指数成反比,和它的温度的倒数之指数成反比),使用所谓的"限制玻尔兹曼机" (RBM) 来学习。
RBM 引入了统计力学经常使用的几率工具。而在七十年代,几率和不肯定性偏偏是主流的人工智能的研究者极为痛恨的。
RBM 至关于一个两层网络,同一层神经元之间不可链接 (因此叫 "限制"),能够对神经网络实现 “没有监督的训练”(unsupervised training)。深信度网络就是几层 RBM 叠加在一块儿。
略掉技术细节,RBM 能够从输入数据中进行预先训练,本身寻找发现重要的特征,对神经网络链接的权重进行有效的初始化。这属于一种叫作特征提取器 (feature extractor)的神经网络,也称自动编码器 (autoencoder)。
通过 RBM 预先训练初始化后的神经网络,再用反向传播算法微调,效果就好多了。
Hinton 后来指出,深度学习的突破,除了计算蛮力的大幅度提升之外聪明有效地对网络连接权重的初始化也是一个重要缘由。
Hinton 的论文里,通过六万个 MNIST 数据库的图像培训后,对于一万个测试图像的识别错误率最低降到了只有 1.25%。
虽然这还不足以让主流学术界改变观点,但深度学习的发展已经见到一丝曙光。
1、
主流学术界的研究者,大多注重于在算法上的渐进式提升, 而轻视计算速度和用于训练的数据规模的重要性。
孔丘老师早在两千多年前,就高瞻远瞩的为深度学习指明了方向:“学而不思则罔, 思而不学则殆”。
用深度学习的语言来讲,就是,“光有大数据,算得不快,则仍是迷惘;光算得快,而没有大量的数据来训练,则仍是疲倦无所得”。
2007年 以前, 用 GPU 编程,缺少一个简单的软件接口。 编程繁琐,捉虫困难。这在 07年 Nvidia 推出 CUDA 的 GPU 软件接口后才真正改善。
2009年 六月, 斯坦福大学的 Rajat Raina 和吴恩达合做发表论文,“用 GPU 大规模无监督深度学习”(“Large-scale Deep Unsupervised Learning using Graphic Processors)。
论文模型里的参数总数 (就是各层不一样神经元之间连接的总数),达到一亿,与之相比,Hinton 2006年 的论文里用到的参数数目,只有一百七十万。
论文结果显示,使用 GPU 运行速度和用传统双核 CPU 相比, 最快时要快近七十倍。在一个四层,一亿个参数的深信度网络上,使用 GPU 把程序运行时间从几周降到一天。
2、
2010年 瑞士学者 Dan Ciresan 和合做者发表论文,“又深又大又简单的神经网络在手写数字识别上表现出色”。(“Deep Big Simple Neural Nets Excel on Handwritten Digit Recognition”)
这篇论文里, 使用的仍是是八十年代的反向传播计算方法,可是计算搬移到 Nivida GTX280 GPU 上实现。在反向传播计算时,速度比传统 CPU 快了 40 倍。
另外一个关键点是:
把训练神经网络的图像,刻意经过旋转, 放大缩小和弹性形变等方式进行改变。这样用于训练的图像数目大大增长。使用 GPU 后,改变六万张训练图像的计算速度从 93 秒降到了 9 秒钟, 快了十倍。不断用计算变形实现的图像, 等价于一个数量无限的训练数据库。
论文结果显示,一个六层,拥有一千两百万个参数的神经网络模型,通过两个小时的训练后,在测试图像上的错误率就降到 1%。 通过 114 个小时训练后,模型的测试错误率更是降到了 0.35%。
3、
2012 年还在斯坦福大学作研究生的黎越国同窗 (Quoc Viet Le) 领衔, 和他的导师吴恩达,以及众多谷歌的科学家联合发表论文,“用大规模无监督学习建造高层次特征”(Building High-level Features Using Large Scale Unsupervised Learning)。
黎越国的文章中, 使用了九层神经网络,网络的参数数量高达十亿,是 Ciresan 2010年 论文中的模型的一百倍,是 2009年Raina 论文模型的十倍。
做为参照,按照丹麦学者 Bente Pakkenberg 2003年 的估算,人的脑皮层 (Neocortex) 内就有接近一百五十万亿个神经元突触(Synapse,是链接神经元传递信号的结构), 是黎同窗的模型参数数量的十万倍。
用于训练这个神经网络的图像, 都是从谷歌的录像网站 youtube 上截屏得到。 一千万个原始录像,每一个录像只截取一张图片, 每张图片有四万个像素, 与之相比,先前大部分论文使用的训练图像,原始图像的数目大多在十万如下,图片的像素大多不到一千。
黎越国的计算模型分布式地在一千台机器 (每台机器有 16 个 CPU 内核) 上运行,花了三天三夜才完成培训。
通过培训的神经网络,在一个名叫 ImageNet 的共享图像数据库里,面对两万两千个不一样类别,一千四百万个图像中, 分类识别的正确率达到了 15.8%。 而在此以前最好的公开发表的模型,正确率只有 9.3%。
深度学习的研究进步在加速,但要说服更多的主流的人工智能研究者加入,须要的是更多的, 可直接对比的,大幅领先的,无可辩驳的计算结果。
1、
计算速度和数据规模的大幅度提升,也引导出更多算法上的改进。
在网络构架上,一些算法更多地借鉴人脑认知的成功经验: 多提升效率, 少作无用功。多闭目养神,少乱说乱动。 多关注主要矛盾,少关心细枝末节。
2003年 纽约大学神经科学中心的 Peter Lennie 在论文中指出,人脑的神经元,通常最多 1-4%的比例, 能够同时处于激活状态。比例更高时,大脑则没法提供相应的能量需求。
神经网络的模型中,经过所谓激励函数(activation function), 根据上一层神经元输入值来计算输出值。
最典型的传统激励函数,sigmoid function,输出值在 0 和 1 之间,也就意味着神经元平均下来,每时每刻都在使用一半的力量。
这种高强度能量需求,对于普通生物体而言,是没法持续的。
一个有意思的比方是鳄鱼。真实生活中的鳄鱼,和动物世界的纪录片中纵身一跃,凶猛捕食的形象截然不同。
鳄鱼 90%的时间是一动不动的,(一个近距离观察者常会把它误认为是石雕)剩下 5%的时间用于求偶交配,5%的时间用于觅食。
鳄鱼的低能耗绿色生活方式,使它成为两栖动物界的寿星。虽然野生鳄鱼的平均寿命缺少严格科学的统计,可是被捕获后人工饲养的鳄鱼中,有很多个体,记录在案的寿命超过了七十岁。
2、
2011 年,加拿大的蒙特利尔大学学者 Xavier Glorot 和 Yoshua Bengio 发表论文,“Deep Sparse Rectifier Neural Networks”。(深而稀疏的修正神经网络).
论文的算法中使用一种称为 “修正线性单元”(REctified Linear Unit,又称 RELU)的激励函数。用数学公式表达:rectifier (x) = max (0, x ).
对于 RELU 而言,若是输入为负值,输出为零。不然输入和输出相等。
换而言之,对于特定的输入,统计上有一半神经元是没有反应,保持沉默的。
使用 RELU 的含有三个隐层的神经网络模型,被用来测试于四个不一样的经典的图像识别问题。和使用别的激励函数的模型相比,RELU 不只识别错误率广泛更低,并且其有效性,对于神经网络是否进行 “预先训练” 过并不敏感。
RELU 的优点还有下面三点:
传统的激励函数,计算时要用指数或者三角函数,计算量要比简单的 RELU 至少高两个数量级.
RELU 的导数是常数, 非零即一, 不存在传统激励函数在反向传播计算中的"梯度消失问题".
因为统计上,约一半的神经元在计算过程当中输出为零,使用 RELU 的模型计算效率更高,并且天然而然的造成了所谓 "稀疏表征" (sparse representation), 用少许的神经元能够高效, 灵活,稳健地表达抽象复杂的概念.
1、
神经网络计算,另外一个常为人诟病的问题,是过分拟合(overfitting)。
一个拥有大量自由参数的模型,很容易经过调试,和训练数据吻合。但这并不意味着,这就是个好模型。
美国数学家冯纽曼(John Von Neumann)曾说, “给我四个参数,个人模型能够拟合一个大象。给我五个参数, 我可让它扭动它的鼻子。”
神经网络模型的自由参数,如今每每超过一亿。若是说四个参数能够拟合一个大象的话,对于全世界总数不到一百万的大象来讲,实在是游刃有余。
一个模型好坏的试金石,不在于和现有数据的拟合度, 而在于它是否能够在全新的状况和数据面前,作出正确的判断和预测。
金融界的人常会看到各类交易模型,许多模型面对历史数据的测试时,表现很是好,胜率极高。可是若是投资者天真地觉得找到了致富的捷径,把模型用于实际交易时,结果每每差强人意。
另一个典型的过分拟合的例子,能够在小孩教育上看到。许多家长把孩子从小就送到奥数、钢琴、小提琴等各种才艺和竞赛的培训班,惟恐孩子学得不够,之后上不了好大学,找不到好工做。
这实际上就是根据社会现有的经济结构作出的一种过分拟合的训练。
当时代迅速发展,之前吃香的技能,职业忽然被淘汰,孩子必须面对社会变化和学校教育体系的巨大落差而没法迅速随机应变时,悲剧将很难避免。
2、
解决这个问题的算法上的革新,启迪又是来自生物界,来自有性繁殖和无性繁殖的对比。
爱尔兰著名哲学家和诗人,奥斯卡*王尔德 (Oscar Wilde) 先生曾有名言,"世界上全部东西都是关于性。 除了性自己" (Everything in the world is about sex,Except sex)。
直觉上,有性繁殖是为了生物进化,适应环境。可是若是一个已经很是健康的个体,为何还要经过有性繁殖,抛弃掉本身一半的优秀基因去和另一个个体合做制造下一代呢?
无性生殖的优势是节能省时,无须浪费时间求偶交配。但致命的弱点是,基因没有任何变化,遗传病很容易被传播到下一代,进而下降生存的几率。
加州大学伯克利分校学者 Adi Livnat 在 2007年 的论文, "关于性在进化中的角色的混合能力理论 "(A mixability theory of the role of sex in evolution ) 中经过模拟计算得出下述结论:
性在生物进化中的目的,不是制造适合某个单一环境的,最优秀的个体基因,而是为了制造最容易和其它多种基因合做的基因,这样在多变的外界环境下,总有一款能够生存延续下来。
优秀个体在有性繁殖中,虽然损失了一半的基因,短时间内看上去不是好事。可是长期看,生物组织总体的存活能力,更加稳健强大。
有性繁殖,在金融投资上的一个类比是: 把财富分散到不一样种类的资产上,按期从新调整再平衡。 这样作的缺点是,某个表现特别好的资产可能会被过早的卖掉。 但优势在于,让投资组合不过度依赖于某个单一资产,在金融风暴中得以生存下来。
歌舞升平的年代,人们老是互相攀比投资回报、没有以为生存、保本是个问题。当金融黑天鹅降临时,才幡然醒悟,资本和生命的保全,而不是寻欢做乐,才是真正最重要的。
3、
2012年 七月, Hinton 教授发表论文, "经过阻止特征检测器的共同做用来改进神经网络" (Improving neural networks by preventing co-adaptation of feature detectors)。
论文中为了解决过分拟合的问题,采用了一种新的称为"丢弃" (Dropout)的算法。
丢弃算法的具体实施,是在每次培训中,给每一个神经元必定的概率(好比 50%),伪装它不存在,计算中忽略不计。
从一个角度看,丢弃算法,每次训练时使用的是不一样架构的神经网络(由于每次都有部分神经元装死),最后训练出来的东西,至关于不一样架构的神经网络模型的平均值。
从生物的有性繁殖角度看,丢弃算法,试图训练不一样的小部分神经元,经过多种可能的交配组合,得到接近理想值的答案。
使用丢弃算法的神经网络,被强迫用不一样的、独立的、神经元的子集来接受学习训练。 这样网络更强健,避免了过分拟合的死胡同,不会由于外在输入的很小变化,致使输出质量的很大差别。
论文结果显示,使用丢弃算法后,在诸如 MINST、 TIMID、 CIFAR-10 等多个经典语音和图像识别的问题中, 神经网络在测试数据中的错误率。 相对于经典的深度学习算法,都得到了可观的进步 (错误率降低了 10% 到 30% 不等)。
4、
2012年 的夏天, 距离 Hinton 教授 1970年 开始攻读博士学位, 距离 Rosenblatt 1971年 溺水身亡, 一晃四十多年过去了。
深度学习的技术,此时有了
条件已经成熟, 该用实验结果,证实本身相对别的技术,无可辩驳的优越性了。
有诗为证:
"鸿鹄高飞,一举千里。
羽翼已就,横绝四海。
横绝四海,当可奈何!
虽有缯缴,尚安所施! "
整理自: