| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 李宏毅机器学习笔记(三): 梯度下降 -> 正文阅读 |
|
[人工智能]李宏毅机器学习笔记(三): 梯度下降 |
一、基本过程解决一个优化问题,通常需要构造一个
L
o
s
s
F
u
n
c
t
i
o
n
Loss Function
LossFunction ,找到最优的参数
θ
\theta
θ 使
L
o
s
s
F
u
n
c
t
i
o
n
Loss Function
LossFunction 最小: 求偏微分,更新参数, θ 1 = θ 0 ? η ? L ( θ 0 ) ? θ \theta^1=\theta^0-\eta\frac{\partial L(\theta^0)}{\partial\theta} θ1=θ0?η?θ?L(θ0)? 此处减号表示是沿着负梯度方向更新的,梯度是上升最快的方向,负梯度就是下降最快的方向。因为我们要使L达到最小,如果偏导数是正数,说明变量值增加,L变大,此时变量应该减小来使L减小,因此减去 η ? L ( θ 0 ) ? θ \eta\frac{\partial L(\theta^0)}{\partial\theta} η?θ?L(θ0)?;如果偏导数是负数,说明变量值增加,L变小,此时变量应该增加来使L减小,因此减去一个负数 η ? L ( θ 0 ) ? θ \eta\frac{\partial L(\theta^0)}{\partial\theta} η?θ?L(θ0)? 反复迭代得到 θ 2 , θ 3 , . . . \theta^2,\theta^3,... θ2,θ3,... 注:用上标0表示初始的一组参数,下表1和2表示初始的一组参数里面的两个组成(component) 二、一些细节1. 调整学习率Learning Rate
在一维和二维情况下进行可视化展现,蓝色即学习率过小的情况,绿色即学习率过大的情况: 更多维的情况我们是通过对Loss Function的可视化进行观察: 学习率的调参原则 :学习率随着参数更新越来越小(自适应adaptive)。因为刚开始的时候,离最优点通常是较远的,步伐可以大一点,经过多次迭代后会更加接近目标,所以应当减小学习率防止错过最低点。 ● Adagrad自适应梯度算法每一个参数的学习率都除以之前算出来的微分的均方根(RMS 将所有值平方求和, 求其均值, 再开平方)
σ t : \sigma^t: σt:过去所有的微分值相加求平均值,再开方。例如: w 1 ← w 0 ? η 0 σ 0 g 0 w^{1}\leftarrow w^0-\displaystyle{\frac{\eta^0}{\sigma^0}}g^0 w1←w0?σ0η0?g0?????????? σ 0 = ( g 0 ) 2 \sigma^0=\sqrt{(g^0)^2} σ0=(g0)2? w 2 ← w 1 ? η 1 σ 1 g 1 w^{2}\leftarrow w^1-\displaystyle{\frac{\eta^1}{\sigma^1}}g^1 w2←w1?σ1η1?g1?????????? σ 1 = 1 2 [ ( g 0 ) 2 + ( g 1 ) 2 ] \sigma^1=\sqrt{\frac{1}{2}[(g^0)^2+(g^1)^2]} σ1=21?[(g0)2+(g1)2]?
.
.
.
.
.
.
......
...... 而?? η t = η t + 1 , \eta^t=\displaystyle{\frac{\eta}{\sqrt{t+1}}}, ηt=t+1?η?, 因此, w t + 1 ← w t ? η ∑ i = 1 t ( g i ) 2 g t w^{t+1}\leftarrow w^t-\displaystyle{\frac{\eta}{\sqrt{\sum\limits_{i=1}^t(g^i)^2}}}g^t wt+1←wt?i=1∑t?(gi)2?η?gt 观察表达式可以看出,梯度下降的速度和两个因素有关,一个是学习率 η \eta η,在Adagrad中对其进行多一步的处理,另一个是梯度 g t g^t gt,而在此处出了一个矛盾 :之前一直说斜率/梯度越大,更新越快,而Adagrad中, g t g^t gt告诉我们微分值越大,参数更新得越快,而 η ∑ i = 1 t ( g i ) 2 \displaystyle{\frac{\eta}{\sqrt{\sum\limits_{i=1}^t(g^i)^2}}} i=1∑t?(gi)2?η? 告诉我们微分值越大,更新速度反而小。 有些文章认为:Adagrad是想研究gradient有多反差:How surprise it is?考虑过去每一次的gradient,使之相除,造成反差的效果。 更正式的解释:Larger gradient, larger steps? 以二次函数为例,其最低点的横坐标是 ? b 2 a -\frac{b}{2a} ?2ab?,任取一个 x 0 x_0 x0?,多大的步长能使其到最低点呢? —— ∣ x 0 + b 2 a ∣ = ∣ 2 a x 0 + b ∣ 2 a |x_0+\frac{b}{2a}|=\frac{|2ax_0+b|}{2a} ∣x0?+2ab?∣=2a∣2ax0?+b∣?,分子刚好就是一阶导数,注意此处a是大于0的,若微分值越大,也就离最低点越远。 我们想要到达最低点,最好就选取 ∣ 2 a x 0 + b ∣ 2 a \frac{|2ax_0+b|}{2a} 2a∣2ax0?+b∣?为步长。 但是这只有在含一个参数的情况下成立,若有多个参数则不成立。以两个参数的情况为例: 只考虑
w
1
w_1
w1?时,a的微分要大于b,a距离最低点也比b更远,这符合前面的描述; 但是跨参数比较时就不一定成立,例如a的微分值小于c,但是a可能离最低点更远。所以要进一步改进,这时考虑, ∣ 2 a x 0 + b ∣ 2 a \frac{|2ax_0+b|}{2a} 2a∣2ax0?+b∣?的分子其实就是二次函数的二阶导,应当将二次微分也考虑进来,最佳步长: 一 阶 偏 微 分 二 阶 偏 微 分 \frac{一阶偏微分}{二阶偏微分} 二阶偏微分一阶偏微分? 再回到Adagrad的参数更新表达式 w t + 1 ← w t ? η ∑ i = 1 t ( g i ) 2 g t w^{t+1}\leftarrow w^t-\displaystyle{\frac{\eta}{\sqrt{\sum\limits_{i=1}^t(g^i)^2}}}g^t wt+1←wt?i=1∑t?(gi)2?η?gt, η \eta η是个常量 g t ∑ i = 1 t ( g i ) 2 \displaystyle{\frac{g^t}{\sqrt{\sum\limits_{i=1}^t(g^i)^2}}} i=1∑t?(gi)2?gt? 分子是一阶微分,分母不是二阶微分,但是事实上是二阶微分的近似,且这样使得计算量小,因为一阶微分是我们本来就需要计算的,现在用这种方式对二阶微分进行近似,不需要进行额外的计算。 2. 更快的参数更新速度● SGD随机梯度下降法
SGD是随机选取一个 x n x^n xn ,根据参数在该样本中的表现计算Loss,注意SGD的式子中,保留了第二个 ∑ \sum ∑,这是表示对样本 x n x^n xn的所有feature进行计算。 SGD每次根据一个数据进行计算并更新参数,而不是考察所有数据后再更新,这样使得SGD计算速度很快。 与SGD相对的是Batch GD 批量梯度下降,我们一般说的GD就是BGD,将二者进行对比:
将二者结合即得到mini-Batch GD(小批量梯度下降),每次选取一定量的数据进行参数更新,相比BGD可以降低时间花费,相比SGD更加准确。 3. Feature Scaling特征归一化为什么?
怎么做? 上图所示为z-score方法的思想,注意归一化是对每一个属性分别归一化,对于一个属性,计算其取值的出平均值和方差,归一化后的属性值为 x ? μ σ \displaystyle\frac{x-\mu}{\sigma} σx?μ?,在实际应用中,是否归一化会对结果产生较大的影响,一般我们都会在数据预处理阶段进行归一化操作。 三、梯度下降的局限性对于非凸函数,并不一定能找到全局最优。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 10:37:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |