有没有人看过任何关于深度卷积神经网络预训练的文献?我只见过自动编码器或受限 Boltzman 机器中的无监督预训练。
深度卷积神经网络的预训练?
我不确定这是否能准确回答您的问题,但据我了解,您看不到人们进行预训练的原因(我的意思是在无监督的预训练意义上)conv nets 是因为在纯监督训练中有各种创新已经使无监督的预训练变得不必要(现在,谁知道未来会出现什么问题和问题?)。
主要创新之一是远离 sigmoidal (sigmoid, tanh) 激活单元,它可以饱和/具有接近平坦曲率的区域,因此反向传播的梯度非常少,因此即使对于所有实际意图都没有完全停止,学习也会非常缓慢和目的。Glorot、Bordes 和 Bengio 的文章Deep Sparse Rectifier Neural Networks使用整流线性单元 (ReLU) 作为激活函数来代替传统的 sigmoidal 单元。ReLU 具有以下形式:. 请注意,它们是无界的,并且对于正部分,具有恒定的梯度 1。
Glorot、Bordes 和 Bengio 的文章将 ReLUs 用于多层感知器,而不是 Conv Nets。上一篇文章What is best Multi-Stage Architecture for Object Recognition by Jarret 和 Yann LeCun 的纽约大学小组的其他人使用了校正非线性但对于 sigmoidal 单元,因此它们具有等。两篇文章都观察到,使用校正非线性似乎缩小了纯监督方法和无监督预训练方法之间的大部分差距。
另一个创新是我们已经为深度网络找到了更好的初始化。多年来,使用标准化网络各层方差的想法,已经建立了良好的经验法则。第一个,最受欢迎的一个是 Glorot 和 Bengio理解训练深度前馈网络的难度,它提供了一种在线性激活假设下初始化深度网络的方法,后来在深入研究整流器由一组微软研究团队成员修改 Glorot 和 Bengio 权重初始化以解释校正非线性。权重初始化对于极深的网络来说很重要。对于 30 层的卷积网络,MSR 权重初始化比 Glorot 权重初始化执行得更好。请记住,Glorot 论文发表于 2010 年,MSR 论文发表于 2015 年。
我不确定Alex Krizhevsky、Ilya Sutskever 和 Geoff Hinton的ImageNet Classification with Deep Convolutional Neural Networks论文是否是第一个将 ReLU 用于卷积网络的论文,但它的影响最大。在本文中,我们看到用于卷积网络的 ReLU 加速了学习,正如他们的 CIFAR-10 图之一所证明的那样,该图表明 ReLU 卷积网络可以比非 ReLU 卷积网络更快地实现更低的训练错误率。这些 ReLU 不受梯度消失/饱和 sigmoidal 问题的影响,可用于训练更深的网络。其他重大创新之一是使用 Dropout 训练,一种随机噪声注入或模型平均技术(取决于您的观点),它允许我们训练更深、更大的神经网络,而不会过度拟合。
卷积网络的创新继续以惊人的速度进行,几乎所有的方法都使用 ReLUs(或一些修改,如 Microsoft Research 的 PReLUs)、Dropout 和纯监督训练(SGD + Momentum,可能还有一些自适应学习率技术,如 RMSProp 或 ADAGrad )。
所以到目前为止,许多表现最好的卷积网络似乎都是纯监督的。这并不是说无监督预训练或使用无监督技术在未来可能不重要。但是一些令人难以置信的深度卷积网络已经被训练,在非常丰富的数据集上已经达到或超过了人类水平的表现,只是使用了监督训练。事实上,我相信 Microsoft Research 提交给 ImageNet 2015 竞赛的最新作品有 150 层。那不是错字。150。
如果你想对 conv 网络使用无监督预训练,我认为你最好找到一个任务,其中 conv 网络的“标准”监督训练表现不佳,并尝试无监督预训练。
与自然语言建模不同,当涉及到图像数据时,似乎很难找到一个无监督任务来帮助相应的监督任务。但是,如果你在互联网上环顾一番,就会看到一些深度学习的先驱(Yoshua Bengio、Yann LeCun 等)谈论他们认为无监督学习的重要性以及未来的重要性。
从上面的答案可以理解,当发生多件事时,预训练是“过时的”。但是,我确实想提炼出我对它的理解:
- 很久以前的2010年,大家都很关心预训练。这是一篇关于我没有看到的主题的好论文。
- 在 Alex Krizhevsky、Ilya Sutskever 和 Geoff Hinton 发表他们的 imagenet 论文之前,人们仍然认为特征很重要,但主要关注的是无监督学习,甚至是自学学习来制造这些特征。
- 不难看出原因——当时神经网络的构建块没有那么健壮,并且收敛得非常缓慢,以产生有用的特征。很多时候,他们甚至失败了。当您有足够的数据可以为 SGD 获得良好的初始化时,预训练很有用。
- 当 relu 提出时,网络融合得更快。当出现泄漏的 relu 和最近的解决方案时,神经网络在收敛到可行的结果时变得更加强大。我强烈建议你玩这个有才华的谷歌人写的优秀的神经网络演示,你会明白我在说什么。
- 进入我们的主要观点,这并不是说某种形式的预训练在深度学习中并不重要。如果您想获得最先进的结果,您必须对数据进行预处理(例如 ZCA)并正确选择初始权重 -这是一篇关于该主题的非常好的论文。
所以你看,预训练在形式上变成了预处理和权重初始化,但仍然保持功能并且变得更加优雅。
最后一点,机器学习非常流行。我个人像吴恩达一样打赌,未来无监督和自学的学习将占主导地位,所以不要把它当作一种宗教:)