Chapter 2 Gradient Descent

假设有两个参数\left \{ \theta _{1},\theta _{2} \right \},随意取初值\theta ^{0}=\begin{bmatrix} \theta _{1}^{0}\\ \theta _{2}^{0} \end{bmatrix},因此就有\begin{bmatrix} \theta _{1}^{1}\\ \theta _{2}^{1} \end{bmatrix}=\begin{bmatrix} \theta _{1}^{0}\\ \theta _{2}^{0} \end{bmatrix}-\eta\begin{bmatrix} \frac{\partial L(\theta _{1}^{0})}{\partial \theta _{1}}\\ \frac{\partial L(\theta _{2}^{0})}{\partial \theta _{2}} \end{bmatrix}

\begin{bmatrix} \theta _{1}^{2}\\ \theta _{2}^{2} \end{bmatrix}=\begin{bmatrix} \theta _{1}^{1}\\ \theta _{2}^{1} \end{bmatrix}-\eta\begin{bmatrix} \frac{\partial L(\theta _{1}^{1})}{\partial \theta _{1}}\\ \frac{\partial L(\theta _{2}^{1})}{\partial \theta _{2}} \end{bmatrix}\theta _{0}

然后令偏导值为\bigtriangledown L(\theta )=\begin{bmatrix} \frac{\partial L(\theta _{1})}{\partial \theta _{1}}\\ \frac{\partial L(\theta _{2})}{\partial \theta _{2}} \end{bmatrix},上式可以变为:\theta ^{1}=\theta ^{0}-\eta \bigtriangledown L(\theta ^{0}),\theta ^{2}=\theta ^{1}-\eta \bigtriangledown L(\theta ^{1})

如下图所示,梯度下降的方向就是损失函数的等高线的法线方向。先设置开始点\theta ^{0},再计算\theta ^{0}的梯度方向,移到\theta ^{1};再计算\theta ^{1}的梯度方向,移到\theta ^{2};以此类推。

Tip 1:Tuning your learning rates(小心得调整学习率)

 一般而言,当参数超过三个时,学习率带来的损失函数的变化是很难描述的。

学习率对于损失函数的影响:当学习率很大的时候,每更新一次,损失函数变化很大;当学习率小的时候,每更新一次,损失函数变化就小。

合适的学习率——事实上,开始时,我们距离目的地很远,所以我们会使用较大的学习率;经历多次更新后,我们距离目的地比较近,所以我们会降低学习率。学习率不能一刀切,我们要给不同的参数不同的学习率。

\eta ^{t}=\frac{\eta }{\sqrt{t+1}},g^{t}=\frac{\partial L(\theta ^{t})}{\partial w},其中w是一个参数。

Vanilla Gradient descentw^{t+1}\leftarrow w^{t}-\eta ^{t}g^{t}

Adagradw^{t+1}\leftarrow w^{t}-\frac{\eta ^{t}}{\sigma ^{t}}g^{t}(将每个参数的学习率(\eta ^{t})除以其先前导数的均方根(\sigma ^{t}))

例如:

w^{1}\leftarrow w^{0}-\frac{\eta ^{0}}{\sigma ^{0}}g^{0},\sigma ^{0}=\sqrt{(g^{0})^{2}}

w^{2}\leftarrow w^{1}-\frac{\eta ^{1}}{\sigma ^{1}}g^{1},\sigma ^{1}=\sqrt{\frac{1}{2}\left [ (g^{0})^{2}+(g^{1})^{2} \right ]}

......

w^{t+1}\leftarrow w^{t}-\frac{\eta ^{t}}{\sigma ^{t}}g^{t},\sigma ^{t}=\sqrt{\frac{1}{t+1}\sum_{i=0}^{t}(g^{i})^{2}}

因为\eta ^{t}=\frac{\eta }{\sqrt{t+1}}

 所以可以化简为:w^{t+1}\leftarrow w^{t}-\frac{\eta }{\sqrt{\sum_{i=0}^{t}(g^{i})^{2}}}g^{t},其中\sum_{i=0}^{t}(g^{i})^{2}可以造成反差的效果!

实际上,无论是Vanilla Gradient descent还是Adagrad,从g^{t}可以看到:梯度越大,步长越长。

ps:步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。

 而最佳的步长我们可以从图中看出来,等于一阶导数的绝对值/二阶导数。

Tip 2:Stochastic Gradient Descent(随机梯度下降)

对比梯度下降的\theta ^{i}=\theta ^{i-1}-\eta \bigtriangledown L(\theta ^{i-1}),随机梯度下降的\theta ^{i}=\theta ^{i-1}-\eta \bigtriangledown L^{n}(\theta ^{i-1})下降得更快!

Tip 3: Feature Scaling(特征缩放)

可以通过参数前的实数来 不同的特征具有相同的缩放比例。

 对于每个维度i,均值为m_{i},标准差为\sigma _{i}

将每个维度的值进行标准化x_{i}^{r}\leftarrow \frac{x_{i}^{r}-m_{i}}{\sigma _{i}},使得所有维度的均值变为1,标准差变为0。

Formal Derivation(形式化推导)

每次更新参数时,我们并不会获得使得L(\theta )变小的\theta。但是加入给了一个点,我们可以很容易找到在它附近更小的点,以此类推。

 泰勒公式:

假如x接近x_{0}

 

扩展到多参数的情况:

 因此将泰勒公式运用于形式化推导中可得:可以看出,当(\theta _{1}-a)^{2}+(\theta _{2}-b)^{2}\leq d^{2}可以使得损失函数变小。

 令\theta _{1}-a=\bigtriangleup \theta _{1},\theta _{2}-b=\bigtriangleup \theta _{2}

因此为了使得损失函数最小:

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值