---
# System prepended metadata

title: 什麼是梯度（Gradient）
tags: [機器學習, 數據分析, DL, 深度學習, AI]

---

# 什麼是梯度（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](https://hackmd.io/_uploads/ryNYNZvlbg.png)

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)

