转载自:http://blog.csdn.net/elwangeij/article/details/51352964
为什么预训练:
深度网络存在以下缺点:
1. 网络越深,需要的训练样本数越多。若用监督则需大量标注样本,不然小规模样本容易造成过拟合。(深层网络意味着特征比较多,机器学习里面临多特征:1.多样本 2.规则化 3.特征选择)
2. 多层神经网络参数优化是个高阶非凸优化问题,常收敛较差的局部解
3. 梯度扩散问题。BP算法计算出的梯度随着深度向前而显著下降,导致前面网络参数贡献很小,更新速度慢。
解决方法:逐层贪婪训练。无监督预训练(unsupervised pre-training)即训练网络的第一个隐藏层,再训练第二个,最后用这些训练好的网络参数值作为整个网络参数的初始值。 无监督学习--->参数初始值;监督学习--->fine-tuning,即训练有标注样本。经过预训练最终能得到比较好的局部最优解。
常用预训练方法
stacked RBM
stacked sparse-autoencoder
stacked denoise-autoencoder
预训练的效果:
fine-tuning微调
预训练类似于规则化权值(从测试误差来说,预训练对于多节点数和深层网络效果更加)
网友评论