機器學習擅長
回歸 regression
將連續性的資料進行觀察,用以預測未來的結果。例如股價、身高、體重
分類 classification
收集既有的資料,進行訓練,根據訓練結果預測新資料的分類。例如:垃圾郵件判斷、手寫數字辨識
分群 clustering
根據資料進行分群,但跟分類不同,分類的訓練資料已經有標記結果,要用來分群的資料並沒有群組的標記。例如:根據學測成績,進行文理組分群
使用具有標記的資料進行機器學習,稱為監督式學習。
使用不具有標記的資料進行機器學習,稱為非監督式學習。
線性迴歸(Linear regression)
當我們取得原始量測資料時,如果在平面座標上標記這些量測點,會感覺到這些點之間,可以畫出最接近這些點的一條直線方程式,線性回歸方法,可以找到這樣的方程式,未來就可以根據這個方程式,預測數值。
從圖形看起來,我們可找到一條「最接近」所有紅色觀測值的直線,以直線方程式 \({f(x)=ax+b}\) 表示這條直線,我們要做的就是找到一個方法,確定 a 與 b 的值,未來就可以利用這個方程式預測數據。在統計中,為了因應未來可能有很多未知數的問題,改以這樣的寫法:
\({f(x)=𝜃_0+𝜃_1x}\)
最小平方法
假設目前有這些數據,當我們任意找 \({𝜃_0 =1, 𝜃_1=2}\) 時,f(x) 跟實際上的 y 之間有誤差。所以要找到適當的參數,讓 f(x) 與 y 之間的誤差最小,當然如果誤差為 0 是最好的。
x | y | f(x) |
---|---|---|
58 | 374 | 117 |
70 | 385 | 141 |
81 | 375 | 163 |
84 | 401 | 169 |
定義誤差函數為
\({E(𝜃)= \frac{1}{2} \sum_{i=1}^{n}( y^{(i)} - f_𝜃(x^{(i)})^2 }\)
- \(x^{(i)}, y^{(i)}\) 分別是第 i 項的 x 與 y,例如 \(x^{(1)} = 58, y^{(1)}=374\)
- \({(y^{(i)} - f_𝜃(x^{(i)}) }\) 是誤差值,但因為誤差有可能是負數,所以就用平方,轉成正數
- 將所有誤差的平方加總後,為了微分計算方便,就在前面再乘上 1/2。因為乘上任意的正數,只會讓圖形橫向壓扁,但不會改變最小值的位置。任意的正數都可以,選擇 1/2 是因為後面的例子,f(x) 是二次函數的關係。
在讓 E(𝜃) 最小的狀況下,找到的 \(𝜃_0, 𝜃_1\) 就是最小平方法
最速下降法
剛剛要讓 E(𝜃) 最小的狀況下,必須不斷地找到不同的 \(𝜃_0, 𝜃_1\),這個計算很麻煩,可用微分來解決,因為微分就是在找函數切線斜率的變化。
例如 \(f(x) = (x-1)^2\) ,微分後 \(f'(x) = 2x-2\)
x | f'(x) 的正負 | f(x) 遞增或遞減 |
---|---|---|
\(x < 1\) | \(-\) | 遞減 |
\(x=0\) | 0 | |
\(x>1\) | \(+\) | 遞增 |
f(x) 的圖形如下,當 x 由 3 往 1 逼近,f(x) 就越來越小,另外當 x 由 -1 往 1 逼近,f(x) 也會越來越小
意思就是說,只要 x 往導函數 (微分) 的反方向移動,就函數值會往最小值移動。
最速下降法(梯度下降法) 就是定義為
\(x := x - 𝜂 \frac{d}{dx}f(x)\)
以實際的數字為例,當 \(𝜂 = 1, x = 3\),x 會在 3 與 -1 之間往返
\(x := 3-1(2*3-2) = -1\)
\(x := -1-1(2*(-1)-2) = 3\)
當 \(𝜂 = 0.1, x = 3\),x 會往最小值逼近
\(x := 3-0.1(2*3-2) = 2.6\)
\(x := 2.6-0.1(2*2.6-2) = 2.3\)
\(x := 2.3-0.1(2*2.3-2) = 2.1\)
當 𝜂 越大,x 就會往返,當 𝜂 越小,x 會往最小值逼近
回到剛剛的 誤差函數
\({E(𝜃)= \frac{1}{2} \sum_{i=1}^{n}(y^{(i)} - f_𝜃(x^{(i)})^2 }\)
因為 \(f_𝜃(x^{(i)})\) 是 \({f(x)=𝜃_0+𝜃_1x}\) ,有兩個未知的參數 \(𝜃_0, 𝜃_1\) ,要改用偏微分找最小值。
\(𝜃_0 := 𝜃_0 - 𝜂 \frac{𝜕E}{𝜕𝜃_0}\)
\(𝜃_1 := 𝜃_1 - 𝜂 \frac{𝜕E}{𝜕𝜃_1}\)
因 E(𝜃) 裡面有 \(f_𝜃(x)\),而 \(f_𝜃(x)\) 裡面有 𝜃
\(u = E(𝜃)\)
\(v = f_𝜃(x)\)
然後用合成函數的方式,計算微分
\(\frac{𝜕E}{𝜕𝜃_0} = \frac{𝜕u}{𝜕v} \frac{𝜕v}{𝜕𝜃_0}\)
其中,前面的部分
\( \frac{𝜕u}{𝜕v} = \frac{𝜕}{𝜕v}( \frac{1}{2} \sum_{i=1}^{n}(y^{(i)} - v)^2 ) = \frac{1}{2} \sum_{i=1}^{n}\frac{𝜕}{𝜕v}(y^{(i)} - v)^2 = \frac{1}{2}\sum_{i=1}^{n}( -2y^{(i)} +2v ) = \sum_{i=1}^{n}( v-y^{(i)} )\)
後面的部分
\(\frac{𝜕v}{𝜕𝜃_0} = \frac{𝜕}{𝜕𝜃_0}( 𝜃_0 + 𝜃_1x ) = 1\)
所以
\(\frac{𝜕E}{𝜕𝜃_0} = \sum_{i=1}^{n}( f_𝜃(x^{(i)})-y^{(i)} )\)
另外對 \(𝜃_1\) 微分,可得到
\(\frac{𝜕v}{𝜕𝜃_1} = \frac{𝜕}{𝜕𝜃_1}( 𝜃_0 + 𝜃_1x ) = x\)
\(\frac{𝜕E}{𝜕𝜃_1} = \sum_{i=1}^{n}( f_𝜃(x^{(i)} )-y^{(i)} )x^{(i)} \)
最後
\(𝜃_0 := 𝜃_0 - 𝜂 \sum_{i=1}^{n}( f_𝜃(x^{(i)} )-y^{(i)} )\)
\(𝜃_1 := 𝜃_1 - 𝜂 \sum_{i=1}^{n}( f_𝜃(x^{(i)} )-y^{(i)} )x^{(i)}\)
用這個方法,就可以找出正確的 \(𝜃_0, 𝜃_1\)
多項式回歸
一開始,我們假設數據的模型是線性的,所以使用一次函數,但也可能用二次或更高次的函數來定義 \(f_𝜃(x)\),會更貼近原本的數據模型
\(f_𝜃(x) = 𝜃_0 + 𝜃_1x + 𝜃_2x^2\)
\(f_𝜃(x) = 𝜃_0 + 𝜃_1x + 𝜃_2x^2 + \dots +𝜃_nx^n\)
回到剛剛的問題,要對 \(𝜃_2\) 進行偏微分
對 \(𝜃_1\) 微分,可得到
\(\frac{𝜕v}{𝜕𝜃_2} = \frac{𝜕}{𝜕𝜃_2}( 𝜃_0 + 𝜃_1x +𝜃_2x^2 ) = x^2\)
\(\frac{𝜕E}{𝜕𝜃_2} = \sum_{i=1}^{n}( f_𝜃(x^{(i)} )- y^{(i)} )(x^{(i)} )^2\)
多元回歸
目前解決的問題,都只有一個變數 x,但大多數的問題,都是有兩個以上的變數。例如廣告的點擊率,可能會受廣告費、顯示位置、顯示大小 等原因影響。
\(f_𝜃(x_1, x_2, x_3)=𝜃_0+𝜃_1x_1+𝜃_2x_2+𝜃_3x_3\)
當變數有 n 個,可改用向量的方式表示
\(𝜃= \left[ \begin{matrix} 𝜃_0 \\ 𝜃_1 \\𝜃_2 \\. \\. \\𝜃_n \end{matrix} \right] x= \left[ \begin{matrix} x_1 \\ x_2 \\x_3 \\. \\. \\x_n \end{matrix} \right] \)
但因為 𝜃 跟 x 個數不同,不容易計算,就再加上一項 \(x_0 =1\)
\(𝜃= \left[ \begin{matrix} 𝜃_0 \\ 𝜃_1 \\𝜃_2 \\. \\. \\𝜃_n \end{matrix} \right] x= \left[ \begin{matrix} x_0 \\ x_1 \\x_2 \\. \\. \\x_n \end{matrix} \right] \)
將 𝜃 變成轉置矩陣後,再跟 x 相乘,就會是剛剛的 \(f_𝜃(x)\)
\(𝜃^Tx = 𝜃_0x_0+𝜃_1x_1+ \dots + 𝜃_nx_n = f_𝜃(x) \)
變成向量後,再用剛剛合成函數偏微分的方法
\(u = E(𝜃)\)
\(v = f_𝜃(x)\)
\(\frac{𝜕u}{𝜕𝜃_j} =\frac{𝜕E}{𝜕𝜃_j} = \frac{𝜕u}{𝜕v} \frac{𝜕v}{𝜕𝜃_j}\)
前面的部分一樣,後面的部分
\(\frac{𝜕v}{𝜕𝜃_j} = \frac{𝜕}{𝜕𝜃_j}( 𝜃^Tx ) = \frac{𝜕}{𝜕𝜃_j}( 𝜃_0x_0+𝜃_1x_1+\dots+𝜃_nx_n )= x_j\)
第 j 項參數的定義為
\(𝜃_j := 𝜃_j - 𝜂 \sum_{i=1}^{n}( f_𝜃(x^{(i)} )-y^{(i)} )x_j^{(i)}\)
當變數增加,計算量變大,用最速下降法會導致計算速度變慢,可用隨機梯度下降法改進。
最速下降法除了有計算速度慢的問題,還有可能陷入局部解的問題,像以下的函數圖形中,不同的起點,可能會找到局部最小值。
隨機梯度下降法
在多元迴歸中,第 j 項參數的定義為
\(𝜃_j := 𝜃_j - 𝜂 \sum_{i=1}^{n}( f_𝜃(x^{(i)} )-y^{(i)} )x_j^{(i)}\)
但因為用到所有的資料的誤差,計算量太大,隨機梯度下降法式隨機選擇一項學習資料,套用在參數的更新上,例如選擇第 k 項。
\(𝜃_j := 𝜃_j - 𝜂 ( f_𝜃(x^{(k)} )-y^{(k)} )x_j^{(k)}\)
原本最速下降法用來更新一次參數的時間,隨機梯度下降法可更新 n 次參數。因為是隨機選擇學習資料,不會陷入局部解的問題。
另外也有隨機選擇 m 筆學習資料的方法,也稱為小量批次資料法,假設 m 筆資料的集合為 K
\(𝜃_j := 𝜃_j - 𝜂 \sum_{k𝜖K} ( f_𝜃(x^{(k)} )-y^{(k)} )x_j^{(k)}\)
沒有留言:
張貼留言