本文是 深度学习有多深? 学了究竟有几分? (四) 的续篇。
主流学术界的研究者,大多注重于在算法上的渐进式提高, 而轻视计算速度和用于训练的数据规模的重要性。
孔丘老师早在两千多年前, 就高瞻远瞩的为深度学习指明了方向: "学而不思则罔, 思而不学则殆"。
用深度学习的语言来说,就是, "光有大数据,算得不快,则还是迷惘 ; 光算得快, 而没有大量的数据来训练,则还是疲倦无所得"。
2007年之前, 用GPU编程,缺乏一个简单的软件接口。编程繁琐,捉虫困难.这在 07年 Nvidia 推出 CUDA 的GPU 软件接口后才真正改善。
2009年六月, 斯坦福大学的 Rajat Raina 和吴恩达合作发表论文, "用GPU大规模无监督深度学习" ("Large-scale Deep Unsupervised Learning using Graphic Processors)。
论文模型里的参数总数 (就是各层不同神经元之间链接的总数),达到一亿,与之相比, Hinton 2006年的论文里用到的参数数目,只有一百七十万。
论文结果显示,使用GPU运行速度和用传统双核CPU相比, 最快时要快近七十倍。 在一个四层, 一亿个参数的深信度网络上,使用GPU把程序运行时间从几周降到一天。
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%。
2012 年还在斯坦福大学做研究生的黎越国同学 (Quoc Viet Le) 领衔, 和他的导师吴恩达,以及众多谷歌的科学家联合发表论文, "用大规模无监督学习建造高层次特征" (Building High-level Features Using Large Scale Unsupervised Learning)。
黎越国的文章中, 使用了九层神经网络,网络的参数数量高达十亿, 是 Ciresan 2010年论文中的模型的一百倍, 是 2009年Raina 论文模型的十倍。
作为参照,按照丹麦学者 Bente Pakkenberg 2003年的估算, 人的脑皮层 (Neocortex) 内就有接近一百五十万亿个神经元突触 (Synapse, 是连接神经元传递信号的结构), 是黎同学的模型参数数量的十万倍。