Press "Enter" to skip to content

梯度下降到底是什幺?

我们回忆深度学习“三板斧”:

 

1. 选择神经网络

 

2. 定义神经网络的好坏

 

3. 选择最好的参数集合

 

其中步骤三,如何选择神经网络的好坏呢?

 

梯度下降是目前,最有效的方法之一。

 

方法: 我们举两个参数的例子 θ1、θ2, 损失函数是L。 那幺它的梯度是:

 

 

那我为了求得最小值,我们有:

 

 

参数不断被梯度乘以学习率η 迭代

 

 

那幺上述公示公为什幺是减号,不是加号呢?

 

我们定义 θ 改变的方向是movement的方向, 而gradient的方向是等高线的法线方向

 

 

基础的Gradient Decent已经介绍完了,接下来,我们一起探讨GD的使用技巧。

 

Learning rate学习率的设定

 

Learning Rate η 如果设定不好,Loss反而增大

 

 

自适应的学习率 adaptive learning rate

 

很多小伙伴在机器学习代码中,学习率一般都是设置为一个固定的数值(需要不断调参)。

 

根据学习经验,一般的我们有如下结论:

 

1. 训练刚开始的时候,学习率较大

 

2. 经过几轮训练后,结果慢慢接近的时候,需要调小学习率

 

 

Adagrad 的学习率是现有学习率 除以 导数的平方和的开根号

 

 

Stochastic Gradient Decent (SGD)

 

让训练更加快速

 

一般的GD方法是所有的训练数据后,进行一次参数更新

 

 

SGD是一个样本就可以更新参数

 

 

GD和SGD的对比效果:

 

 

特征裁剪 Feature Scaling

 

让不同维度的数据,有相同的变化幅度

 

 

训练的时候,哪一个好train,一目了然

 

 

归一化方法:

 

 

总结: Gradient Decent 是机器学习、深度学习求解Optimal问题的“普世”方法,但是也会遇到很多问题, 例如local minima 和 saddle point 的问题。  我们以后会展开讨论。

 

 

本专栏图片、公式很多来自台湾大学李弘毅老师、斯坦福大学cs229、cs231n 、斯坦福大学cs224n课程。 在这里,感谢这些经典课程,向他们致敬!

 

作者简介: 武强 兰州大学博士,谷歌全球开发专家Google Develop Expert(GDE Machine Learing 方向)

 

CSDN: https://me.csdn.net/dukuku5038

 

知乎: https://www.zhihu.com/people/Dr.Wu/activities

 

漫画人工智能公众号: DayuAI-Founder

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注