1. 程式人生 > >李航《統計學習方法》CH02

李航《統計學習方法》CH02

三元 由於 nis mir 集合 體會 .com 測試 git

CH02 感知機

前言

章節目錄

  1. 感知機模型
  2. 感知機學習策略
    1. 數據集的線性可分性
    2. 感知機學習策略
    3. 感知機學習算法
  3. 感知機學習算法
    1. 感知機學習算法的原始形式
    2. 算法的收斂性
    3. 感知機學習算法的對偶形式

導讀

感知機是二類分類的線性分類模型。

  • $L(w,b)$的經驗風險最小化
  • 本章中涉及到向量內積,有超平面的概念,也有線性可分數據集的說明,在策略部分有說明損關於失函數的選擇的考慮,可以和CH07一起看。
  • 本章涉及的兩個例子,思考一下為什麽$\eta=1$,進而思考一下參數空間,這兩個例子設計了相應的測試案例實現, 在後面的內容中也有展示。
  • 在收斂性證明那部分提到了偏置合並到權值向量的技巧,這點在LR和SVM中都有應用。
  • 第一次涉及Gram Matrix $G=[x_i\cdot x_j]_{N\times N}$
  • 感知機的激活函數是符號函數.
  • 感知機是神經網絡和支持向量機的基礎.
  • 當我們討論決策邊界的時候, 實際上是在考慮算法的幾何解釋.
  • 關於感知機為什麽不能處理異或問題, 可以借助下圖理解.

技術分享圖片

上面紫色和橙色為兩類點, 線性的分割超平面應該要垂直於那些紅粉和紫色的線.

三要素

模型

輸入空間:$\mathcal X\sube \bf R^n$

輸出空間:$\mathcal Y={+1,-1}$

決策函數:$f(x)=sign (w\cdot x+b)$

策略

確定學習策略就是定義**(經驗)**損失函數並將損失函數最小化。

註意這裏提到了經驗,所以學習是base在訓練數據集上的操作

損失函數選擇

損失函數的一個自然選擇是誤分類點的總數,但是,這樣的損失函數不是參數$w,b$的連續可導函數,不易優化

損失函數的另一個選擇是誤分類點到超平面$S$的總距離,這是感知機所采用的

感知機學習的經驗風險函數(損失函數) $$ L(w,b)=-\sum_{x_i\in M}y_i(w\cdot x_i+b) $$ 其中$M$是誤分類點的集合

給定訓練數據集$T$,損失函數$L(w,b)$是$w$和$b$的連續可導函數

算法

原始形式

輸入:$T={(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)}\ x_i\in \cal X=\bf R^n\mit , y_i\in \cal Y\it ={-1,+1}, i=1,2,\dots,N; \ \ 0<\eta\leqslant 1$

輸出:$w,b;f(x)=sign(w\cdot x+b)$

  1. 選取初值$w_0,b_0$

  2. 訓練集中選取數據$(x_i,y_i)$

  3. 如果$y_i(w\cdot x_i+b)\leqslant 0$ $$ w\leftarrow w+\eta y_ix_i \nonumber\ b\leftarrow b+\eta y_i $$

  4. 轉至(2),直至訓練集中沒有誤分類點

註意這個原始形式中的叠代公式,可以對$x$補1,將$w$和$b$合並在一起.

對偶形式

輸入:$T={(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)}\ x_i\in \cal X=\bf R^n\mit , y_i\in \cal Y\it ={-1,+1}, i=1,2,\dots,N; \ \ 0<\eta\leqslant 1$

輸出: $$ \alpha ,b; f(x)=sign\left(\sum_{j=1}^N\alpha_jy_jx_j\cdot x+b\right)\nonumber\ \alpha=(\alpha_1,\alpha_2,\cdots,\alpha_N)^T $$

  1. $\alpha \leftarrow 0,b\leftarrow 0$

  2. 訓練集中選取數據$(x_i,y_i)$

  3. 如果$y_i\left(\sum_{j=1}^N\alpha_jy_jx_j\cdot x+b\right) \leqslant 0?$ $$ \alpha_i\leftarrow \alpha_i+\eta \nonumber\ b\leftarrow b+\eta y_i $$

  4. 轉至(2),直至訓練集中沒有誤分類點

Gram matrix

對偶形式中,訓練實例僅以內積的形式出現。

為了方便可預先將訓練集中的實例間的內積計算出來並以矩陣的形式存儲,這個矩陣就是所謂的Gram矩陣 $$ G=[x_i\cdot x_j]_{N\times N} \nonumber $$

例子

例2.1

這個例子裏面$\eta = 1$

感知機學習算法由於采用不同的初值或選取不同的誤分類點,解可以不同。

另外,在這個例子之後,證明算法收斂性的部分,有一段為了便於敘述與推導的描述,提到了將偏置並入權重向量的方法,這個在涉及到內積計算的時候可能都可以用到,可以擴展閱讀CH06,CH07部分的內容描述。

例2.2

這個例子也簡單,註意兩點

  1. $\eta=1$
  2. $\alpha_i\leftarrow \alpha_i+1, b\leftarrow b+y_i$

以上:

  1. 為什麽$\eta$選了1,這樣得到的值數量級是1
  2. 這個表達式中用到了上面的$\eta=1$這個結果,已經做了簡化

所以,這裏可以體會下,調整學習率$\eta $的作用。學習率決定了參數空間。

Logic_01

經常被舉例子的異或問題^1,用感知機不能實現,因為對應的數據非線性可分。但是可以用感知機實現其他邏輯運算,也就是提供對應的邏輯運算的數據,然後學習模型。

這個例子的數據是二元的,其中NOT運算只針對輸入向量的第一個維度

Logic_02

這個例子的數據是三元的.

MNIST_01

這個選擇兩類數據進行區分,不同的選擇應該得到的結果會有一定差異,數據不上傳了,在sklearn裏面有相應的數據,直接引用了,註意測試案例裏面用的是01,相對來講好區分一些。

李航《統計學習方法》CH02