# 2024-09-21 ML - 主題:**Regression** - 放映影片:[`Regression`](https://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2017/Lecture/Linear%20Regression.mp4) 播放完畢 - 搭配講義:[**https://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2017/Lecture/Regression.pdf**](https://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2017/Lecture/Regression.pdf) - 分工 - 主持人: @sin-iu-ho - 教學組 - 領讀人: @sin-iu-ho - 紀錄組 - 影音組: @as854398 - 文字組: @Princendwang @munin ## 課程內容筆記 - 講義範圍 P.13 - P.37 - 大綱: 1. 解釋梯度下降數學推導$\frac{𝜕𝐿} {𝜕w}$,$\frac{𝜕𝐿} {𝜕b}$,以及鞍點問題 2. 利用非線性組合、Regularization...等各種方式找到最小loss值 - 梯度下降的問題(PPT P.16) ![image](https://hackmd.io/_uploads/BJ8QRIATR.png "PPT P.16" =350x) - Saddle Point:當微分為零時,梯度下降算法會停下來(斜率變小,不太會動),但這可能是**鞍點**,即周圍有下降和上升方向,不是真正的局部最小值。 - 在這種情況下,優化過程可能會卡住,但不一定會發生,因為通常不會剛好在零點停下來。 - Local Minima:梯度下降可能會收斂到局部最小值(非全域最小),尤其是在非凸問題中。但隨機初始化或引入動量可以幫助跳出局部最小值。 :::spoiler More Info 這些問題的損失函數可能會有多個局部最小值,導致算法停留在局部最小值,而非全局最小值。透過隨機初始化(隨機選擇初始參數值)或引入動量,可以幫助模型跳出這些局部最小值,並且更接近全局最小值。動量允許模型在學習過程中保留一些之前的動力,這樣即使遇到局部最小值或平滑區域,模型也能繼續往更好的方向前進。 ::: - Plateau:優化過程中可能會遇到平滑區域(plateau),即損失函數在某個範圍內變化非常緩慢,這會讓梯度下降變得非常慢。 - 線性回歸(Linear Regression):對於線性回歸,我們不用太擔心上述問題,因為其損失函數(通常是均方誤差)形成一個碗狀的凸函數。 - 在這種情況下,梯度下降會找到唯一的全局最小值,也就是最低的谷底。 - 學習率(learning rate)$\eta$ 與梯度下降 ![image](https://hackmd.io/_uploads/BkuApICa0.png "PPT P.14" =500x) $$ (-\eta \frac{\partial L}{\partial b}, -\eta \frac{\partial L}{\partial w}) $$ - 符號解釋 - $\eta$ :學習率,表示走多遠 - $(∂L/∂b, ∂L/∂w)$:向量,表示方向 - 學習率的變動性 - 學習率通常是固定的超參數,但在某些優化器中,如 RMSProp 和 Adam,學習率可以根據前一次的狀況進行調整。 - 如果學習率設為 10,而梯度為 10,則更新的步長將是 10×10=100。如果梯度為 0,則不會進行任何更新。 - 梯度的意義 - 梯度代表損失函數對於參數的斜率。參數(例如:權重 $w$ 和偏置 $b$)是可以變動的。 - 優化的目標是找到最小的參數以減少損失函數的值。然而,我們對損失函數的整體形狀並不清楚,這是一個假設的過程。 - 在訓練中,我們可能會遇到多個局部最小值或「山谷」,這會影響模型的訓練效果。 - 重點是關注**測試資料/測試集**上的損失 - 當我們訓練一個模型時,最重要的是它在新資料(測試集)上的表現,而不是僅僅在訓練資料上的表現。如果模型對測試資料的誤差很大,這就意味著它泛化(generalization)得不好,可能過於依賴訓練資料的噪聲,這就是過擬合(overfitting)。 - 增加特徵與模型複雜度 - 用更多的特徵(例如三次多項式、四次多項式等)來訓練模型,雖然增加了複雜度,可能會在訓練資料上表現很好,但這並不一定保證在測試資料上效果好。更複雜的模型能夠更精確地擬合訓練資料,但也容易過擬合,這意味著它在未見過的資料上表現不佳。 - 隱藏要素(hidden factors) - 在搭建模型的過程中,可能存在於資料中沒有直接觀測到或考慮到的變量,這些隱藏要素會對模型的表現產生重要影響。 - 為了避免隱藏要素帶來影響,可選擇正則化技術(如 `lambda` 正則化)來處理。 - 克羅內克 δ(Kronecker delta)是一種數學符號,通常用於比較兩個指標或變量是否相等。 - 定義 - 如果 $i = j$,則 $\delta_{ij} = 1$。 - 如果 $i \neq j$,則 $\delta_{ij} = 0$。 - 在機器學習或資料分析中,克羅內克 δ 可以用於處理分類問題,特別是有很多類別(例如:數千種寶可夢 aka 神奇寶貝 aka 口袋怪獸)的時候,可以用來選擇或調整模型中不同的特徵,使模型能夠適應不同的寶可夢類型,從而提高預測的準確性。 - 老師這邊的範例使用 δ 重新建模,但還是 overfitting 了,所以又再改用正則化處理。 - 正則化(Regularization)是一種用來改善模型泛化能力(generalization)的技術,主要通過修改損失函數來實現。(PPT P.35) ![image](https://hackmd.io/_uploads/Sy7Y0LRpA.png "PPT P.35" =500x) - 損失函數的調整:透過引入正則化項,改變原始損失函數,以考量模型的預測誤差及其參數的大小。這有助於降低模型的複雜度,避免過擬合。 - $\lambda$ (lambda)的作用:正則化項通常涉及到所有參數(權重)平方和的總和。$\lambda$ 是一個超參數,用來調整正則化的強度。當 $\lambda$ 越大時,模型越傾向於使權重變小,從而促使模型更平滑(smooth)且穩定。 - 平滑函數:希望損失函數是平滑的,即對於輸入的輕微變化,輸出不會產生過大的變化。這種平滑性可以減少模型的過擬合現象。較小的權重 $w_i$ 使得模型更平滑。我們需要找到滑又不會太滑的 Function :sunglasses: - L2 正則化:當引入 L2 正則化時,目標是讓權重 $w$ 越小越好,接近於零,這是因為平方項會強化對大權重的懲罰。這種懲罰有助於減少模型的複雜性,從而改善泛化能力。 - `bias`:在此過程中,主要針對權重進行正則化,而不考慮偏 `bias`。因為 `bias` 對於輸入 $x$ 和權重 $w$ 的影響仍然是相對較小的。 - 梯度下降(Gradient Descent)是優化器的一種。以下舉例: | 優化器 | 優點 | 缺點 | |-------------------|------------------------------------------------|--------------------------------------------| | 梯度下降(GD) | 直觀簡單,適用於小型資料集 | 計算成本高,容易陷入局部最小值 | | 隨機梯度下降(SGD)| 計算速度快,能夠跳出局部最小值 | 震盪大,收斂不穩定,學習率設置困難 | | 小批量梯度下降 | 平衡計算效率和收斂穩定性,降低震盪 | 批量大小需要合理選擇,過大或過小均影響效果 | | 動量法(Momentum) | 加速收斂,減少震盪 | 需要調整額外的動量超參數 | | Adam | 自動調整學習率,適合稀疏數據,收斂快且穩定 | 需調整額外超參數(如 beta 1 和 beta 2),可能不佳於某些問題 | | RMSProp | 自適應學習率,適合非平穩損失函數,效果優異 | 需選擇合適的衰減率(decay rate) | ## 問題與討論 ![image](https://hackmd.io/_uploads/rJ6fE_36R.png) Q:右上框代表意思是甚麼? A:以矩陣表示,方便電腦做計算 --- ![image](https://hackmd.io/_uploads/Sk9LB_3pA.png) Q:如何解決鞍點(沿 x 軸切一刀,y 軸切一刀斜率都為0)問題? A:暫時沒解答 --- ![image](https://hackmd.io/_uploads/By56HOh60.png) Q:右下角的皮蛋代表甚麼意思? A:代表子集合,5.有包含$(X_cp)^4$ ,所以在最外圈,以此類推 ![image](https://hackmd.io/_uploads/S1ZHU_3aA.png) Q:長得像魚鉤的科學符號是啥? A:[克羅內克 δ 函數](https://zh.wikipedia.org/zh-tw/克罗内克δ函数) 舉例: $$ {\displaystyle \delta _{ij}=\left\{{\begin{matrix}1&(i=j)\\0&(i\neq j)\end{matrix}}\right.\,\!} 。$$ --- - Homework? - L1 與 L2 的實際差別? - 誤差要怎麼算才是最好?誤差範圍可以接受的程度為何? ## 其他議題 - 下周六 由 - @munin @Princendwang 做 Where does the error come from?: 領讀人 - @sin-iu-ho @as854398 做 Gradient Descent: 領讀人 - 直接準點開始不延後十分鐘 - 下週五 由領讀人事先看完影片,再到讀書會上主講;還未找到領讀人 - 討論做作業及找題目 - https://github.com/ncku-yee/ML2022 - kaggle 上的寶可夢資料集 - https://www.kaggle.com/datasets/rounakbanik/pokemon/data - https://www.kaggle.com/datasets/calebreigada/pokemon ## 相關學習資源 - 退火演算法 {%youtube P4p-YgidpZ4 %} - overfitting & 模型複雜程度選擇 {%youtube MSQykQAsdoQ %} - [svm OvR](https://rpubs.com/skydome20/R-Note14-SVM-SVR )