一,感知機模型
1,超平面的定義
令w1,w2,...wn,v都是實數(R) ,其中至少有一個wi不為零,由所有滿足線性方程w1*x1+w2*x2+...+wn*xn=v
的點X=[x1,x2,...xn]組成的集合,稱為空間R的超平面。
從定義可以看出:超平面就是點的集合。集合中的某一點X,與向量w=[w1,w2,...wn]的內積,等於v
特殊地,如果令v等於0,對於訓練集中某個點X:
w*X=w1*x1+w2*x2+...+wn*xn>0,將X標記為一類
w*X=w1*x1+w2*x2+...+wn*xn<0,將X標記為另一類
2,數據集的線性可分
對於數據集T={(X1, y1),(X2, y2)...(XN, yN)},Xi belongs to Rn,yi belongs to {-1, 1},i=1,2,...N
若存在某個超平面S:w*X=0
將數據集中的所有樣本點正確地分類,則稱數據集T線性可分。
所謂正確地分類,就是:如果w*Xi>0,那么樣本點(Xi, yi)中的 yi 等於1
如果w*Xi<0,那么樣本點(Xi, yi)中的 yi 等於-1
因此,給定超平面 w*X=0,對於數據集 T中任何一個點(Xi, yi),都有yi(w*Xi)>0,這樣T中所有的樣本點都被正確地分類了。
如果有某個點(Xi, yi),使得yi(w*Xi)<0,則稱超平面w*X對該點分類失敗,這個點就是一個誤分類的點。
3,感知機模型
f(X)=sign(w*X+b),其中sign是符號函數。
感知機模型,對應着一個超平面w*X+b=0,這個超平面的參數是(w,b),w是超平面的法向量,b是超平面的截距。
我們的目標是,找到一個(w,b),能夠將線性可分的數據集T中的所有的樣本點正確地分成兩類。
如何找到(w,b)?---感知機學習算法做的事
二,感知機學習算法
既然我們的目標是將T中所有的樣本點正確地分類,那么對於某個(w,b),先看一下它在哪些點上分類失敗了。由前面所述:
如果有某個點(Xi, yi),使得yi(w*Xi)<0,則稱超平面w*X對該點分類失敗。采用所有誤分類的點到超平面的距離來衡量分類失敗的程度。
n維空間Rn中一點Xi到超平面w*X+b=0的距離公式:,可參考點到平面的距離公式。
對於誤分類的點,有yi(w*Xi)<0。而距離總是大於0的,因此,某個誤分類的點到超平面的距離表示為:
||w||是一個常數,對最小化L(w,b)沒有影響,故忽略之。
假設所有的誤分類點都在集合M中,得到的損失函數如下:
最終,將尋找(w,b)問題轉化為最小化損失函數,即轉化為一個最優化問題。(損失函數越小,說明誤分類的樣本點“越少”---或者說分類失敗的程度越低)
而這個優化問題可以用梯度下降法來尋找最優的(w,b)
1,為什么使用梯度下降?(沒有解析解,用數值解來求解)
minL(w,b)沒有 analytical solution,我的理解是:不能通過數學公式各種推導,最終求得一個關於最優的w 和 b 的解。比如,Stanford CS229課程中cs229-notes1.pdf 中求解 linear regression 的代價函數J(θ)的參數θ,可以使用Normal Equation 方法:直接根據公式得到θ
Gradient descent gives one way of minimizing J. Let’s discuss a second way of doing so,
this time performing the minimization explicitly and without resorting to an iterative algorithm.
上面說的second way of doing so. second way就是Normal Equation方法
梯度下降,則是一種迭代算法,使用不斷迭代(w,b)的方式,使得L(w,b)變得越來越小。
另外一個原因是(不知道對不對):在《機器學習基石》視頻中講到NP-Hard問題。
x
梯度方向是函數L(w,b)增加最快的方向,而現在要最小化L(w,b),在當前的(w,b)點,從梯度的負方向搜索下一個(w,b)點,那么找到的(w,b)就是使L(w,b)減少的最快的方向上的那個點(還與搜索的步長有關)了。
現在證明為什么梯度方向是函數f(x)增加最快的方向,這里涉及到幾個概念:
①梯度
梯度是個向量,由於x=[x1,x2,...xn]是n維的,梯度就是對x的各個分量xi求偏導數:
②增加的方向---方向導數
給定一個函數f(x),通俗地講方向導數就是決定 自變量x 可以往哪個方向移動。比如在f(x)邊界上,x往某個方向移動時,就不在定義域的范圍內了,那x是不能往該方向變化的。假設 d 是f(x)的一個可行方向,||d||=1,那么函數f 的值在 x 處 沿着方向d 的增長率increase_rate,可以用內積表示:
那么現在,到底往哪個方向增長,能夠使 increase_rate 最大呢?也即,d取哪個方向,使 increase_rate 最大?
根據柯西-施瓦茲不等式有:(后面算法的收斂性證明也會用到)
也就是說,increase_rate的最大值為:
而當 d = 時,根據內積的定義:
increase_rate等於: 此時,increase_rate取最大值,且可行方向d 就是梯度方向!
因此,若要最小化L(w,b),往梯度的負方向搜索(w,b),能使L(w,b)下降得最快。
根據前面的介紹,梯度實際上是求偏導數,因此L(w,b)分別對w 和 b 求偏導數:
而在感知機中是一次只選擇一個誤分類點對(w,b)進行迭代更新,選擇梯度的負方向進行更新,故更新的公式如下所示:
三,感知機學習算法的收斂性證明
由於數據集T是線性可分的,假設存在一個理想的超平面wopt,且||wopt||=1,wopt能夠將T中的所有樣本點正確地分類。
如前所述,若正確分類,則對於數據集 T中任何一個點(Xi, yi),都有yi(w*Xi)>0
取r=min{yi(wopt*Xi)} ,並且令R=max||xi|| ,則迭代次數k滿足下列不等式:
具體證明過程見《統計學習方法》p32-p33頁
在證明過程中,推導出了兩個不等式,一個是:wk*wopt >= knr (k是迭代次數,n是迭代步長,r是min{yi(wopt*Xi))
超平面wopt是理想的超平面,能夠完美地將所有的樣本點正確地分開。wk是采用感知機學習算法使用梯度下降不斷迭代求解的超平面,二者之間的內積,用來衡量這兩個超平面的接近程度。因為兩個向量的內積越大,說明這兩個向量越相似(接近),也就是說:不斷迭代后的wk越來越接近理想的超平面wopt了。(向量的模為1,||wopt||=1)
第二個不等式是:
結合上面的二個不等式,有:
其中第一個不等號成立是因為:wk*wopt >= knr
第二個不等號成立是因為:柯西-施瓦茲不等式
第三個不等號成立是因為:第二個不等式 和 ||wopt||=1
四,參考文獻
《統計學習方法》
《最優化導論》
原文:http://www.cnblogs.com/hapjin/p/6714526.html