1. 程式人生 > >閒談:感知器學習演算法(The perceptron learning algorithm)

閒談:感知器學習演算法(The perceptron learning algorithm)

這一節我們簡單地介紹歷史上的著名演算法——感知器演算法,這在後面的學習理論中也會有所提及。設想我們改變邏輯迴歸演算法,“迫使”它只能輸出-1或1抑或其他定值。在這種情況下,之前的邏輯函式gg就會變成閾值函式signsign

sign(z)={1if z01if z<0 sign(z) = \begin{cases} 1 & \quad \text{if}\ z \ge 0 \\ -1 & \quad \text{if}\ z \lt 0 \\ \end{cases}

如果我們令假設為hθ(

x)=g(θTx)h_\theta(x) = g(\theta^T x),將其帶入之前的迭代法中:

θj:=θj+α(y(i)hθ(x(i)))xj(i). \theta_j := \theta_j + \alpha(y^{(i)} - h_\theta(x^{(i)}))x^{(i)}_j.

至此我們就得出了感知器學習演算法。在19世紀60年代,感知器被認為是大腦中神經元工作的初步模型。需要注意的是雖然感知器模型和我們之前的演算法形式上很相似,但它實際上和線性迴歸等演算法是完全不同型別的演算法。尤其你很難像線性迴歸一樣給感知器概率論上的有效闡述或極大似然估計的推導。

###感知器模型的另一種闡述

資料集的線性可分性

給定一個數據集
T={(x1,y1),(x2,y2),...,(xN,yN)} T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}
其中,xiXRn,yiY={+1,1},i=1,2,...,Nx_i\in\mathcal{X}\in R^n,\quad y_i\in\mathcal{Y}=\{+1,-1\},\quad i=1,2,...,N,如果存在某個超平面S
w

x+b=0 w\cdot x + b =0
能夠將資料集的正例項點和負例項點完全正確地劃分到超平面的兩側,則稱資料集T為線性可分資料集。

感知機學習策略

假設資料集是線性可分的,感知機學習的目標是求得一個能夠將訓練集正負例項點完全分開的超平面。為了找出這樣的超平面,即確定感知機的模型引數wbw、b,需要定義一個損失函式(成本函式)並將損失函式極小化。

損失函式的一個自然選擇是誤分類點的個數。但這樣的損失函式不是引數wbw、b的連續可到函式,不易優化。損失函式的另一個選擇是誤分類點到超平面的距離,這時感知機所採用的。
首先寫出空間RnR^n中任一點x0x_0到超平面S的距離:
1wwx0+b \frac{1}{\Vert w \Vert}\vert w \cdot x_0 + b \vert
這裡w\Vert w \VertwwL2L_2範數。對於誤分類點則有:
yi(wxi+b)>0 -y_i(w \cdot x_i + b) \gt 0
所以誤分類點到超平面的距離是
1wyi(wxi+b) -\frac{1}{\Vert w\Vert}y_i(w \cdot x_i + b)
那麼所有誤分類點到超平面的距離為
1wxiMyi(wxi+b) -\frac{1}{\Vert w\Vert}\sum_{x_i \in M} y_i(w \cdot x_i + b)
不考慮1w\frac{1}{\Vert w\Vert},就得到感知機學習的損失函式。感知機sign(wx+b)sign(w \cdot x + b)學習的損失函式定義為

L(w,b)=xiMyi(wxi+b) L(w,b)=-\sum_{x_i \in M} y_i(w \cdot x_i + b)

使用隨機梯度下降法優化模型,則有:

wL(w,b)=xiMyixibL(w,b)=xiMyi \begin{aligned} \nabla_w L(w,b) & = -\sum_{x_i \in M} y_i x_i \\ \nabla_b L(w,b) & = -\sum_{x_i \in M} y_i \end{aligned}

每碰到一個誤分類點(xi,yi)(x_i, y_i),對w,bw,b進行更新:

w:=w+ηyixib:=b+ηyi \begin{aligned} w &:= w + \eta y_i x_i \\ b & := b + \eta y_i \end{aligned}

本文主要內容來自吳恩達老師網易公開課機器學習中的課件,本人自行翻譯並重新對文章進行編輯排版,轉載請註明出處