Loading

ML From Hung Yi Lee --- Gradient Descent #3

Gradient Descent

Principle part

  • 我们要做的是找到一组函数的参数\(w, b\)使得\(f^*\)\(L(f)\)这个损失函数上的值最小即就是:

  • \[\theta = argminL(\theta) \\ L: loss \ function; \ \theta : parameters \]

  • 对于参数更新:

  • \[\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)}{\partial (\theta_1)}\\ \frac{\partial L(\theta_2)}{\partial (\theta_2)}\end{bmatrix} \]

    如果说:

    \[\nabla L(\theta) =\begin{bmatrix}\frac{\partial L(\theta_1)}{\partial (\theta_1)}\\ \frac{\partial L(\theta_2)}{\partial (\theta_2)}\end{bmatrix} \]

    这就是我们说的\(Gradient\ Descent\),是空间的一个向量,是与等高线相切的一个向量。

  • 那么简化成下面的式子

  • \[\theta^1 = \theta^0 - \eta\nabla L(\theta^0) \]

  • 如此连续就可以得到梯度下降的最终的收敛效果。

Tip 1: 小心地调learning rate

image.png

  • 由于固定的\(learning\ rate\)会导致无法收敛,那么我们希望模型可以自动更新\(Learning\ Rate\)

Adagrad调整\(Learning\ Rate\)

每一个不同的参数给与完全不同的\(Learning\ Rate\)

  • 一般的
    • \(w^{t+1} \leftarrow w^t - \eta ^ t \nabla L(w^t)\)
  • \(Adagrad\)
    • \(w^{t + 1} \leftarrow w^t - \frac{\eta^t}{\sigma ^ t}\nabla L(w^t)\)
  • 例子
    • \(w^{1} \leftarrow w^0 - \frac{\eta^0}{\sigma ^ 0}\nabla L(w^0)\)
      • \(\sigma ^0 = \sqrt{(\nabla L(w^0))^2}\)
    • \(w^{2} \leftarrow w^1 - \frac{\eta^1}{\sigma ^ 1}\nabla L(w^1)\)
      • \(\sigma^1 = \sqrt{\frac{(\nabla L(w^0))^2 + (\nabla L(w^1))^2}{2}}\)
    • ......
    • \(w^{t+1} \leftarrow w^t -\frac{\eta ^t}{\sigma ^t}\nabla L(w^t)\)
      • \(\eta^t = \frac{\eta}{\sqrt{t + 1}}\)
      • \(\sigma^t = \sqrt{\frac{(\nabla L(w^0))^2 + (\nabla L(w^1))^2 + \dots + (\nabla L(w^t))^2}{t + 1}}\)
  • 那么梯度下降更新为
    • \(\frac{\eta ^ t}{\sigma ^ t} = \frac{\eta}{\sqrt{\sum_{i=1}^t\nabla L(w^t)^2}}\)

感觉好像微分越大,离最低点的距离就越大

  • 可以发现,不同的\(valley\) 可能会与我们想的不同,第二个图的微分很大,但是相比于第一个图,却离得更近了。
  • \(Adagrad\)\(\sqrt{\sum_{i=1}^t(\nabla L(w^t)^2)}\)蕴含了二阶微分的式子,所以相比来说更加的合理\((\frac{First\ derivative}{Second\ derivate})\).

Tip 2:Stochastic Gradient Descent

\[L = \sum_n(\hat y^n - (b + \sum w_ix_i^n))^2 \]

  • \(Gradient Descent\) \(\theta ^ i = \theta^{i-1} - \eta \nabla L(\theta^{i-1})\)

  • \(Stochastic Gradient Descent\)

  • \[L^n = (\hat y^n - (b + \sum w_ix_i^n))^2 \]

  • 一步一更新不见得会比summation所有的差。

Tip3 : Feature Scaling

  • \(Gradient\ Descent\) 开始的位置我们并不知道,如果走的是左图,那么会相当困难去达到\(Global\ Min\),相比而言,右图的不论从哪个路线走都会相对容易。

  • 这就体现了放缩的重要性。

Why Gradient Descent work ?

数学

  • 目标: 让\(Loss\ Function\)越来越小

  • Taylor Series
    • 如果一个函数在\(x=x_0\)处有\(n\)阶导数。

\[h(x) = \sum_{k=0}^{\infin}\frac{f^{k}(x_o)}{k!}(x-x_0)^k \]

\(x 非常靠近 x_0\)的时候

\[h(x) \approx f(x) + f'(x)(x-x_0) \]

  • 对于多个变元的Taylor Series

  • 如果靠的非常进的话:

  • 回到Gradient Descent

  • 这就是\(Loss \ Function\)的一个拟合

  • 首先\((\theta_1, \theta_2)\)是在一个圈里面的,也就是上述的\((\theta_1 - a)^2 + (\theta_2 - b)^2 \leq d^2\)

  • 由于上述的式子我们把\(s, u, v\)认为是常数。

\[u(\theta_1 -a)+v(\theta_2 -b) = \begin{bmatrix}\theta_1 -a & \theta_2 -b\end{bmatrix}\begin{bmatrix}u \\ v\end{bmatrix} \]

  • 我们可以理解为这是两个向量的乘积,
  • 如何让这个变的最小呢,显然只有当这两个向量完全反向的时候就可以成立

那么

\[\begin{bmatrix}\theta_1 -a \\ \theta_2 -b\end{bmatrix} = -\eta\begin{bmatrix}u \\ v\end{bmatrix} \]

那么

\[\begin{bmatrix}\theta_1 \\ \theta_2\end{bmatrix} = \begin{bmatrix}a \\ b\end{bmatrix} + \begin{bmatrix}\theta_1 -a \\ \theta_2 -b\end{bmatrix}=\begin{bmatrix}a \\ b\end{bmatrix} -\eta\begin{bmatrix}u \\ v\end{bmatrix}=\begin{bmatrix}a \\ b\end{bmatrix} - \eta\begin{bmatrix}\frac{\partial f}{\partial x} \\\frac{\partial f}{\partial y}\end{bmatrix}=\begin{bmatrix}a \\ b\end{bmatrix} - \eta\nabla L(\theta) \]

posted @ 2021-03-12 22:01  MushRain  阅读(90)  评论(0)    收藏  举报