感知機模型:
1 判別模型,
2 旨在學習出一個線性劃分的超平面
輸入 T= {(x1,y1),(x2,y2)……(xN,yN)}xi 是一n維的特徵向量,yi屬於{+1,-1}。
通俗來講就是。(假設T是線性可分的)
輸出 函數f(x) = sign(w·x + b)
sign表示符號函數。是一n維的向量。
(w,b)可以確定一個超平面。
首先,我們要使用梯度下降來求解。就得確定損失函數。
分類錯誤的情況 下
定義M是被(w,b)確定的超平面分錯的點。那麼
至於爲什麼這麼定義。是因爲這麼定義方便求導,當然你也可以定義其他類型的loss function。
採用隨機梯度下降。
β是學習率
當然你也可以用批梯度下降,也就是一次性把所有誤分類點的梯度累加,不過效果和效率應該還是SGD比較好。
學習過程:
(1)選取初始值w0
,b0
(2)在訓練集合中選取一個數據(xi,yi)
(3)如果yi(w·xi +b)<0
算法的直觀解釋,當一個實例點被誤分類時,即位於分類超平面的錯誤一側的時候,調整w,b使分離超平面,向該誤分類點一側移動,以減少距離,知道越過這個點,使其被正確分類爲止。
接下來說說對偶問題。這個很重要,對以後學習SVM也很有幫助。
對偶算法的基本思想是,將w,b表示爲實例xi和標記yi的線性組合的形式,通過求解其係數而求得w和b。由上面的公式可知,w,b初始都爲0,而他兩又是由下面公式一步一步迭代出來的。
所以 wb可以寫成下面的形式
αi=niβ 表示在i這個分類點 修改過ni次。也就是把超平面移動過ni次才使得i這個點被分對。
由此代入原公式。
要求的公式爲,我們只需要求出 α,b即可
f(x)=sign(∑Ni=1αiyixi⋅x+b)
(1)
所以迭代過程就變爲了
αi=αi+β
b=b+β
這個地方我剛開始有點迷惑,當我把公式(1)對 αi,b求導時,並不能得到上面的結果。後面才發現,這裏不能對這兩個參數求導,只需要把
代入到
代入前面的迭代過程即可。
轉化爲對偶問題的好處:
轉換爲內積形式。需要多次計算xi · xj 所以可以預先計算並保存結果,提高效率。