之前一直就只知道朝着负梯度的方向走就能降Loss,却不知道是为什么,今天看了人工智能的课才明白了。
首先假设损失函数f(x)f(x)f(x),下一步xxx的移动方向与距离Δx\Delta{x}Δx,则有移动后的损失f(x+Δx)f(x+\Delta{x})f(x+Δx),我们来思考怎样能让损失降低,也就是使得f(x+Δx)<f(x)f(x+\Delta{x})<f(x)f(x+Δx)<f(x)
首先对f(x+Δx)f(x+\Delta{x})f(x+Δx)泰勒展开:

将f(x)f(x)f(x)移到左边可得:

其中,∇f(x)\nabla{f(x)}∇f(x)为f(x)f(x)f(x)的一阶导数
其中,左边也就是移动前后的损失差值
目标是使得差值为负,且尽可能小,也就是损失下降得越多越好
也即希望右边<0<0<0,且越小越好
我们看右边:
两个向量相乘=模相乘*cosθcos\thetacosθ

所以argminΔxf(x+Δx)−f(x)=argminΔx∥∇f(x)∥∥Δx∥cosθ\mathop{\arg\min}\limits_{\Delta{x}}f(x+\Delta{x})-f(x)=\mathop{\arg\min}\limits_{\Delta{x}}\left \| \nabla{f(x)} \right \|\left \| \Delta{x} \right \|cos\thetaΔxargminf(x+Δx)−f(x)=Δxargmin∥∇f(x)∥∥Δx∥cosθ
其中,模必>=0>=0>=0,因此,为了使其为负且最小化,cosθcos\thetacosθ为负且最小,而cosθcos\thetacosθ就是参数变化的方向(Δx\Delta{x}Δx和梯度∇f(x)\nabla{f(x)}∇f(x)方向的夹角)。
要使得cosθcos\thetacosθ为负且最小,即当θ=π\theta=\piθ=π时,取最小值cosπ=−1cos\pi=-1cosπ=−1
即当Δx\Delta{x}Δx与∇f(x)\nabla{f(x)}∇f(x)的夹角为π\piπ,即取负梯度方向时,右边能取到最小值。
最终,
∥Δx∥\left \| \Delta{x} \right \|∥Δx∥是一个标量,x移动的大小,我们可以看成学习率α\alphaα,最终,上式变为:

也就是说,取梯度的负方向,再根据学习率调整步长,就能降低损失
本文揭示了负梯度法在优化损失函数中的核心原理,通过泰勒展开和向量内积解释了沿梯度负方向移动能最小化损失。关键在于找到最小夹角,即负梯度方向,结合学习率调整步长。
2772

被折叠的 条评论
为什么被折叠?



