打算寫點關於Machine Learning的東西, 正好也在cnBlogs上新開了這個博客, 也就更新在這里吧。
這里主要想討論的是統計學習, 涵蓋SVM, Linear Regression等經典的學習方法。 而最近流行的基於神經網略的學習方法並不在討論范圍之內。 不過以后有時間我會以Deep Learning為label新開一個系列, 大概寫寫我的理解。 總之Machine Learning的label下都是和一些數學上比較清晰的東西, 不會像deep learning一樣要等着Brain Science那群人做實驗, 找出新東西才能確定方向。
第一篇本來覺得從Linear Regression開始比較好, 引入問題后導入MP一般逆就能解決。 最后還是不打算這么寫。 我們先從Logistic Regression開始, 最后再倒回Linear Regression。
最后, 剛剛設置了latex的代碼, 不知能不能用, 不行的話事后再修改。
- Logistic Classification
首先來考慮一個問題, 我們有一組數據$X$, 現在打算將它分類成$k$個類$C$, 那么應該怎么辦?
我們這么考慮, 對於每一個數據$x$, 顯然都有$P(C_i|x)$, 代表了每個數據屬於這個類的分布, 我們的目的就是找出一個最好的分界線, 讓每個數據能有最大概率屬於某個類。 (說句閑話, 當然我們也有$P(x)$, 並且有聯合分布$P(C_i,x)$, 我們會在今后用這個結合bayesian的想法去做些更有意思的事情。 不過因為不是這次的主題, 下面不再提及。) 解決這個問題雖然有很多方法, 為了導出logistic, 這里我們用log-odds來解決這個問題。
$log(\frac{P(C_i|x)}{P(C_k|x)}) = \beta x + \alpha$
在這里, 對於每個類$C_i$, 我們都選擇一個固定的類$C_k$作為參考, 同時只用linear model。 最終顯然會有$k-1$個分界。現在我們來求每個$P(C_i|x)$:
$P(C_i|x) = \frac{e^{\beta x + \alpha}P(C_k|x)}{Z(\theta)}$
這里憑空多了個$Z$, 這是歸一化項, 它是所有$P$的總和$Z(\theta)=P(C_k|x)+\sum_i{e^{\beta x + \alpha}P(C_i|x)}$, 注意到因為$C_k$我們已經單獨拿了出來, 所以單獨加上。
現在試着將$Z(\theta)$帶進去, 看看發生了什么? $P(C_k|x)$消失了, 我們得到了一個新的式子:
$P(C_i|x) = \frac{e^{\beta x + \alpha}}{1+\sum_i{e^{\beta x + \alpha}}}$
看起來是不是很眼熟? 這個其實就是multi-class下面的logistic的形式。 當然, 在neural network里面, 他有個很唬人的名字, 叫做SoftMax Layer。 但值得注意的是這里我為了簡單, 省略了$\beta$和$\alpha$的下標, 顯然對不同的clas需要不同的曲線。
當然, 如果$k=2$, 他自然會回到我們熟悉的形式:
$P(C_i|x) = \frac{e^{\beta x + \alpha}}{1+e^{\beta x + alpha}}$
這就是我們熟悉的logistic function。 雖然導出的過程多少有點不太令人滿意, 但最終還是得到了這個結果。實際上完全不必拘泥於這個方法, 隨着深入, 我們會看到各種各樣的方法里都能夠自然地導出logistic function, 比如在RBM里, 我們就能發現$P(1|x)$是logistic function。 這也是為什么很多方法都傾向於選擇這個非線性方程。
- 在最開始我提到了linear regression, 在logistic function的推到過程里也不加說明的用了線性邊界, 這里應該有必要簡單的介紹下這個問題。
首先是問題設定, 我們依然有一組數據$X,Y$, 我們想找出這組數據的特征。 所謂特征, 你可以想象有一堆點, 它們排成直線, 那顯然我們如果有$\beta x + \alpha$的話, 特征就是兩個參數$\beta$和$\alpha$, 有時我們也會稱這個為數據的結構, 它們表達的意義差別不太大。
簡單的說, 我們就是想用直線擬合這組數據, 如果沒記錯, 中學生都學過如何用最小二乘法擬合一組數據, 並且給出誤差。 不過中學生的知識水平還很難把這個問題寫成簡單的形式, 我們這里當然不會出現$\sum_{ij}\|x_i-x_j\|^2$這種形式。
當然, linear regression的應用范圍很廣, 分類問題也可以處理。比如我們將每個類都設置為$e_i$, 然后自然就可以用linear model去找一個平面進行分類。 過程跟這里是完全一樣的。
為了后面更容易解釋, 我們稍微換個方向看這個問題, 我們有一組數據$x$, 如果它有什么結構, 那么一定就有這么一個函數能生成它, $f(x)=y$, {x,y}就是現在我們看到的。 因此我們的目標自然就是嘗試找到$f$.
對於linear model, 這個問題非常簡單
$Bx=Y$
只要有$B$, 一切就解決了。 不過這個事情沒有想象中那么簡單, 因為很多時候這個等式是無解的, 直接去求顯然不合適。 因此我們轉而去嘗試最小化下面這個式子:
$f=\|Bx-Y\|^2$
這里我們加了L-2范數來保證能夠最小化。 或許你會懷疑為什么沒有偏移項, 這是因為為了簡單, 我們把偏移項放進了B和x里, 從而不再需要求兩次導數了。
到這里一切就顯得很清晰了, 雖然很多時候不能保證誤差為0(實際上是所有情況下, 因為實際問題的觀測數據總和真值有偏移, 我們需要$E(Y)$才能推測真值), 但總是可以最小化這個誤差。取導數, 令$f’ = 0$, 我們可以得到:
$B=(x’x)^{-1}x’Y$
這個結果很容易推導, 我也不給出詳細的過程。 但這個結果很有意思。你可能已經注意到了, 這個形式滿足M-P逆的四個條件, 也就是說這是M-P逆的表達形式。
雖然我們並沒有引入vec算符, 也沒有引入固有向量分界后空間的意義, 從數學上講可能很難。 不過可以想像一下這個函數干了什么。 首先, 如果我們能夠找到一個完美的$f$, 顯然這個曲線會和點完全重合。 但首先我們的模型可能太過簡單, 那么我們就用了直線上距離觀測點最近的地方作為預測結果, 相當於一個投影過程, 這也是MP逆的定義所導出的東西。
當然, linear regression也會有很多變形和優化方法。 不過今天就到此為止, 今后我們會講講LASSO, 局域權重等一些實際中常用的東西。 或許還會補補數學上的一些東西。 總之, 以后有機會再見。
