1. 程式人生 > >感知機(perceptron)原理總結

感知機(perceptron)原理總結

[TOC] ### 1. 感知機原理 感知機是二分類的線性分類模型,本質上想找到一條直線或者分離超平面對資料進行線性劃分 - 適用於線性可分的資料集,否則感知機不會收斂 假設有一個數據集$D = {(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)}$,其中$x_i \in R^n$,即$x_i = (x_i^{(1)}, x_i^{(2)}, ...x_i^{(n)})$ - 模型的輸入為例項的特徵向量$x_i$,輸出為例項的類別,取值為+1(正例)或者-1(負例) - 我們希望找到一個分離超平面$w^Tx + b = 0,其中w \in R^n$,使得有滿足$w^Tx + b > 0$的例項所對應的類別為正例。而使得滿足$w^Tx + b < 0$的例項所對應的類別為負例。 於是我們可以構建出感知機模型為:$f(x) = sign(w^Tx + b)$ ### 2. 損失函式 定義損失函式一個很自然的想法是建立在誤分類點的個數上,但是使用誤分類點的個數來構造損失函式並不容易優化 - 因此使用**誤分類點到分離超平面的總距離**來構造損失函式 記M為誤分類點的集合,誤分類點到分離超平面的總距離為: $$L(w, b) = \sum_{x_i \in M}\frac{| w^Tx_i + b |}{\parallel w \parallel}$$ 不考慮$\frac{1}{\parallel w \parallel}$(因為上式中,分子和分母有固定倍數的關係),並且去掉絕對值,就可以得到感知機的損失函式為: $$L(w, b) = \sum_{x_i \in M} -y_i (w^Tx_i + b)$$ 此時對於誤分類點,$-y_i (w^Tx_i + b) > 0$成立 ### 3. 優化方法 此時感知機演算法就轉變為,求解引數$w, b$,使得損失函式極小化,即 $$\underset {w, b}{\arg \min L(w, b)} = \underset {w, b}{\arg \min} \sum_{x_i \in M} -y_i (w^Tx_i + b)$$ 因為只有對誤分類點才會對損失函式進行優化,因此感知機的優化採用隨機梯度下降法(SGD),而非使用所有樣本的批量隨機梯度下降法(BGD) 損失函式$L(w, b)$的梯度為: $$\frac{\partial L(w, b)}{\partial w} = -\sum_{x_i \in M} y_i x_i$$ $$\frac{\partial L(w, b)}{\partial b} = -\sum_{x_i \in M} y_i$$ 對於SGD,選取一個誤分類點進行更新,即有: $$w_{t+1} = w_t + \alpha y_ix_i$$ $$b_{t+1} = b_t + \alpha y_i$$ ### 4. 感知機的原始演算法 訓練集包括N個樣例,樣本中包含n個特徵,標記為二分類取值為-1或者+1 - 輸入的樣例:${(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)}$,學習率:$\alpha$ - 輸出分離超平面的係數w, b 演算法執行步驟如下: 1. 初始化w, b以及學習率$\alpha$ 2. 在訓練集選取資料$(x_i, y_i)$ 3. 如果滿足$-y_i(sign(w^Tx_i + b)) > 0$,則 $$w_{t+1} = w_t + \alpha y_i x_i$$ $$b_{t+1} = b_t + \alpha y_i$$ 4. 轉至2,直到訓練集中沒有誤分類點 ### 5. 感知機的對偶演算法 對偶形式的基本想法是,將$w$和$b$表示為例項$x_i$和標記$y_i$的線性組合的形式,通過求解它的係數來求解$w$和$b$ 假設初始值$w_0$和$b_0$都為0,因此$w$和$b$可以表示成$x_iy_i$和$y_i$的增量形式,即原始形式可以化成: $$w_{t+1} = \sum_{i=1}^{N}\beta_i y_i x_i$$ $$b_{t+1} = \sum_{i=1}^N \beta_i y_i$$ 其中,$\beta_i = n_i \alpha$,$n_i$表示第$i$個例項$x_i$更新的次數
此時,模型轉變為 $$f(x) = sign(\sum_{j=1}^N \beta_j x_j y_j x + b)$$ 訓練集包括N個樣例,樣本中包含n個特徵,標記為二分類取值為-1或者+1 - 輸入的樣例:${(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)}$,學習率:$\alpha$ - 輸出分離超平面的係數$\beta$, b 演算法執行步驟如下: 1. 初始化$\beta$, b以及學習率$\alpha$ 2. 在訓練集選取資料$(x_i, y_i)$ 3. 如果滿足$y_i(sign(\sum_{j=1}^N \beta_j y_j x_j x_i + b)) <= 0$,則 $$\beta_j(t+1) = \beta_j(t) + \alpha $$ $$b_{t+1} = b_t + \alpha y_i$$ 4. 轉至2,直到訓練集中沒有誤分類點 其中,訓練例項可以通過計算Gram矩陣(即$x_i$和$x_j$的內積組成的矩陣)的形式來儲存 ### 6. 從圖形中理解感知機的原始演算法 為了方便說明,記$\hat w = (w, b)$,$\hat x = (x, 1)$,則感知機模型可以變為: $$f(x) = sign(\hat w^T \hat x)$$ 之前我們說明了,只有誤分類點才會對$\hat w$進行更新。因此,考慮以下兩種情況: 1. 真實類別為y=+1, 但是模型的輸出為-1 - 考慮到$\hat w^T \hat x = |\hat w||\hat x|cos\theta$ - 對於真實類別,我們希望說明$\hat w^T \hat x > 0$,即$\hat w$和$\hat x$的夾角越小越好,而模型的輸出有$\hat w^T \hat x < 0$,則說明$\hat w$和$\hat x$的夾角過大 - 因此,我們可以通過減少$\hat w$和$\hat x$的夾角來達到目的,即有$\hat w(t+1) = \hat w(t) + \hat x(t)$(對應著$w_{t+1} = w_t + \alpha y_i x_i$,且$\alpha = 1$的情況) - $y_i \hat w_{t+1}^T \hat x_i = y_i \hat w_t^T \hat x_i + y_i \parallel \hat x_i \parallel \geq y_i \hat w_t^T \hat x_i$ ![誤分類情況1](https://img2020.cnblogs.com/blog/1684731/202007/1684731-20200721194137580-1283619835.jpg) 2. 真實類別為y=-1, 但是模型的輸出為+1 - 考慮到$\hat w^T \hat x = |\hat w||\hat x|cos\theta$ - 對於真實類別,我們希望說明$\hat w^T \hat x < 0$,即$\hat w$和$\hat x$的夾角越大越好,而模型的輸出有$\hat w^T \hat x > 0$,則說明$\hat w$和$\hat x$的夾角過小 - 因此,我們可以通過增大$\hat w$和$\hat x$的夾角來達到目的,即有$\hat w(t+1) = \hat w(t) - \hat x(t)$(對應著$w_{t+1} = w_t - \alpha y_i x_i$,且$\alpha$ = 1的情況) - $y_i \hat w_{t+1}^T \hat x_i = y_i \hat w_t^T \hat x_i - y_i \parallel \hat x_i \parallel = y_i \hat w_t^T \hat x_i + \parallel \hat x_i \parallel \geq y_i \hat w_t^T \hat x_i$ ![誤分類情況2](https://img2020.cnblogs.com/blog/1684731/202007/1684731-20200721194214988-1328872986.jpg) 其實,無論對於誤分類的情況1還是情況2,總有$y_i \hat w_{t+1}^T \hat x_i = \geq y_i \hat w_t^T \hat x_i$,因為$y_i \hat w_t^T \hat x_i$的符號代表是否分類正確,大小代表分類超平面是否將其“分得很開”,上面的不等式說明了,對於某個誤分類點來說,更新後要比更新前要好,演算法PLA對該誤分類點“學習”了。 ### 7. 感知機演算法(PLA)的收斂性 對於線性可分的資料集,總能找到一個或者多個分類超平面能將該資料集劃分,這表明了PLA的收斂性。 - 這部分主要參考林軒田的《機器學習基石》,個人覺得講得要比李航的《統計學習方法》要清晰,雖然證明本質上是一樣的 說明兩個向量的相似性有很多方法,其中計算兩個向量的內積是一種方法。當內積越大,表明兩個向量越相似。當然,這需要考慮向量的長度,當模長越大時,向量的內積也會越來越大。 - 符號說明:$w_f$代表真實的w,$w_t$代表我們找到的w,這裡為了符號簡潔些,不記成$\hat w$,但是含義一樣,即$w_f$和$w_t$裡面包含$b$,記學習率$\alpha = 1$ 1. 先討論$w_f$和$w_t$的內積,$w_0$為0向量 \begin{equation} \begin{split} w_f^T w_t & = w_f^T(w_{t-1} + y_ix_i) \\\\ & = w_f^T w_{t-1} + y_i w_f^T x_i \\\\ & \geq w_f w_{t-1} + \underset {i} {min} (y_i w_f^T x_i) \\\\ & \geq w_f w_0 + t \underset {i} {min} (y_i w_f^T x_i) \\\\ & = t \underset {i} {min} (y_i w_f^T x_i) \end{split} \end{equation} 2. 討論$w_f$和$w_t$的模長,由於只有誤分類點才更新,所以有$y_i w_{t}^T x_i \leq 0$ \begin{equation} \begin{split} \parallel w_t \parallel^2 & = \parallel w_{t-1} + y_ix_i \parallel^2 \\\\ &= \parallel w_{t-1} \parallel^2 + 2y_i w_{t_1}^T x_i + \parallel y_ix_i \parallel^2 \\\\ & \leq \parallel w_{t-1} \parallel^2 + \parallel x_i \parallel^2 \\\\ & \leq \parallel w_{t-1} \parallel^2 + \underset {i} {max} \parallel x_i \parallel^2 \\\\ & \leq \parallel w_{0} \parallel^2 + t \underset {i} {max} \parallel x_i \parallel^2 \\\\ & = t \underset {i} {max} \parallel x_i \parallel^2 \end{split} \end{equation} 3. 討論$w_f$和$w_t$的角度 \begin{equation} \begin{split} 1 \geq cos \theta = \frac{w_f^T w_t}{\parallel w_f \parallel \parallel w_t \parallel} & \geq \frac{t \underset {i} {min} (y_i w_f^T x_i)}{\parallel w_f \parallel \sqrt{t \underset {i} {max} \parallel x_i \parallel^2}} \\\\ & = \frac{\sqrt{t} \underset {i} {min} (y_i w_f^T x_i)}{\parallel w_f \parallel \sqrt{\underset {i} {max} \parallel x_i \parallel^2}} \end{split} \end{equation} 4. 化解得到t的關係式 $$t \leq \frac{\parallel w_f \parallel^2 \underset {i} {max} \parallel x_i \parallel^2}{\underset {i} {min} (y_i w_f^T x_i)^2} = \frac{R^2}{\rho^2}$$ 其中,$$R^2 = \underset {i} {max} \parallel x_i \parallel^2, \rho = \frac{\underset {i} {min} (y_i w_f^T x_i)}{\parallel w_f \parallel}$$ 由上述不等式說明了,更新次數是有上限的,這也就證明了收斂性 ### 8. 應用場景與缺陷 - 感知機僅限於資料線性可分的情況,對於線性不可分的情況,該演算法不收斂。 - 感知機的收斂步數受兩類別之間間隔的影響。間隔越小,收斂的步數越大。 ### 9. 其他 從感知機的分類原理中,可以看出滿足條件的超平面並不止一個,不同的超平面依賴於引數的初始值。也就是說感知機模型可以有多個解。 - 泛化能力最好的決策超平面 - 能夠將兩個型別的樣本分開 - 能夠最大化決策邊界附近的兩型別之間的距離 當然,感知機也是神經網路的重要基礎,因此也可以從神經網路的角度來說明 ### 10. 參考資料 - 李航《統計學習方法》 - 林軒田《機器學習