再从Deep Learning看科技的变革
其实,Deep Learning的基础奠定于几十年前的神经网络。
然而在90年代和整个2000年代,神经网络被工业和学术界抛弃了。为什么?因为效果还不如比如图像处理里面的各种adaboost、ASM等等特定方法,语音识别里面效果则远远不如HMM隐形马尔可夫模型。其实差距的关键,在于神经网络依赖于大量的标定数据用于学习,以及耗费大量的计算资源用于训练。
这两者在2010年之前都是不可能的。
随着移动互联网的爆发,计算性能的提高,学术界能获取到的标定数据指数型增长,GPU并行计算能力也有了飞跃(其实计算能力的提高带来的另一个附加变革则是同样被丢弃在垃圾堆里面30多年的VR)。
直到2012年左右,深度神经网络开始兴起,伴随而来的是识别率的不断刷新,现在图像和语音方面都已经能够做到高于人类的平均识别率了。也难怪人工智能这2年开始在投资领域和科技界不断冒泡。
这里面几点值得注意:
-
科技的发展是交替的。生物计算、VR、神经网络在计算性能的提升后重生;曾经遇到瓶颈的PC发展由于互联网和移动互联网,改变了整个人类社群的接入(连接)结构;当下正处于低潮期的所有产业,会由于其他产业的发展而逆向被影响到。我能看到的包括核聚变、太空探索、生物计算。
-
即便计算性能大幅提高,依旧不能满足神经网络的训练要求。Trick和实验数据远远的走在了科学的前面。我们依旧在尝试摸索如何调试出一个好的识别结果,但至于为什么能得到这样的结果,学术远远走在后面。不过没关系,科学虽然这时候不能给我们定量分析,但依旧可以给我们定性分析的方向。这里有2个典型的例子:
- 为了加快训练速度,BP神经网络在反向迭代的时候,只随机抽取一部分数据进行cost的计算,这样虽然我们得到的不是最优梯度,但是依旧能够曲折的找到最优解。这叫做Stochastic Gradient Descent(SGD)。
- 为了防止overfitting,让神经网络训练出冗余的数据,最好的方法就是让每一次的迭代结果都不是必定可以被依赖的。我们随机dropout掉一些结果,让神经网络能够变得更加冗余和宽容,但依旧保证识别精度。
这两者都不一定是数学计算上最优的,但却是实践中最可靠的。