iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0
AI & Data

30天搞懂機器學習是否搞錯了什麼系列 第 4

【Day 4】機器學習基本功(二) --- Regression

如何找到一個函式(function)?(上)

接下來會以李宏毅老師在影片中講的例子來做說明整理。
尋找一個輸入為youtube後台資訊,輸出為該頻道隔天總點閱率的函式。

步驟一:寫出一個帶有未知參數的函式

  • 初步猜測函數的數學式為 https://chart.googleapis.com/chart?cht=tx&chl=y%20%3D%20b%20%2B%20w%20x%20_1
    https://chart.googleapis.com/chart?cht=tx&chl=y : 今天頻道預測的總觀看人數
    https://chart.googleapis.com/chart?cht=tx&chl=x_1 : 昨天頻道總觀看人數(已知)
    https://chart.googleapis.com/chart?cht=tx&chl=b%2C%20w : 未知參數

  • Model: https://chart.googleapis.com/chart?cht=tx&chl=y%20%3D%20b%20%2B%20w%20x%20_1
    Feature: https://chart.googleapis.com/chart?cht=tx&chl=x_1
    Weight: https://chart.googleapis.com/chart?cht=tx&chl=w
    Bias: https://chart.googleapis.com/chart?cht=tx&chl=b

步驟二:從訓練資料定義損失函數(Loss)

  • 損失函數:https://chart.googleapis.com/chart?cht=tx&chl=L(b%2C%20w),損失函數的輸入為Model裡面的參數,即為 https://chart.googleapis.com/chart?cht=tx&chl=b%2C%20w。輸出為 https://chart.googleapis.com/chart?cht=tx&chl=b%2C%20w 數值的好壞,必須從訓練資料進行計算。

假設 https://chart.googleapis.com/chart?cht=tx&chl=b%20%3D%200.5k%2C%20w%20%3D%201,並將訓練資料的點閱人數帶入Model中,得出隔天預測的點閱人數 https://chart.googleapis.com/chart?cht=tx&chl=y,並與隔天實際點閱人數 https://chart.googleapis.com/chart?cht=tx&chl=%5Chat%20y 相減得出https://chart.googleapis.com/chart?cht=tx&chl=ehttps://chart.googleapis.com/chart?cht=tx&chl=e 為估測值與真實值的差距,再將所有誤差加總,得到損失函數 https://chart.googleapis.com/chart?cht=tx&chl=L%20%3D%20%5Cfrac%201%20N%20%5Cdisplaystyle%20%5Csum_n%20e_nhttps://chart.googleapis.com/chart?cht=tx&chl=L 越大,代表這組參數 https://chart.googleapis.com/chart?cht=tx&chl=b%2C%20w 越不好,反之則越好。


  • 損失函數選擇:
    Mean absolute error(MAE): https://chart.googleapis.com/chart?cht=tx&chl=e%20%3D%20%7Cy%20-%20%5Chat%20y%7C
    Mean square error(MSE): https://chart.googleapis.com/chart?cht=tx&chl=e%20%3D%20(y%20-%20%5Chat%20y)%5E2
    如果 https://chart.googleapis.com/chart?cht=tx&chl=y%2C%20%5Chat%20y 都為機率分佈,則會選擇交叉熵(Cross-Entropy)。

步驟三:解最佳化問題

  • 找一組能讓Loss最小的參數 https://chart.googleapis.com/chart?cht=tx&chl=w%5E*%2C%20b%5E*

梯度下降法(Gradient Descent)

假設只有 https://chart.googleapis.com/chart?cht=tx&chl=w 這個參數,代不同的 https://chart.googleapis.com/chart?cht=tx&chl=w 進去會得到不同的Loss,產生圖中曲線(error surface)。

  • 隨機選取初始點 https://chart.googleapis.com/chart?cht=tx&chl=w%5E0

  • 計算參數對Loss的微分,即為切線斜率

  • 斜率為負:增加 https://chart.googleapis.com/chart?cht=tx&chl=w 的值

  • 斜率為正:減少 https://chart.googleapis.com/chart?cht=tx&chl=w 的值

  • 參數調整範圍大小取決於

    • 斜率大,調整範圍大。斜率小,調整範圍小。
    • 學習率(Learning rate) https://chart.googleapis.com/chart?cht=tx&chl=%5Ceta:越大,參數更新快。越小,參數更新慢。
  • 超參數(hyperparameters):需自行設定、調整。

  • 反覆進行前面的操作,即會找到解

需要注意的是梯度下降法有時會沒有辦法找到全域最佳解(global minima),可能會找到區域最佳解(local minima),根據初始點的不同有機率會找到不同的解。

重新回到考慮兩個參數的情況,跟上述一樣會先隨機選取初始點,再個別對Loss進行微分,並更新參數。


參考資料

李宏毅老師 - 機器學習2021


上一篇
【Day 3】機器學習基本功(一)
下一篇
【Day 5】機器學習基本功(三) --- Regression
系列文
30天搞懂機器學習是否搞錯了什麼30

尚未有邦友留言

立即登入留言