Deep Learning 优化小结

胡乱写一点,做个记录;不保证可读性。


Hinton 06 年的 A fast learning algorithm for deep belief nets首先提出了 pre-training + fine-tuning的优化 deep network的方法策略;

mutil-layer network多年前就提出,但优化一直是个问题;非凸且参数巨多, 单隐藏层NN的优化算法Backpropagation Algorith往往得不到较好的局部最优解;

pre-training 往往能够得到比较接近局部最优解的初始迭代点,然后使用fine-tuning来微调pre-training得到的参数。

pre-training是一种策略,不是具体的优化方法。pre-training使用无监督学习来训练一个单隐藏层NN,输入输出相同。从而学习到参数,然后保留第一层;递归进行多次。最后使用 有监督学习来trian一下 feature-label的参数,可以使用sigmoid/softmax regression等。

单隐藏层NN Autoencoder/Sparse Autoencoder等;另 RBM等。

RBM 用Hinton 02年的一篇文章提出的方法来trian 基本思想是 极大似然的时候不断抬高下界 做个两三层即可


单隐藏层NN 的训练方法有 梯度下降(GD)/随机梯度下降(SGD)/mini-Batch GD/L-BFGS/共轭梯度(CG)

其实单隐藏层 一般不需要这么多方法, 但是Deep Learning往往需要 大量的训练数据 才能刻画数据的分布,所以需要 优化技巧来提高训练速度。

这里有许多参数要调  比如Sparse Autoencoder如果使用KL-熵来做优化的目标函数 就需要选择 优化比例lambda等

GD/SGD中需要调节 learning rate 尤其是SGD;mini-Batch除步长外 还需调节 batchsize epoch等参数/L-BFGS 如果内存占用太多 还需调节选用个数的参数。

此外优化 还有添加 动量 or 平均随机梯度的方法等。


fine-tuning也是用 SGD/LBFGS/CG来微调各层参数,但是这种微调 其实对底层的参数影响比较小,多半调在了最上层的参数上;不同的task 会带来不同的微调效果 尽管他们使用相同的pre-training


近来,Hinton 还提出 使用 dropout的技术来trian,有点 Denoise Autoencoder的意思;Bengio顺带搞出来 maxout等技术。

Ng组 11年 有篇文章——On Optimization Methods for Deep Learning分析了SGD/L-BFGS/CG


华盛顿大学的 Pedro-Domingos等 提出的 Sum-Product Networks的优化 完全不是上面套路,reuse很多中间结果,据说训练很快 没细看

关于优化等问题 可以参考    部分章节

Neural Networks: Tricks of the Trade

Second Edition

Deep Learning在图像上 为了克服图像尺寸、平移、旋转等的问题会使用 patch/convolution-pooling等技术

早期Deep learning 基本用在了图像/语音的分类问题和提取特征上,近年有拓展应用领域的趋势:图像分割/图像检索等。


我也用 Stacked (Sparse) Autoencoder/Convolution NN等 在MNIST上做了一些实验,基本在 97.5%+的正确率上,更高的准确率,可以通过增加训练参数(旋转图像/平移图像等)、数据的预处理(白化等)、更细致的调参数、更换模型等来提高。







  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值