我们通过稀疏自编码训练了一个特征提取网络
我们通过监督学习训练了一个分类网络
我们将它们拼起来得到一个最终的应用网络
如果我们有大量标签数据,注意这个前提很关键
那么我们可以直接用这些大量的标签数据放进最终的应用网络,继续进行学习,这个学习会改变最终应用网络的所有参数。
此时我们用替代特征
比拼接特征好
前面的稀疏自编码及监督训练叫做预训练(pre-training),后面的有标签数据训练叫做优化(fine-tuning)
深度网络##
把隐藏层的数目设置多一点就叫做深度网络
深度网络能表示的函数多得多,因此能表示的特征更加复杂。
注意深度网络的激活函数必须是非线性的
然而,训练深度网络很困难,传统的监督学习、梯度下降并不能很好的优化网络误差,这是因为:
(1)数据量不够,对于表达能力很强的神经网络来说,数据少很有可能导致过拟合的产生。
(2)对于一个层数很深的网络来说,这其实是一个高度非凸的网络,通常情况下梯度下降达到的局部最优值并不好
(3)梯度消失,这导致迭代速度很慢很慢
(4)如果后层神经元足够多,那么就好像不需要前面层的帮助就可以标识结果,这样导致和浅层网络一毛一样。?
解决办法
逐层训练
首先训练只有一个隐藏层,然后两个,再三个......
原因:
标签数据很昂贵,但非标签数据很廉价,所以我们可以通过非标签数据pretrain一个最终网络的参数初始值。
这样做的另一个好处是与随机初始化所有参数相比,这样逐层训练得到的初始化参数很有可能达到一个更好的局部最优值。