目錄感知機 (perceptron) 是二類分類的線性分類模型, 其輸入為例項的特徵向量, 輸出為例項的類別, 取 \(+1\) 和 \(-1\) 二值. 感知機對應於輸入空間 (特徵空間) 中將例項劃分為正負兩類的分離超平面, 屬於判別模型. 感知機學習旨在求出將訓練資料進行線性劃分的分離超平面, 為此匯入基於誤分類的損失函式, 利用梯度下降法對損失函式進行極小化, 求得感知機模型. 感知機學習演算法具有簡單而易於實現的優點, 分為原始形式和對偶形式. 感知機 1957 年由 rosenblatt 提出, 是神經網路與支援向量機的基礎.
假設輸入空間 (特徵空間) 是 \(\mathcal = \mathbb^n\), 輸出空間是 \(\mathcal = \\), 由輸入空間到輸出空間的如下函式
\[f(\mathbf) = \text(\mathbf^t \mathbf+b))
\]稱為感知機. 其中, \(\mathbf \in \mathbb^n\) 與 \(b \in \mathbb\) 分別為感知機的模型引數權值向量和偏置. 感知機模型屬於線性分類模型, 屬於判別模型.
假設訓練資料集 \(t = \_1, y_1), (\mathbf_2, y_2), \cdots, (\mathbf_n, y_n) \}\) 是線性可分的, 感知機學習的目標是求得乙個能夠將訓練集正例項點和負例項點完全正確分開的分離超平面 (seperating hyperplane). 感知模型損失函式的乙個自然的選擇是誤分類點總數, 但這樣的損失函式不是引數 \(\mathbf\) 與 \(b\) 的連續可導函式, 不易優化. 這裡的損失函式選擇為誤分類點到超平面 \(s\) 的總距離. 可以計算得到輸入空間 \(\mathbb^n\) 中任一點 \(\mathbf_0\) 到超平面 \(s\) 的距離是
\[\frac||}|\mathbf^t \mathbf_0+b|
\]這裡的 \(||\mathbf||\) 是 \(\mathbf\) 的 \(l_2\) 範數. 其次對於誤分類的資料 \((\mathbf_i, y_i)\) 來說,
\[-y_i (\mathbf^t \mathbf_i+b) > 0
\]成立, 因此誤分類點 \(\mathbf_i\) 到超平面 \(s\) 的距離是 (注意這裡的 \(y_i \in \\))
\[-\frac||}y_i (\mathbf^t \mathbf_i+b)
\]因此假設超平面 \(s\) 的誤分類點集合為 \(m\), 那麼所有誤分類點到超平面 \(s\) 的總距離為
\[-\sum__i \in m}\frac||}y_i (\mathbf^t \mathbf_i+b)
\]分子分母都含有 \(\mathbf\), 並且具有固定的倍數關係, 可以對權值向量進行規範化, 即 \(||\mathbf||=1\), 此時感知機的損失函式定義為
\[l(\mathbf, b) = -\sum__i \in m} y_i (\mathbf^t \mathbf_i+b)
\]顯然損失函式 \(l(\mathbf, b)\) 是非負的, 若沒有誤分類點則為 \(0\), 對於乙個特定的樣本點的損失函式, 在誤分類時是引數 \(\mathbf\) 與 \(b\) 的線性函式, 在正確分類時為 \(0\). 因此給定訓練集 \(t\), 損失函式 \(l(\mathbf, b)\) 是引數 \(\mathbf\) 與 \(b\) 的連續可導函式.
給定乙個訓練資料集 \(t = \_1, y_1), (\mathbf_2, y_2), \cdots, (\mathbf_n, y_n) \}\), 其中 \(\mathbf_i \in \mathcal = \mathbb^n\), \(y_i \in \mathcal = \\), \(i=1,2,\cdots,n\), 感知機學習演算法為
\[(\mathbf,b) = \arg\min_,b} l(\mathbf, b) = \arg\min_,b} \left[-\sum__i \in m} y_i (\mathbf^t \mathbf_i+b)\right]
\]感知機學習演算法是誤分類驅動的, 具體採用隨機梯度下降法 (stochastic gradient descent). 首先任意選取乙個引數為 \((\mathbf_0,b_0)\) 的超平面, 然後利用梯度下降法不斷地極小化目標函式, 極小化過程不是一次使 \(m\) 中所有誤分類點的梯度下降, 而是一次隨機選取乙個誤分類點使其梯度下降. 這裡損失函式的梯度由
\[\nabla_} l(\mathbf, b) = -\sum__i \in m} y_i \mathbf_i
\]\[\nabla_ l(\mathbf, b) = -\sum__i \in m} y_i
\]給出. 因此隨機選擇乙個誤分類點 \((\mathbf_i, y_i)\), 對\((\mathbf,b)\) 進行更新為 \(\mathbf \leftarrow \mathbf + \eta y_i \mathbf_i\) 和 \(b \leftarrow b + \eta y_i\). 式中 \(\eta\) (\(0
下面將感知機學習演算法的原始形式總結如下,
輸入: 訓練資料集 \(t = \_1, y_1), (\mathbf_2, y_2), \cdots, (\mathbf_n, y_n) \}\), 其中 \(\mathbf_i \in \mathcal = \mathbb^n\), \(y_i \in \mathcal = \\), \(i=1,2,\cdots,n\), 學習率 \(\eta\) (\(0
輸出: 感知機模型 \(f(\mathbf) = \text(\mathbf^t \mathbf+b))\).
選取初始引數為 \((\mathbf_0,b_0)\).
在訓練集中隨機選擇資料 \((\mathbf_i, y_i)\).
如果 \(y_i \left(\mathbf \mathbf_i +b \right) \leq 0\), 更新
\[\mathbf \leftarrow \mathbf + \eta y_i \mathbf_i
\]\[b \leftarrow b + \eta y_i
\]轉至第 2 步, 直至訓練集中沒有誤分類點.
對偶形式的基本想法是, 將 \(\mathbf\) 與 \(b\) 表示為例項 \(\mathbf_i\) 和標記 \(y_i\) 的線性組合的形式, 通過求解其係數而求得 \(\mathbf\) 與 \(b\). 不失一般性, 可以假設初始引數 \(\mathbf_0\) 與 \(b_0\) 均為 \(0\). 對誤分類點 \((\mathbf_i, y_i)\) 通過 \(\mathbf \leftarrow \mathbf + \eta y_i \mathbf_i\) 和 \(b \leftarrow b + \eta y_i\) 逐步更新, 假設更新 \(n\) 次, 則 \(\mathbf\), \(b\) 的增量分別為 \(\alpha_i y_i \mathbf_i\) 和 \(\alpha_i y_i\), 這裡 \(\alpha = n_i \eta\), \(n_i\) 是第 \(i\) 個例項點因為誤分類而進行更新的次數. 這樣最後學習到的 \(\mathbf\), \(b\) 可以分別表示為
\[\mathbf = \sum^n_ \alpha_i y_i \mathbf_i
\]\[b = \sum^n_ \alpha_i y_i
\]例項點更新次數越多, 意味著它離分離超平面越近, 也就越難正確的分類, 這樣的例項對學習結果影響最大.
感知機學習演算法對偶形式在每一輪迭代判斷誤分類條件時, 用 \(y_i \left(\sum^n_ \alpha_j y_j \mathbf_j \cdot \mathbf_i +b \right) \leq 0\) 代替 \(y_i \left(\mathbf \mathbf_i +b \right) \leq 0\) 判斷誤分類. 注意到對偶形式中訓練例項僅以內積的形式出現, 為了方便可以預先將訓練集中例項間的內積計算出來並以矩陣的形式儲存, 即 gram 矩陣:
\[g = [\mathbf_i \cdot \mathbf_j]_
\]下面將感知機學習演算法的原始形式總結如下,
輸入: 訓練資料集 \(t = \_1, y_1), (\mathbf_2, y_2), \cdots, (\mathbf_n, y_n) \}\), 其中 \(\mathbf_i \in \mathcal = \mathbb^n\), \(y_i \in \mathcal = \\), \(i=1,2,\cdots,n\), 學習率 \(\eta\) (\(0
輸出: 感知機模型 \(f(\mathbf = \text\left(\sum^n_ \alpha_j y_j \mathbf_j \cdot \mathbf_i +b\right)\).
選取初始引數為 \((\mathbf_0,b_0)\).
在訓練集中隨機選擇資料 \((\mathbf_i, y_i)\).
如果 \(y_i \left(\sum^n_ \alpha_j y_j \mathbf_j \cdot \mathbf_i +b \right) \leq 0\), 更新
\[\alpha_i \leftarrow \alpha_i + \eta
\]\[b \leftarrow b + \eta y_i
\]轉至第 2 步, 直至訓練集中沒有誤分類點.
感知機是線性模型, 並且只能處理線性可分問題, 例如下圖中與, 或, 非問題都存在乙個超平面直接將他們分開, 但異或模型卻不能.
線性可分的與或非問題, 以及線性不可分的異或問題.
如下圖中使用兩層感知機就能解決異或問題.
能解決異或問題的兩層感知機
機器學習 感知機模型
感知機模型,主要的思想是用乙個函式,通過不斷的調節權值和偏置的數值,將乙個線性可分的集合分類 感知機演算法 fx sign w x b sign 1 x 0,1 x 0 對於最優的w,b的值,採用了損失函式 l w,b sum xi 屬於 m yi w xi b m 為錯誤分類點的集合 感知機學習演...
機器學習 手寫感知機模型
資料集來自mnist資料集,主要利用numpy裡的matrix矩陣計算。演算法的實現主要在於對引數w和b的求解。演算法的推導過程參考李航 統計學習方法 推導最優化函式然後更新引數的過程。import numpy as np import pandas as pd import time defdat...
機器學習筆記 感知機模型
knn演算法matlab實現 感知機模型 感知機介紹 感知機 假設輸入空間 特徵空間 是 chi subseteq r n 輸出空間是 y 輸入 x in chi 表示例項的特徵向量,對應於輸入空間 特徵空間 的點 輸出 y in gamma 表示例項的類別 由輸入空間到輸出空間的函式 f x si...