感知機(perceptron),聽着很牛比,其實就是二類分類的線性分類模型
屬於判別模型,1957年由Rosenblatt提出,是神經網絡和支持向量機的基礎
任何統計機器學習都是三要素,只須要說清楚模型,策略和算法html
感知機是一種線性分類模型。
假設空間是定義在特徵空間中的線性分類模型或線性分類器,即函數集合
網絡
幾何解釋爲,
線性方程,wx+b=0,對應於特徵空間中的一個分離超平面(separating hyperplane),其中w爲超平面的法向量,b是超平面的截距。該平面將數據點分爲正,負兩類機器學習
策略
策略就是要定義損失函數,並讓損失函數極小化
如何選取損失函數很關鍵?
這裏一個天然的選擇是,用誤分點的總數做爲損失函數,但問題是這個損失函數和w,b不要緊,不易優化
因此這裏選擇誤分點到超平面的總距離做爲損失函數,這樣損失函數對於w,b是連續可導的,這樣就可使用梯度降低來找到最優解
任一點到平面S的距離,參考點到平面的距離公式
因此能夠用來替換
假設誤分點集合爲M,那麼全部誤分點到超平面S的總距離爲,
函數
損失函數是非負,若是沒有誤分點,爲0,誤分點越少,離超平面越近,損失函數值越小優化
算法3d
要解決的問題如上,因爲損失函數是對於w和b連續可導的,因此這裏使用梯度降低法(gradient descent)來找到最優解,
Andrew Ng的公開課,理解梯度降低比較好的例子是,想象一下你在山上若是要以最快的速度下山,你會選擇如何走一步(注意只是一步,下一步取決於新的位置)
應該選擇梯度的反方向,首先要定義梯度,
blog
能夠看出梯度就是對於損失函數求偏導數,對於w的梯度就是對於L(w,b)求w的偏導,一樣對於b的梯度也是對L(w,b)求b的偏導數
導數和微分 (參考wiki)
導數描述了這個函數在這一點附近的變化率。導數的本質是經過極限的概念對函數進行局部的線性逼近。
微分是對函數的局部變化率的一種線性描述。微分能夠近似地描述當函數自變量的取值做足夠小的改變時,函數的值是怎樣改變的。
可微的函數,其微分等於導數乘以自變量的微分,所以,導數也叫作微商。
一個多變量的函數的偏導數是它關於其中一個變量的導數,而保持其餘變量恆定
幾何意義是,在求偏導那維上的切線斜率
上面能夠看到對於梯度的計算須要使用全部的誤分樣本點,若是M很是大的話,效率很低,因此這裏使用的是隨機梯度降低
隨機梯度降低(stochastic gradient descent)
可見這裏只是用一個樣本點的損失函數的偏導值來修正w和b,效率會高
但問題是,此次修正只是減少對該樣本點的損失值,而非全部樣本點的總體的損失值,也就是所此次修正是對於該樣本點的局部最優,而非對整個樣本集的全局最優
因此隨機梯度降低,會致使降低過程的震盪,但每每能夠逼近全局最優
固然這個方法的優勢,不須要遍歷全部的樣本點,能夠針對每一個樣本點對w和b進行迭代更新,這樣經過部分樣本點就可使損失函數達到最小或收斂
感知機學習算法,給不一樣的初值或選取不一樣的誤分類點,獲得的解多是不一樣的,好比對於下圖的例子,明顯解不是惟一的,會有不少解,爲了獲得惟一的超平面,須要增長約束條件,這就是支持向量機的思路
而且能夠證實(參考原書),當訓練集線性可分時,感知機學習算法必定會收斂
可是若是非線性可分,那麼會致使不收斂,迭代結果會反覆發生震盪
對偶形式
假設初始值w0,b0均爲0,而且通過以下迭代更新
最後學習到的w,b分別能夠表示爲
由於每次w,b更新後,偏差樣本點會發生變化,只有偏差樣本點會用於修正w,b,因此當屢次修正仍然是偏差點,說明該樣本點很難正確分類, 和該樣本點用於修正的次數成正比
下面是對偶形式的算法,
只是用那項去替換w,b沒有替換,why?
替換後,由來替換 迭代
本質有什麼區別嗎?對偶形式的好處是什麼?