今天我们要谈论的文章为:

Lei Jimmy Ba, and Rich Caurana. Do Deep Nets Really Need to be Deep?. ICLR2014

openreview中有下载链接和讨论:

http://openreview.net/document/9a7247d9-d18e-4549-a10c-ca315d84b6db#9a7247d9-d18e-4549-a10c-ca315d84b6db


引言:

神经网络的提出已经有半个多世纪,BP算法的发现也已经过了三十年。但是,直到2006年,大牛Hinton才

成功训练出多层神经网络,并在图像识别和语音识别等领域大放异彩。在各大公开的竞赛中,基于深度神经

网络(DNN)方法的性能稳居头把交椅的位置,并且,甩传统的机器学习方法好几条街。为了区别于之前的

学习算法,Hinton给它取了一个响亮的名字——deep learning。

据说,相对于传统的神经网络、SVM、adaboost、随机森林等机器学习算法,DNN最大的好处在于其网络结构

deep的,这种结构和人的视觉感知原理一致,可以提取输入数据不同抽象层次的特征,因而更适合来进行

数据表达。

具体介绍/讨论参见:

1) pluskid的博客 Deep Learning and Shallow Learning

2) Bengio Y. Learning deep architectures for AI. Foundations and trends® in Machine Learning, 2009

3) zouxy09的CSDN:Deep Learning(深度学习)学习笔记整理系列

但是,如果,有一种方法,使得shallow neural network也可以达到deep neural network的性能,并且,两者

的parameter的个数差不多,是不是很神奇?如果这样,neural network是不是一定需要是deep的呢?


文章内容:

文章在TIMIT数据库上做实验,一共训练了7个neural network。结果如下:


其中,SNN代表Shallow Neural Network,是一个只有一个隐含层的神经网络;DNN代表Deep Neural Network,

有三个以全连接层组成的隐含层;CNN代表Convolutional Neural Network,其隐含层包含1个卷积&maxpooling

层,然后接上三个全连接层。SNN-MIMIC是通过model compression得到的Mimic Shallow Neural Network。

其中,SNN,DNN和CNN用的都是标准的训练算法得到的结果。SNN-MIMIC的具体训练过程如下:

将多个CNN给ensemble起来,形成一个宇宙无敌的super CNN。然后,对于训练集的每一个sample,由这个

super CNN给出一个output,然后,将训练集中的label替换成这个output作为groundtruth,再用标准的BP算法

进行训练。可以把这里的super CNN当做一个函数,然后,我们训练一个Mimic的SNN来逼近这样一个函数,

只要这个Mimic SNN在训练集的临域能近似这个super CNN就可以了。

在训练SNN和SNN-MIMIC的过程中,当隐含层的节点数增多时,训练的过程会变得相当慢。这里可以用低秩矩阵

来近似原来的大的矩阵,加快训练过程。


作者的结论:

通过model compression的方法训练得到的SNN的性能与DNN的差不多,居然,它们的参数的个数也差不多,

那么,是不是有一种训练方法,可以使得SNN直接在训练集里进行,也能达到这个性能?所以,作者的结论是,

当前的BP&随机梯度下降的训练算法对deep的neural net更有效。于是,在这个宇宙中,似乎存在一种算法,

使得SNN能得到更好的训练。


Yoshua Bengio的评论:

这篇文章上传到openreview,得到了大牛Yoshua Bengio的关注。这位大牛的观点是,

the depth (and convolutions) provide a PRIOR that helps GENERALIZING better.

第一个证据就是,要得到与CNN性能差不多的SNN-MIMIC,需要比CNN多得多的参数(13M vs 180M),而

CNN当然提供了一个很强的PRIOR

第二个证据就是训练误差,只需要看看DNN和SNN的训练误差是否差不多就可以了。因为,如果差不多,则

说明这些模型 fit 已知样本(训练样本)的能力差不多,但是 fit 未知样本(测试样本)的能力DNN比SNN强,

说明DNN的generalization的能力更强。


其他的一些知识:

model compression通过一个小的model来逼近一个大的model(或者一个model ensemble)的性能。通常情况

下,需要大量的unlabeled的样本,将这些样本送到大的model里,得到一个输出,然后,将这些样本和对应的

输出组合,用supervised learning得到这个小的model。这里有两个需要注意的地方:第一,unlabeled的样本

不能只是将大的model的训练集中的label去掉而得到的样本,因为大的model往往在这些样本点上有overfitting;

第二,unlabel的样本数需要比大的model的训练集中的样本数要多得多,这样才能更可能的近似原来的这个大

的model。