ML Lecture 3-1: Gradient Descent



Gradient Descent Theory

假設今天function有兩個參數,這裡用 {θ1, θ2} 表示

先隨機選一組 θ(上標表示第幾次更新的參數組,下標表示該參數組中的第幾個component

$$ \text{Randomly start at }\theta^0=\begin{bmatrix}{\theta^0_1}\\[6pt]{\theta^0_2}\end{bmatrix} $$

更新一次:

$$ \theta^1= \begin{bmatrix} \theta^1_1 \\[6pt] \theta^1_2 \end{bmatrix}=\begin{bmatrix} \theta^0_1 \\[6pt]\theta^0_2 \end{bmatrix}-\eta\begin{bmatrix} \frac{{\partial}L(\theta^0_1)}{\partial\theta_1}\\[8pt] \frac{{\partial}L(\theta^0_2)}{\partial\theta_2}\end{bmatrix} $$

更新兩次:

$$ \theta^2= \begin{bmatrix} \theta^2_1 \\[6pt]\theta^2_2 \end{bmatrix}=\begin{bmatrix} \theta^1_1 \\[6pt]\theta^1_2 \end{bmatrix}-\eta\begin{bmatrix} \frac{{\partial}L(\theta^1_1)}{\partial\theta_1}\\[10pt] \frac{{\partial}L(\theta^1_2)}{\partial\theta_2}\end{bmatrix} $$

上面兩個式子也可以看成

$$ \theta^1=\theta^0-\eta{\nabla}L(\theta^0) $$

$$ \theta^2=\theta^1-\eta{\nabla}L(\theta^1) $$

如同前面提過,把兩個偏微分值擺成一個向量,就是 Gradient(∇)

而gradient(∇) 這個向量可以看成 Loss 的等高線的法線方向,因此,乘上負的 learning rate 就像是往反方向走,同時放大一個固定長度(η)

$$ {\nabla}L=\begin{bmatrix} \frac{{\partial}L}{{\partial}w} \\[6pt] \frac{{\partial}L}{{\partial}b} \end{bmatrix} $$

因此,learning rate (η) 的調整很重要

Tuning your learning rates

但是,learning rate 是一個固定的常數,這樣會在學習一開始速度很慢達到error最低處,後期又變太快,所以要找個方法可以自動調整learning rate ,或是稱作 Adaptive Learning Rates

一個簡單的方法是讓learning rate 隨著時間減少:

這個方法叫做 Vanilla Gradient descent

$$ \eta^t=\frac{\eta}{\sqrt{t+1}} $$