# 什麼是梯度(Gradient) [TOC] 大家好我是 LukeTseng!近期學習機器學習跟深度學習時,遇到一些不懂的名詞,於是我就想將這些名詞各別製作一個筆記彙整起來,以便我日後學習、複習再次閱覽。如果文章有誤煩請各位協助指出,謝謝您點入本篇文章!接下來讓我們開始吧。 ## Loss Function(損失函數) 損失函數顧名思義就是告訴你這個模型他跑出來的預測數值,與實際數值有多差,若損失函數出來的數值越小,表示這個模型預測數值與實際數值相近(越小越好就對了)。 這邊假設有一個損失函數長這樣子: $$L(x) = (x - a)^2$$ 當中 $x$ 是輸入值,為模型的參數值,而 $a$ 為目標值(ground truth)。 在訓練模型的時候,要怎麼知道輸入值 x 該怎麼調整?這時候就需要梯度(gradient)的概念了。 ## 梯度(gradient) 這邊假設 a = 0,則這樣子 $L(x)$ 就等於 $L(x) = x^2$ 。 而所謂的梯度在一維情況,也就是只有一元的變數時,他就是所謂的切線斜率,也就是函數的變化方向跟速度。 在機器學習中最常見的優化方法就屬 Gradient descent(梯度下降法),首先第一步就是要挑選 x 的初始值是多少,不過先看到以下二次函數的圖形:  Image Source:https://www.researchgate.net/figure/Graph-of-y-x-2-the-equation-for-a-parabola_fig1_225666233 假設 x 的初始值是 -2 好了,就隨便選。接著再對 $L(x) = x^2$ 求導: $\frac{dL}{dx}|_{x=-2} = -4$ 此時你會發現它的切線斜率是負的,可以想像如果是在 x = -2 時的切線上往左走的話,那它就逐漸遠離我們的目標值 $a = 0$ ,反之,往右走才會更加靠近對吧。所以我們要做的事情是讓這個 x 值變大,直到靠近 $a = 0$ 為止。 那如果切線斜率是正的呢?那就把 x 的值給減少。 整理一下: - 切線斜率 > 0:x 值要增加。 - 切線斜率 < 0:x 值要減少。 梯度下降法會透過以上的規則不斷的求導取值,讓 x 值趨近於我們的目標值。 而這個東東可以寫成一個公式,長這樣: $$w_{t + 1} = w_t - \eta \frac{dL(w_t)}{dw}$$ 至於 $\eta$ 是什麼呢,他唸作 eta,是小寫的 h,在機器學習領域叫做 learning rate(學習率)。learning rate 是決定要走多少步的參數,也就是每次要讓 x 增加或減少多少,如果越大那他就會學習得越快,但是這會有個風險,容易在最小值附近左右亂跳、震盪,甚至直接發散,損失忽高忽低降不下來。以這個二次函數做例子,假設你讓 learning rate 是 4,然後 x 在 -2 開始,那他就會在 x = -2, x = 2那邊跳來跳去。 然後 learning rate 前面有一個負號,仔細想一下,假設求得的切線斜率是 < 0 的,那 x 值要做增加對吧,所以給他加上一個負號讓他變正的,反之亦然。 再來 $w_t$ 表示目前的參數值, $w_{t + 1}$ 是下一個參數值, $w_t$ 要將計算完的 w 值給下一個參數 $w{t + 1}$ 。 ## 兩參數的梯度 假設目前的情況是兩個參數: $L(x, y)$ 。 而兩參數的梯度下降法做法跟一個參數的基本上完全相同,先取 $x_0, y_0$ 作為初始值,之後再對 $x_0, y_0$ 分別做偏微分: $$\frac{\partial L}{\partial x} |_{x=x_0,y=y_0} ,\frac{\partial L}{\partial y} |_{x = x_0, y=y_0}$$ 進一步可以寫成: $$x_{t + 1} = x_t - \eta \nabla L(x_t)$$ 當中 $\nabla L$ 就是 gradient,只是把一堆偏微分寫成向量(vector)的形式而已。 所以二維的梯度就是代表著一個向量。 ## 參考資料 [Hung-yi Lee | ML Lecture 1: Regression - Case Study - YouTube](https://www.youtube.com/watch?v=fegAeph9UaA&list=PLJV_el3uVTsPy9oCRY30oBPNLCo89yu49&index=4) [[机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)_机器学习的梯度概念-CSDN博客](https://blog.csdn.net/walilk/article/details/50978864) [【Day 21】 Google ML - Lesson 7 - 梯度下降法 (Gradient Descent)介紹,使用「梯度下降法」決定ML模型中參數修正的「方向」與「步長(step size)」 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天](https://ithelp.ithome.com.tw/articles/10218980)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.