pytorch优化器:管理并更新模型中可学习参数的值,是的模型输出更接近真实标签。
导数:函数在指定坐标轴上的变化率 方向导数:指定方向上的变化率 梯度:一个向量,方向为方向导数取得最大值的方向
梯度下降: W i + 1 = W i − g ( W i ) W_{i+1}=W_{i}-g(W_{i}) Wi+1=Wi−g(Wi) y = f ( x ) = 4 ∗ x 2 y ′ = f ′ ( x ) = 8 ∗ x y=f(x)=4*x^2 \\ y'=f'(x)=8*x y=f(x)=4∗x2y′=f′(x)=8∗x
x 0 = 2 , y 0 = 16 , f ′ ( x 0 ) = 16 x 1 = x 0 − f ′ ( x 0 ) = 2 − 16 = − 14 x 1 = − 14 , y 1 = 784 , f ′ ( x 1 ) = − 112 x 2 = x 1 − f ′ ( x 1 ) = − 14 + 112 = 98 , y 2 = 38416.... x_{0}=2,y_0=16,f'(x_0)=16 \\ x_1=x_0-f'(x_0)=2-16=-14 \\ x_1=-14,y_1=784,f'(x_1)=-112 \\ x_2=x_1-f'(x_1)=-14+112=98,y_2=38416 .... x0=2,y0=16,f′(x0)=16x1=x0−f′(x0)=2−16=−14x1=−14,y1=784,f′(x1)=−112x2=x1−f′(x1)=−14+112=98,y2=38416....
可以看出,如果没有学习率,损失值并不会收敛,很容易梯度爆炸 修正之后的公式: W w + 1 = W i − L R ∗ g ( W i ) W_{w+1}=W_{i}-LR*g(W_i) Ww+1=Wi−LR∗g(Wi)
学习率(learning rate)控更新的步伐
Momentum(动量、冲量):结合当前梯度与上一次更新信息,用于当前更新
指 数 加 权 平 均 : v t = v t − 1 + ( 1 − β ) ∗ θ t 指数加权平均:v_t=v_{t-1}+(1-\beta)*\theta_t 指数加权平均:vt=vt−1+(1−β)∗θt
个人看法:可以看到这个式子认为,100这个点对应的更新量是和之前的所有点的值有关,只不过里100这个点越近的点,权值越大,有点类似于自控原理里面的主导极点 动量值通常取0.9
1.optim.SGD
2.推荐使用SGD和Adam