說明:本人正在跟隨臺大李宏毅老師的課程學習,為了加強學習效果,特寫成blog來記錄,所有部落格中的圖片均擷取自李宏毅老師的PPT。
一、機器學習是在幹什麼?
以中學時代所學的函式為例,做應用題時我們都會建立相應的正比例函式、二次函式等來解決,給定一個自變數x都能得到唯一的因變數y。現在我想找到一個函式ƒ,它的輸入並不是數字,而是一段語音,最後相應的文字,亦或輸入的是一副圖片,最後輸出的是圖片中的內容,那麼如何求解該函式?顯然,人類做不到,那就交給機器(計算機)來找!
二、不同型別的函式(亦即不同的任務)
Regression(迴歸問題類):輸出的是scalar(標量),標量只有大小而無方向,可以表示溫度、溼度、長度等。>scalar(標量),標量只有大小而無方向,可以表示溫度、溼度、長度等。
Classification(分類):給一些選項或類別,函式可以輸出正確的一類(class),一個one-hot向量
Structured Learning(結構化預測):輸出一個句子或一張圖......輸出的是結構化結果
三、機器學習的三個步驟
以預測隔天的影片點選量為例
1. Function with unkonwn parameters
寫出一個帶有未知引數的函式,先預測一下這個函式會是什麼形式(基於資料所在領域的一些先驗知識)
設:\(y = b + w*x_1\),其中y是要預測的第二天的值,\(x_1\)是當天已知的值,\(b\)和\(w\)是未知的引數,要透過後面的步驟來確定(從大量資料中學習)
2. Define Loss from Training Data
Loss是一個函式,輸入的引數就是第1步中未知的b和w,記為$L(b, w)$
Loss函式判斷的是當確定一組b和w時,輸出的資料“好不好”
假設b = 0.5k,w = 1,即\(L(0.5k, 1)\),有\(y = 0.5k + x_1\),我們要判斷此時該函式是否夠準確,即預測值與實際值(Label)之間的誤差大不大
假如我們將每天的實際點選量與預測點選量作差,然後累加求平均值,即 \(L = \frac{1}{N}\sum_n{e_n}\)
其中N表示training data的個數,n代表有多少天,\(e_n\)表示每天的誤差。則L越大,代表當前選擇的\(b\)與\(w\)不好,L越小代表這一組引數越好。
注意其中\(e = \lvert y - \widehat{y} \rvert\) L is mean absolute error(MAE:平均絕對誤差);
\(e = (y - \widehat{y}) ^2\),L is mean square error(MSE:均方誤差),兩種方法可以根據實際情況確定
3. Optimization
解一個最最佳化問題,如本例中我們要找到一組最好的w與b,即\(w^*,b^* = arg min_{w,b} L\),我們用到的optimization方法是Gradient Descent即梯度下降法。
Graient Descent
簡化一下,假如目前我們只考慮引數w
- (randomly)pick an initial \(w^0\)
- Compute $\dfrac{\partial y}{\partial x}|_{w = w^0} $
- Update \(w\) iteratively
\(w^1 \leftarrow w^0 - \eta\dfrac{\partial L}{\partial w}|_{w = w^0}\)
當偏導數為負時,左高右低 $\longrightarrow $ Loss函式遞減 $\longrightarrow $ 增大w使其值減小
當偏導數為正時,左低右高 $\longrightarrow $ Loss函式遞增 $\longrightarrow $ 減小w使其值減小
也就是說我要朝哪個方向邁出去走到新的 \(w_1\)處,走的這段距離不僅與偏導數有關,還與 學習率(learning rate)\(\eta\) 有關,即 \(\eta\dfrac{\partial L}{\partial w}|_{w = w^0}\)
這裡的 \(\eta\) 是自己根據情況自行設定的,在機器學習中自己設定的引數叫 hyperparameters
w走到什麼時候會停止?一是可以自己設定,求多少次微分後就停止;二是找到一個最小值時
回到最初的兩個引數的情況,即\(w^*,b^* = arg min_{w,b} L\)
- (Randomly)Pick initial values \(w^0\), \(b^0\)
- Compute \(\dfrac{\partial L}{\partial w}|_{w = w^0, b = b^0}\) \(\dfrac{\partial L}{\partial b}|_{w = w^0, b = b^0}\)
- Update \(w\), \(b\) iteratively
\(w^1 \leftarrow w^0 - \eta\dfrac{\partial L}{\partial w}|_{w = w^0}\)
\(b^1 \leftarrow b^0 - \eta\dfrac{\partial L}{\partial b}|_{b = b^0}\)
不停地更新下去,直到找到一組最優值
上面的 \(y = b + w*x_1\)我們只考慮了一天,我們對model加強一下,讓它能夠根據更多的資料來預測,可以寫作:
同理,\(x_j\)是第j天的feature播放量,\(w_j\)是權值,\(b\)是bias,\(n\)是前多少天
這類模型通稱為Linear Models(線性模型)