深度学习过程中的优化算法

神经网络的训练过程实质是得到最优化目标函数的过程,常见的目标函数MSE Loss、Cross Entropy Loss、NLL Loss等,网络训练过程就是最小化Loss的过程。Loss可以理解为模型预测值与真实值之间的差距。一般这些Loss函数是凸函数,可以使用最优化的相关算法最小化Loss,具体包括随机梯度下降、共轭梯度下降、牛顿法、拟牛顿法等。归功于神经网络的backward过程,使得梯度相关的搜索算法得以应用。下面简单介绍神经网络训练过程的几种优化方法。

一.基本算法

一阶优化算法

1.梯度下降

假设你的目标函数是f(x,w),其中w是函数的参量。当前你的优化目标是最小化目标函数,求的函数最小时的模型参数w。求最值问题就类似于寻找极值点,通过梯度查找,梯度下降实质是使得沿着目标函数下降最快的方向更新模型参数w,使得算法收敛。一般而言,会在梯度方向加一个学习率(learning Rate),用于设置在梯度方向前进的步长。

2. SGD

随机梯度下降与梯度下降的区别在于随机选取计算梯度的样本,并且可以支持mini-batch进行模型参数的更新。但是,SGD的学习率是固定的,容易收敛到局部最优。

3. Momentum

Momentum是模拟物理里动量的概念,积累之前的动量来替代真正的梯度,Momentum项能够在相关方向加速SGD,抑制振荡,从而加快收敛。

4. Adagrad

Adagrad是自适应学习率的算法,通过引入一个平滑因子,不断减小学习率,由于学习率不断减小,收敛过早,效果不太好。

5. Adadelta & RMSprop

二者都是对Adagrad的改进,同样也是自适应学习率的算法。

6. Adam

Adam算法可以看作RMSprop和动量方法的结合。效果很好,现在做深度学习基本默认使用Adam算法。

二阶优化算法

函数通过泰勒公式展开得以表示为零阶、一阶、二阶…等高阶余量的累加。前边的梯度算法都是一阶近似。还有近似二阶余量的算法,类似牛顿法、拟牛顿法、BFGS、LBFGS等。有兴趣的同学可以查看具体原理和实现过程。

二.算法优化

Andrychowicz[1]在2016年提出了对优化器(Optimizer)进行训练,即他们在训练LSTM网络的同时,也对LSTM优化器进行迭代更新。但是,这无疑增加了模型训练的复杂程度。Zoph[2]于2017年提出一种模型结构,便于强化学习的搜索过程,这种模型结构达到了语言模型的最优效果。相同的搜索方法也可以用在深度学习过程。

目前主流的优化算法几乎都很相似,它们都是用了对于过去梯度值的指数移动平均[3]。Bello et al. (2017)[4]借用强化学习的框架,定义梯度更新的策略为一个候选空间,每次进行梯度更新都是从这一空间进行采样得到更新策略,训练模型在测试集合的效果作为reward返回,便于更新策略的挑选。

Reference

[1] Andrychowicz,M., Denil, M., Gomez, S., Hoffman, M. W., Pfau, D., Schaul, T., & deFreitas, N. (2016). Learning to learn by gradient descent In Advances in NeuralInformation Processing Systems.

[2] Zoph, B., &Le, Q. V. (2017). Neural Architecture Search with Reinforcement Learning. InICLR 2017.

[3] Ruder, S. (2016). An overview ofgradient descent optimization algorithms. arXiv Preprint arXiv:1609.04747

[4] Bello, I., Zoph, B., Vasudevan, V.,& Le, Q. V. (2017). Neural Optimizer Search with Reinforcement Learning. InProceedings of the 34th International Conference on Machine Learning

原文发布于微信公众号 - CodeInHand(CodeInHand)

原文发表时间:2018-02-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

一文概览深度学习中的五大正则化方法和七大优化策略

3739
来自专栏大数据挖掘DT机器学习

神经网络训练中的Tricks之高效BP(反向传播算法)

Tricks!这是一个让人听了充满神秘和好奇的词。对于我们这些所谓的尝试应用机器学习技术解决某些问题的人,更是如此。曾记得,我们绞尽脑汁,搓手顿足,大喊“为什...

3446
来自专栏新智元

【直观梳理深度学习关键概念】优化算法、调参基本思路、正则化方式等

作者:张皓 【新智元导读】深度学习论文众多,而理解的前提是对基础概念的掌握。本文旨在直观系统地梳理深度学习各领域常见概念与基本思想,使读者对深度学习的重要概念...

40413
来自专栏CVer

[计算机视觉论文速递] 2018-06-15 人脸专场

这篇文章有4篇论文速递,都是人脸方向,包括人脸识别、人脸检测和人脸表情识别。其中一篇是CVPR 2018。

1452
来自专栏机器之心

训练深度神经网络失败的罪魁祸首不是梯度消失,而是退化

2415
来自专栏ATYUN订阅号

基于TensorFlow的比较研究:神经网络优化算法

用于训练神经网络的最受欢迎的优化算法有哪些?如何比较它们?本文试图用一个卷积神经网络(CNN)来回答这些问题。 ? 随机梯度下降(SGD) SGD通过选取大小(...

4075
来自专栏机器学习算法与Python学习

梯度检验与高级优化

梯度检验与高级优化 导读 神经网络 反向传播算法 目录 关键词 梯度检验与高级优化 1 关键词 缺位错误 off-by-one error 偏置项 bias ...

2949
来自专栏应兆康的专栏

深度学习中的优化问题以及常用优化算法

在深度模型中我们通常需要设计一个模型的代价函数(或损失函数)来约束我们的训练过程,训练不是无目的的训练,而是朝着最小化代价函数的方向去训练的。本文主要讨论的就是...

45614
来自专栏专知

【干货】深度学习需要了解的四种神经网络优化算法

【导读】近日,Vadim Smolyakov发表了一篇博客,针对当前神经网络的优化算法进行了总结,并利用简单的CNN网络在NMIST数据集上进行实验,探讨不同的...

3405
来自专栏技术小站

吴恩达深度学习笔记 course2 week2 优化算法

batch:之前所用的都是将m个样本放在一起组成向量来就行训练,称为batch,所存在的问题:当样本的数量比较庞大的时候,迭代一次所需要的时间比较多

1121

扫码关注云+社区

领取腾讯云代金券