3 優化方法¶
上一節中,咱們介紹了感知機模型損失函數$L(w,b)$的由來,接下來就要說說怎麼經過優化損失函數來得到最終的超平面。在感知機模型中,有兩種優化方式:原始形式和對偶形式。node
3.1 原始形式¶
原始形式採用的是梯度降低法進行求解,若是對梯度降低法不瞭解,能夠參看前面寫過的一篇博客。這裏須要注意的是,在上一小節中說過,感知機是基於誤分類驅動的一種模型,因此不能使用整個數據集進行梯度降低優化,只能對誤分類樣本集合$M$採用隨機梯度降低法或者小批量梯度降低法進行優化。 對損失函數$L(w,b)$求偏導: $$\frac{{\partial L(w,b)}}{{\partial w}} = - \sum\limits_{{x_i} \in M} {{y_i} \cdot {x_i}} $$ $$\frac{{\partial L(w,b)}}{{\partial b}} = - \sum\limits_{{x_i} \in M} {{y_i}} $$ 那麼,$w$的梯度降低迭代公式爲: $$w = w + \alpha \cdot \sum\limits_{{x_i} \in M} {{y_i} \cdot {x_i}} $$ 偏置$b$的梯度降低迭代公式爲: $$b = b + \alpha \cdot \sum\limits_{{x_i} \in M} {{y_i}} $$ 式中,$\alpha $是學習率。 感知機模型中,通常採用隨機梯度降低法進行優化,每次使用一個誤分類樣本點進行梯度更新。假設$(x_i,y_i)$是$M$中的一個誤分類點,進行梯度更新: $$w = w + \alpha \cdot {y_i}{x_i} \tag{3}$$ $$b = b + \alpha \cdot {y_i} \tag{4}$$ 總結一下原始形式優化步驟。 輸入:訓練樣本數據集$D = \{ ({x_i},{y_i})\} _{i = 1}^m$,${x_i} \in X \subseteq {R^n}$,${y_i} \in Y = \{ + 1, - 1\} $,學習率% $\alpha \in (0,1)$
輸出:$w$,$b$;感知機模型$f(x) = sign(w \cdot x + b) $
(1)初始化$w_0$,$b_0$;
(2)在$D$中選取任意點$(x_i,y_i)$;
(3)經過${y_i} \cdot (w \cdot {x_i} + b)$的值判斷是不是誤分類點,若是是,使用式(3)、(4)更新參數;
(4)回到步驟(2)直到準確率知足條件。python
3.2 對偶形式¶
對偶形式時原始形式在執行效率上的優化。經過3.1小節中,咱們知道,每當一個樣本點$x_i$被錯誤分類一次時,都會使用式(3)(4)更新一次參數,那麼,若是樣本點$x_i$在迭代過程當中被錯誤分類屢次(假設$n_i$次),那麼就回有$n_i$次參與到參數更新中,咱們假設參數$w$和$b$的初始值都爲0向量,那麼,最終得到的參數$w$和$b$爲: $$w = \sum\limits_{i = 1}^N {{\beta _i} {y_i}{x_i}} \tag{5}$$ $$b = \sum\limits_{i = 1}^N {{\beta _i} {y_i}} \tag{6}$$ 這是在對偶形式中的參數更新方式,式中,${\beta _i} ={n_i}\alpha$。另外,在原始形式中,咱們使用${y_i}(w \cdot {x_i} + b) \leqslant 0$來判斷樣本點$x_i$是否被錯誤分類,將式(5)(6)代入這一判別式中,得: $${y_i}(\sum\limits_{i = 1}^N {{\beta _i} {y_i}{x_i}} \cdot {x_j} + \sum\limits_{i = 1}^N {{\beta _i} {y_i}}) \leqslant 0 \tag{7}$$ 在對偶形式中,採用式(7)判斷樣本點是否正確分類,觀察後能夠發現,式(7)中有兩個樣本點$x_i$和$x_j$內積計算,這個內積計算的結果在下面的迭代過程當中須要屢次被重複使用,若是咱們事先用矩陣運算計算出全部的樣本之間的內積,那麼在算法迭代過程當中, 僅僅一次的矩陣內積運算比原始形式中每遍歷一個樣本點都要計算$w$與$x_i$的內積要省時得多,這也是對偶形式的感知機模型比原始形式優的緣由。
在感知機模型中,樣本的內積矩陣稱爲Gram矩陣,它是一個對稱矩陣,記爲$G = {[{x_i},{x_j}]_{m \times m}}$。
總結一下對偶形式的步驟。
輸入:訓練樣本數據集$D = \{ ({x_i},{y_i})\} _{i = 1}^m$,${x_i} \in X \subseteq {R^n}$,${y_i} \in Y = \{ + 1, - 1\} $,學習率% $\alpha \in (0,1)$
輸出:$w$,$b$;感知機模型$f(x) = sign(w \cdot x + b) $
(1)初始化全部$n_i$值爲0;
(2)計算Gram矩陣;
(3)在$D$中選取任意點$(x_i,y_i)$;
(4)若是${y_i}(\sum\limits_{i = 1}^N {{\beta _i} {y_i}{x_i}} \cdot {x_j} + \sum\limits_{i = 1}^N {{\beta _i} {y_i}}) \leqslant 0 $,令${\beta _i} = {\beta _i} + \alpha $;
(5)檢查是否還有誤分類樣本點,若是有,回到步驟(2);若是沒有,(5)(6)計算$w$、$b$最終值。jquery