梯度下降
θ
∗
\theta^*
θ∗=
arg
m
i
n
θ
\arg min_\theta
argminθL(
θ
∗
\theta^*
θ∗)xuexi
L:损失函数
θ
∗
\theta^*
θ∗:参数
现在假设
θ
\theta
θ有两个变量,分别为{
θ
1
\theta_1
θ1,
θ
2
\theta_2
θ2}
随机设定
θ
0
\theta^0
θ0=
(
θ
1
0
θ
2
0
)
\begin{pmatrix}\theta^0_1\\\theta^0_2 \end{pmatrix}
(θ10θ20)
∇
\nabla
∇L(
θ
\theta
θ)=
(
φ
L
(
θ
1
)
/
φ
θ
1
φ
L
(
θ
2
)
/
φ
θ
2
)
\begin{pmatrix}\varphi L(\theta_1)/\varphi \theta_1\\\varphi L(\theta_2)/\varphi \theta_2 \end{pmatrix}
(φL(θ1)/φθ1φL(θ2)/φθ2)
用图像进行解释:![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513161822612.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RpYW50aWFuNzk5Ng==,size_16,color_FFFFFF,t_70
学习率
但是学习率的选取比较麻烦,而且需要对参数的学习率在实验过程中进行变化,刚开始可以大一些,但随着损失函数的下降,要适当的把学习率减小,以下介绍一种可以自行调整学习率的方法:
adagrad
方法
其中的一个小疑问:
答案使因为它要解决一个反差的情况
还有一种解释是以下:
你从
x
0
x_0
x0想直接到最低点,最好的步长是以上所述,但是该情况仅适用于函数中仅有一个参数变量的,如果多个参数在函数中,这种方法就不可行了。
比如在上述图中,右边第一个图,在
w
2
w_2
w2固定的情况下,来考虑
w
1
w_1
w1的变化,取两个不一样的点;在第二个图中,在
w
1
w_1
w1固定的情况下,来考虑
w
2
w_2
w2的变化,取两个不一样的点;你会发现a和c相比,虽然a的微分比c的小,但是a离最低点是比较远的。
所以跨参数进行一次微分比较是不可行的。
最好的步长的分母是与二次微分有关的,即:
而adagrad就是想要达到这样的效果
Stochastic Gradient Descent {另一种方法}
上述式子的损失函数是对所有实验数据进行的。
上面这个式子是只对一个实验数据进行的。该实验数据或者顺序选取,或者随机选取都可以。
归一化
上述是进行标准化的一个图。