2024-09-28 ML


目錄


1. Where does the error come from?

介紹 Bias 與 Variance 各自的意義,需了解兩者的差別,才能回頭調整 Model,本節課程提供了處理不同 Error 的方式。

1.1 Review

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

  • x 軸:為模型
    f
    的次方項
  • y 軸:為 Loss 大小

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
越複雜的模型不一定總是有好的成效

1.2 樣本變異數 & 有偏估計值

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

  • 由於樣本變異數是
    xN
    減去樣本平均數,所以算出來的樣平變異數期望值不會等於母體變異數
    σ2
    ,稱為有偏估計值

1.2.1
N1Nσ2
推導過程

要推導

N1Nσ2 這個有偏估計公式,我們需要從樣本變異數
s2
的期望值(期望值反映統計量的平均行為)來進行推導。

設定
  • 母體的平均值:
    μ
  • 母體的變異數:
    σ2
  • 樣本的平均值:
    m=1Nn=1Nxn
  • 樣本變異數(未修正):
    s2=1Nn=1N(xnm)2

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
講義的樣本變異數是 s,這邊是用
s2

步驟 1:樣本變異數的分解
  • 我們知道
    s2
    是基於樣本平均值
    m
    計算的樣本變異數:

s2=1Nn=1N(xnm)2

  • 但我們希望推導出這個樣本變異數的期望值,即
    E[s2]
    ,來檢查它相對於母體變異數
    σ2
    是否有偏差。
步驟 2:
xnm
的分解
  • 將每個樣本值和樣本平均值的偏差
    (xnm)2
    分解如下:

xnm=(xnμ)(mμ)

  • 因此:

(xnm)2=((xnμ)(mμ))2

  • 使用平方展開公式:

(xnm)2=(xnμ)22(xnμ)(mμ)+(mμ)2

步驟 3:期望值運算
  • 現在,我們來計算樣本變異數的期望值

    E[s2]

  • 首先,對每項取期望值:

    1. 第一項:

      E[(xnμ)2]
      根據母體變異數的定義,我們有:
      E[(xnμ)2]=σ2

    2. 第二項:

      E[2(xnμ)(mμ)]
      由於
      m
      xn
      的樣本平均值,它的期望是
      μ
      ,所以
      E[mμ]=0
      ,因此這一項的期望值為 0。

    3. 第三項:

      E[(mμ)2]
      m
      是樣本平均值,其期望值是
      μ
      ,而
      m
      的變異數為:
      E[(mμ)2]=σ2N

步驟 4:將各項期望值代入
  • 將期望值代入
    E[s2]
    的公式:

E[s2]=1Nn=1N(E[(xnμ)2]2E[(xnμ)(mμ)]+E[(mμ)2])

  • 簡化後得到:

E[s2]=1Nn=1N(σ20+σ2N)

  • 因此,我們得到:

E[s2]=σ2σ2N

  • 這就推導出有偏估計的期望值公式:

E[s2]=N1Nσ2

結論
  • 因此,樣本變異數
    s2
    的期望值是
    N1Nσ2
    ,這意味著它是有偏的,因為其期望值比母體變異數
    σ2
    小。

1.3 Bias

1.3.1 什麼是 Bias?

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →
Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

  • Bias 就是
    f¯
    f^
    的距離
  • 大的 Bias:距離
    f^
    (靶心)有一段距離
  • 小的 Bias:
    f¯
    (平均值)與
    f^
    (靶心)的距離是接近的(暫不考慮分散的狀況)

1.3.2 複雜度不同的模型比較

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
曲線的涵義
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
紅色曲線:例如抓十次寶可夢可以找出一個
f
,此處紅色曲線有 5000 條,代表做了 5000 次實驗。
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
藍色曲線:5000 次實驗的平均。
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
黑色曲線:真正的 True Function
f^
(靶心)。

  • 簡單的模型(一次式):雖然分布集中,但它的 Bias 比較大
  • 複雜的模型(五次式):每一次找出的
    f
    皆不一樣,但它的 Bias 其實比較小
  • 如果使用一個範圍來表示 Function Set,代表每一次的 Function 只能從這個範圍找出來
    • 簡單的模型可能根本就未包含 Target
    • 複雜的模型雖然涵蓋了 Target,但可能無法找到 Target 在哪裡 > 因為給的訓量資料不夠多,所以每次找出的
      f
      都不一樣
      Image Not Showing Possible Reasons
      • The image was uploaded to a note which you don't have access to
      • The note which the image was originally uploaded to has been deleted
      Learn More →

1.4 Bias v.s. Variance

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

  • 簡單模型:Bias 大,但 Variance 比較小
  • 複雜模型:Bias 小,但 Variance 比較大
  • Overfitting v.s. Underfitting
    • 如果 Error 來自 Variance,代表 Overfitting
    • 如果 Error 來自 Bias,代表 Underfitting
  • 調整改善模型之前,需要先知道是 Bias 或是 Variance 哪個比較大,以確認 Error 來自哪裡

1.4.1 如何改善 Bias 過大的情況?

在訓練資料上表現不好/無法 Fit,代表 Bias 過大 -> Underfitting
  • 重新設計 Model
    • 重新寫 Model 的公式,加入更多的 Features
    • 讓 Model 更複雜,考慮更多次
    • Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
      蒐集更多資料並不會有幫助,因為本來就偏移靶心(Function Set 的範圍沒有涵蓋到 Target),所以即便有更多資料也不會改善

1.4.2 如何改善 Variance 過大的情況?

在訓練資料上表現很好,但測試資料表現差,代表 Variance 過大 -> Overfitting    
  • 增加資料是一個有效控制 Variance 的方法,且不會影響到 Bias
    • 但在實際面上可能無法蒐集到更多資料,要解決這方面的問題,可生成假的訓練資料。例如:
      • 根據對問題的理解,製造更多的 Data
      • 圖片角度轉移、翻轉等
      • 男女音頻轉換、加入雜訊等
  • 正則化(Regularization)
    image
    參考 24-09-21 ML
    • 在 Loss Function 裡再加入一個 Term(紅框處),使找出的曲線越平滑越好
      image
    • 加了正則化之後,就會強迫所有曲線變得比較平滑(如右圖),但因為調整了整個 Function Space,變成只聚焦在比較平滑的曲線,所以可能無法涵蓋到
      f^
      (靶心) ,進而傷害到 Bias
    • 調整權重的時候,需要取得 Variance 與 Bias 的平衡

1.5 Model Selection

  • 如何選擇 Model?
    需在 Bias 與 Variance 取得平衡,讓 Variance 夠小,Bias 也夠小,兩個合起來後,可以得出最小的 Testing Data Error。
  • Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
    選擇 Model 時,建議不要利用 Testing Set 得出的 Error 來作為模型選擇的依據,因為會同時把 Testing Set 自己的 Bias 也連帶考慮進去,最後得出的 Error 無法實際反映真實的資料,得出大於 Testing Set 的 Error。
  • 如何解決?使用 Cross Validation 或 N-fold Cross Validation。
    • Cross Validation
      Image Not Showing Possible Reasons
      • The image was uploaded to a note which you don't have access to
      • The note which the image was originally uploaded to has been deleted
      Learn More →
      • 將 Training Set 分為兩組:Training Set 與 Validation Set。
      • 利用 Training Set 來訓練模型,再根據 Validation Set 的表現來選擇模型,接著就可直接應用在 Testing Set 上。
      • 如果覺得 Training Data 變少,可以選擇模型之後,再將全部的 Training Data(包含Training Set 與 Validation Set)重新投入該模型的訓練。
      • 如此,即使 Error 會相對於其他模型較大,但它才可以真正反映 Real Data 的 Error。
    • N-fold Cross Validation
      Image Not Showing Possible Reasons
      • The image was uploaded to a note which you don't have access to
      • The note which the image was originally uploaded to has been deleted
      Learn More →
      • 如果擔心 Validation Set 有奇怪的Bias,也可以換做 N-fold Cross Validation。
      • 將 Training Set 分成多種群組,例如 3-fold 的話,代表將 Training Set 分成三份。
      • 分別算出各種分組的 Error 平均,比較不同模型的平均 Error 結果,接著選出最好的表現,可再使用完整的 Training Set 到該模型上,接著再應用於 Testing Set。
    • 原則就是不要太在意 Testing Set / Public Set 的分數,盡量少根據它去調整自己的 Model,如此 Private Set 與 Public Set的差距才能是最小。

2. Gradient Descent

0928 DL-Gradient Descent

梯度下降,身為在機器學習的第三個步驟中,主要是用來優化第二步驟(Loss Function)的演算法,每次的迭代更新利用計算參數對成本函數的偏微分乘上學習效率,一直到迭代結束。

image

我們可以將上次投影片提到的loss function:

𝑤,𝑏=𝑎𝑟𝑔min𝑤,𝑏𝐿(𝑤,𝑏)

其方程式內的

w,b 參數改成
θ1,𝜃2
,而成為下列方程式:
𝜃=argmin𝜃𝐿(𝜃)

image

每次進行迭代,

𝜃=𝜃𝜂𝛻𝐿(𝜃)

Note

梯度的方向

  • Gradient方向為Loss的等高線法線方向
  • 梯度可以被視為多變量函數的「斜率」。對於多元函數,梯度是一個向量,表示在每個自變量方向上的變化率。
    image

    舉例此方程式為:
    y=x2

    分別在
    x1=2
    x2=1
    微分可以得到其斜率
    m1=4
    m2=2

    因此以上圖來說,紅色斜率方向為負,綠色斜率方向為正,而此概念可以套用在梯度上。

梯度下降需考慮其他事項

learning rate

學習效率的設置:

image

過小(藍線)

  • 需更多次的迭代才能到最佳解

過大(綠線)(黃線)

  • 可能永遠無法到達最佳解

因為只有在一維或二維可以進行可視化,因此在三維以上情況我們可以藉由右圖"參數與Loss的變化"來可視化其結果。每次在進行計算及更新時,應需繪製"參數與Loss的變化圖"才能確保清楚每次更新情況如何。

Note

右圖綠色線段因為learning rate過大,前面下降太快因此卡住在半陡坡上無法到谷底,因此到中間變趨近平滑無法在下降。
這邊附上learning rate補充圖示及介紹可以更清楚看到learning rate的變化情形

image

通常在Learnig rate會在我們每次更新參數時越來越接小,因為每次更新我們會越來越接近最低點。而為了確保我們能夠盡量在最後停在最低點,因此需要動態調整學習效率。

動態調整學習效率:

  • 隨著每次的迭代逐漸變小
  • 初始的時候成本函數較大,需要較大的學習效率來加速收斂
  • 幾次迭代之後,逐漸調降學習效率,讓它可以順利收斂在最低點
  • 最好的方式是每一個不同的參數給它不同的學習效率

我們可以假設Learning rate為一個獨立的函數,他是根據你每次進行更新參數而進行變化,其函數假設如下:

𝜂t=𝜂/t+1
其含義為在第t次update參數時(t+1代表迭代次數),原本的Learning rate會除以(
t+1
)來做為當次的新的Learning rate。而這樣就可達到當你參數更新的次數越多,其Learning rate就會跟著減少。
如下圖所示:
image

但是只有如此,還不夠精準地達到目的,我們還需要根據不同的參數來給予不同的Learning rate,因此便有Adagrad的方式產生:


Adagrad

假設我們的其中一個參數為Loss function內的

𝑤,他在第t次更新時其變化如下:

image

當在第

t 次更新時,根據原上述假設 Learning rat e也會跟著更新,因此為
ηtgt
(此
gt
為先原先公式內的
L(\thetatt)
)。

Tip

ηt=ηt+1
gt=L(θt)w

而在 Adagrad 我們則更新成如下:

image
從上面的更新,我們可以得知新的訊息,
𝜎𝑡
是指過去所有微分的值(指梯度值)的 root mean square(平方平均數)
image

因此對每個
w
參數而言,都可以有不同的學習效率

Tip

t+1代表迭代次數
root mean square:平方平均數,亦稱方均根(參考維基百科)

Important

每個Learning rate都除以算出來的微分值(指梯度值)的root mean square(平方平均數)

以上圖為例:假設你初始的值是

w0,計算在
w0
那點的微分,寫作
g0
,它的 learning rate 是
η0σ0
η0
是一個時間獨立的參數,
σ0
它是過去算過所有微分值的 root mean square,那在最初情況,我們過去只算過一個微分值,就是
g0
,所以這個
σ0
,就是
g0
的平方再開根號。而在接下來第二次更新參數,因為有新的數值出現,因此
σ1
就會是之前
g0
的平方再加上新算出的
g1
的平方,最後再開根號而得到新的
σ1
,依此類推。

那原先我們有提到原本的learning rate為:

𝜂𝑡=𝜂𝑡+1因此我們可以再將這個函數簡化一下,就會如下圖:
image

但其實Adagrad的參數更新會隨著迭代愈漸減緩

image

一般來說,梯度愈大則參數更新愈快,Gradient(

𝛻𝐿(𝜃t))越大,你參數update就越快,斜率算出來越大,參數 update 就越快;但使用Adagrad的時候,則會因為梯度愈大造成分母項也愈大,也因此參數更新是受限的。尤其是在越後面更新,看過跑1000筆資料,才降不到0.1。

Tip

Adaptive 的 learning rate 其實是一系列的方法,比如說 Adadelta, Adam等等。這裡舉例的Adagrad則是相對簡單的方法,而在講者的認知中,Adam應該是現在最穩定的。有興趣同學可以去查閱看看其他方法。

有一些 paper 這樣解釋的,這個 Adagrad 它想要考慮的是:
今天這個Gradient有多surprise,那就會多"反差"這樣;就是比如說,反差萌的意思,如果本來一個很兇惡的角色,突然對你很溫柔你就會覺得它特別溫柔這樣,對 Gradient 來說也是一樣的道理,如上圖所述。
為了強調這種反差的效果,所以在 Adagrad 裡面呢,我們就把它除以過去這些 Gradient 的平方值,就能得知更新過的新 Gradient與過去的反差有多大。

image

Adagrad所表示的是梯度的反差,以二次函數

y=ax2+bx+c

對x微分為例,其結果如上圖下,它的最低點位於

x=b2a

假設初始位於

x0,最好的方式就是一次到達最低點,兩點之間的距離為
|2ax0+b|2a
,而
|2ax0+b|
即為
x0
的微分項。
當微分項愈大,代表離原點愈遠(
x0
越遠),如果跨出去的距離跟微分大小成正比,那可能就是最好的步伐,但這只限於一個參數情況。

但是,這件事情只有在,只考慮一個參數的時候才成立,如果我們同時有好幾個參數,剛才的論述就不見得成立了,也就是說,Gradient 的值越大就跟最低點的距離越遠,在有好多個參數的時候 ,是不一定成立的。

image

如左上圖面的顏色,是 loss function的輪廓圖
我們在兩個參數

w1
w2
分別各劃一刀,便可看出error surface形體如何。可以發現綠色的切線相對藍色比較尖且深,雖然單純比較來看會發現c在
𝑤2
中的微分子相較a在
𝑤1
是比較大(c的斜率較大,因此會認為離最低點比較遠),但c離最低點的距離跟a來比卻是比較近的。

Tip

Loss Function 的長相可以參考這邊

那我們該如何考慮跨參數的情況呢?

image
我們可以將原本一次微分的情形再做一次微分,再次微分的情況,就是指我們斜率的變化程度,也就是梯度(gradient)的變化程度,以這個方程式來看他二次微分會是一個常數。因此當
2a
越大,斜率變化越大,那你的梯度也就變化越大,這時你的參數每步(
|2ax0+b|2a
)更新就會變小,因此如果我們如果也把二次微分也考慮進來的話,會發現在
w1
這個方向上你的二次微分是比較小的(因為相對
w2
來的平滑)。所以在比較跨維參數的同時,除了考慮一次微分,二次微分也需考慮。
我們把Adagrad 的式子列出來:
image

可以看出

η 是一個常數,所以不必理會,
gt
就是一次微分,那下面
i=0t(gi)2
則是用來代表二次微分,可能會疑問為何不直接寫真正的二次微分呢?的確這個方法是正確可行的,但是有時候遇到的狀況是當你參數量非常大、data 非常多的時候,你可能算一次微分就花一天這樣子,然後你再算二次微分,你要再多花一天;而且每次最後呈現的結果可能未必是會變得比較好。所以,Adagrad 它提供的做法就是,我們在沒有增加任何額外運算的前提之下去評估二次的微分應該是多少。

image

從上圖中,我們可以藉由多個sample點來得知二次微分的變化量。


Stochastic Gradient Descent

Stochastic 的 Gradient Descent比起一般梯度下降法,可以讓你的training,更快一點。

我們可以先來看一般的 Loss function 長相為下圖:

image
Loss Function合理來說都會考慮所有資料集,再以所有資料集的總誤差來計算梯度下降。

但Stochastic Gradient Descent(隨機梯度)卻只考慮一筆資料誤差,梯度也只考慮該筆資料。

image
單筆特徵假設:
xn
n
代表第幾個。

image
我們將Loss function可視化(左上圖),在只有
w
b
的參數中,一般的梯度下降法(Gradient Descent)是跑完所有的 example 後再 update 一次參數,會比較穩定,因此它走的方向就是按照 Gradient 建議我們的方向。
而在Stochastic Gradient Descent(右上圖),則會因為根據我們總共幾個example而更新幾次,也就是說你每看到一個 example ,你就 update 一次參數,如果有20個就會跑20次,因此它的圖形看起來就會很散亂。
然而在同時起步開始跑更新的時候,因為當梯度下降法還在計算其他example時,隨機梯度就已經因為每次example進行一次更新而已經迅速地前往到下個example階段,因此能更快抵達收斂。

Note

隨機梯度下降與梯度下降的最大差異在於,梯度下降每次的迭代更新都會計算一次所有的資料誤差再做梯度下降,而隨機梯度下降則是每次的迭代都只計算一筆的誤差並且更新。
也因此,在梯度下降做一次的迭代之後,可以隨機梯度已經看完全部而且更新完了。
但是隨機梯度的收斂無法像梯度下降一樣很穩定的往最佳解前進,它的求解過程中較為震盪。


Feature Scaling

除了以上幾個方式可以來調整整個模型的走向,我們也可以藉由Feature Scaling來進行改善。

image
假設我們現在要做 Regression,有兩個 feature,分別為
x1
x2
x1
是進化前的 CP值,
x2
是它的生命值;如果說他們的範圍分布(range)不一樣,那就把它們做 scaling,令他們 range 分佈變成是一樣。
image

假設我們Regression function:
y=b+w1x1+w2x2
,如果我們的
x1
本身都很小,只有1,2
x2
則為100,200;其差距非常大,可能呈現的error surface圖形就為左圖,而這也表示
w1
對Loss影響比較小,
w2
對Loss影響比較大;而當他們的scale都很接近,如右圖所示,則呈現結果則變為接近圓形,代表其對Loss影響是差不多的。
在左圖的情況下,我們可以得知同一組learning rate是無法搞定符合兩個參數的,必須使用adaptive rate才有辦法。但是在右圖情況因為其數值差不多,gradient 就有辦法直接順順的往最低點走去,而不是如左圖因數值不同關係還須彎繞進去。

那該如何實作呢?這個方法有千百種,這邊就舉例最簡單的方式:

image
我們可以假設有有
R
個examole,而每個example都有一個feature,而每個feature有數個component(
x11
x21
x31
x41
xi1
);我們對每個dimension i計算平均(mean),標準差 (Standard deviation)。

那現在要進行localization: 舉例說我們對第

r 個 example 的第
i
個 component,也就是
xir
來進行。
我們將
xir
mi
(第
i
個 component 的 mean)進行相減,再除以所有的 data 的
𝜎𝑖
(第
i
個 component 的 standard deviation),就會得到新的
xir
,而這也會使所有 dimension
i
的 mean為0,variance(變異數) 就會是 1。

當然還是有其他不同種方始可以來探討gradient

Formal Derivation 與 Taylor series

image

我們無法立即從error surface 瞬間找出最低點,但我們可以藉由一個初始點

θ0,在範圍內找出一個最小值,再以該點為中心,以同樣的方式在範圍內找一個最小值前往。
這個意思就是說,如果你給我一整個 error function,我沒有辦法,馬上一秒鐘就告訴你說,它的最低點在哪裡,但是如果你給我一個 error function,加上一個初始的點,在這個初始點附近,畫一個範圍之內找出一個最小的值。然後藉此將中心更新到新的最小值上,在畫一個圓圈繼續找新的最小值依此類推。

image
在Taylor series任何一個 function
h(x)
,如果它在
x=x0
這點是 infinitely differentiable,當 x 很接近
x0
的時候
h(x)
可以說非常接近
h(x0)+h(x0)(xx0)
,因為展開後會發現
h(x0)(xx0)
遠大於
h(x0)2!(xx0)2
,而
h(x0)2!(xx0)2
又會遠大於更高次項,依此類推,後面次項就不用考慮。當然這是當只有考慮一個變數的情況。

Tip

k代表微分次數

image
以上圖舉例我們假設
h(x)=sin(x)
,在
x0
約等於
(π/4)
的地方,我們將每項畫出圖形。如果我們考慮
12
只考慮0次的話就是這條水平線,1次則是斜線,2次則是開口項下那條線;那我們可以單純考慮一次式的話,它的線與橙色線sin雖然非常不像,但是在
(π/4)
的地方卻是很像,其它的二次式以後的項目它的值都非常的小,我們可以忽略不看。


那如果說現在要考慮多個變數的情況時,則可參考下圖:

image

在多參數的狀況下依然可以以Taylor Seris來計算,在

(𝑥,𝑦)都很接近
(𝑥0,𝑦0)
的情況下,平方項之後也是可以被忽略的。

image
那我們回到formal derivarion
假設,在Loss函數中一個中心點
(a,b)
並畫一個很小的圓圈,在這個圓圈內我們可以將Loss Function利用Taylor Series做簡化。
𝐿(𝜃)𝐿(𝑎,𝑏)+𝜕𝐿(𝑎,𝑏)𝜕𝜃1(𝜃1𝑎)+𝜕𝐿(𝑎,𝑏)𝜕𝜃2(𝜃2𝑏)

那其中我們假設,
𝑠=𝐿(𝑎,𝑏)
,
𝑢=𝜕𝐿(𝑎,𝑏)𝜕𝜃1
𝑣=𝜕𝐿(𝑎,𝑏)𝜕𝜃2
;而其中這三項都是屬於常數項。
所以可以簡化成
𝐿(𝜃)s+𝑢(𝜃1𝑎)+𝑣(𝜃2𝑏)

那我們可以藉下列圓形方程式來找出
𝜃1,𝜃2
讓Loss最小
(𝜃1𝑎)2+(𝜃2𝑏)2𝑑2

Tip

紅色圈的中心即為(a, b)

image

s
𝜃
無關係因此可以忽略
(𝜃1𝑎)2+(𝜃2𝑏)2𝑑2=Δ𝜃1+Δ𝜃2

我們可以想像成

𝑢(𝜃1𝑎)+𝑣(𝜃2𝑏)其實就是
(Δ𝜃1,Δ𝜃2)
(𝑢,𝑣)
兩個向量作內積出來的結果。因此要讓其值
L(𝜃)
最小,那就是兩個向量方向相反並平行,在夾角180位置,並調整長度讓其剛好在紅圈的極限∘而上面
η
則是代表scale常數,作為調整長度的倍數。
因此如果說我們要找到
𝜃1
𝜃2
L(𝜃)
最小的話,那就是
[𝜃1𝜃2]=[ab]η[𝑢𝑣]

Tip

內積:

AB=∣A∣∣Bcos(θ)
AB=a1b1+a2b2++anbn

image
那我們將方程式整理後,可以發現它其實就跟gradient descent一樣。
而這個式子的成立就是建立在Taylor Series上,就是紅色的圈圈要夠小(
d
越小),才能給到近似值,才會夠精確。而我們可以從此推論出,
𝜂
d
成正比,因此如果你要讓你每次 update 參數的時候你的 loss 都越來越小的話,
𝜂
要小才有辦法成立。

Tip

可以想像成今天就是把原本在error surface每次gradient更新的超級小紅點,改成大一點點的紅點去作gradient descent,這樣就能比較清楚明瞭。

Note

那本次作法目前只有考慮Taylor series 裡面的一次式,Taylor series 我們這次還沒有考慮到二次、三次,像是二次的牛頓法可能還要考慮到二次微分以及 Hessian matrix(黑塞矩陣)等等。而這些運算,在做 deep learning 的時候需耗費大量時間跟資源,因此來換你 update 的效率會覺得不划算。
所以,今天如果在做deep learning 的時候通常,還是 Gradient Descent 是比較普及、主流的作法。

More Limitation of Gradient Descent

image

那最後要談到有關Gradient Descent的限制。
我們都知道在找

Lossmin 它可能會卡在 local minimum 或 saddle point,只要是微分為0的地方就有可能發生。而自己本身可能也無法得知這個地方是否為最小值,只要接觸到微分值為0就停住。

Caution

因本次影片斷在這,下章節影片前段也沒提到這部分,因此大家可以討論一下。

Important

最後來總結一下,根據上面我們總述我們得知每次的迭代更新並不保證Loss function會下降。
而且修改的方法有很多種,目前就提到了:
1.learning rate的調整-動態學習效率(Adagrad)
2.只考慮一筆資料誤差Stochastic Gradient Descent(隨機梯度)
3.改變特徵參數(

xhp
xcp
等等)範圍及大小的Feature Scaling
4.更改error surface的gradient紅點大小的Taylor series

以上,本次介紹完畢,謝謝!!

補充資料

  • 真實的計算寶可夢CP公式
    f^
    ​​​​CP = ((基礎攻擊 + 攻擊 IV) * (基礎防禦 + 防禦 IV)^0.5 * (基礎 HP + HP IV)^0.5 * (PowerUpValue^2) / 10 )
    
    ​​​​CP = floor((Base Attack + Attack IV) * (Base Defense + Defense IV)^0.5 * (Base HP + HP IV)^0.5 * (PowerUpValue^2) / 10 )
    

課程提問

為何不以 Testing Set 的結果作為依據來選擇模型?
  • 同學使用 ChatGPT 回覆
    為什麼不能用測試集來訓練
    過擬合風險:如果模型在測試集上進行訓練,它可能會學習到測試集中的特定特徵,而不是一般化的模式。這樣一來,模型在測試集上的表現可能會很好,但在新數據上卻表現不佳。

    評估失真:測試集的目的是評估模型的性能。如果用測試集進行訓練,最終評估結果將無法準確反映模型在未見過的數據上的表現。

    模型選擇偏差:如果在選擇最佳模型時使用測試集,則可能會導致模型在測試集上表現良好,但在其他數據上表現不如預期。

    交叉驗證的優勢
    交叉驗證(cross-validation)是評估模型性能的一種技術,它可以幫助解決數據集劃分問題,具體包括以下幾點:

    可靠性:通過多次劃分和驗證,交叉驗證提供了一個更可靠的模型性能評估,使結果不依賴於特定的數據劃分。

    充分利用數據:在每次驗證中,所有數據都能夠被用作訓練集和驗證集,這對於數據量有限的情況特別重要。

    減少過擬合風險:由於在不同的數據子集上進行訓練和驗證,交叉驗證能有效減少模型過擬合的可能性。