【算法周】哆啦A夢(mèng)称开,我想要個(gè)“感知機(jī)”

歡迎大家關(guān)注公眾號(hào)【哈希大數(shù)據(jù)】
感知機(jī)可以說是最古老的分類方法之一了,在1957年就已經(jīng)提出乓梨。今天看來它的分類模型在大多數(shù)時(shí)候泛化能力不強(qiáng)鳖轰,但是它的原理卻值得好好研究。因?yàn)檠芯客噶烁兄獧C(jī)模型扶镀,學(xué)習(xí)支持向量機(jī)的話會(huì)降低不少難度蕴侣。同時(shí)如果研究透了感知機(jī)模型,再學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)臭觉,深度學(xué)習(xí)昆雀,也是一個(gè)很好的起點(diǎn)。這里對(duì)感知機(jī)的原理做一個(gè)小結(jié)蝠筑。
1. 感知機(jī)模型
 感知機(jī)的思想很簡(jiǎn)單忆肾,比如我們?cè)谝粋€(gè)平臺(tái)上有很多的男孩女孩,感知機(jī)的模型就是嘗試找到一條直線菱肖,能夠把所有的男孩和女孩隔離開客冈。放到三維空間或者更高維的空間,感知機(jī)的模型就是嘗試找到一個(gè)超平面稳强,能夠把所有的二元類別隔離開场仲。當(dāng)然你會(huì)問和悦,如果我們找不到這么一條直線的話怎么辦?找不到的話那就意味著類別線性不可分渠缕,也就意味著感知機(jī)模型不適合你的數(shù)據(jù)的分類鸽素。使用感知機(jī)一個(gè)最大的前提,就是數(shù)據(jù)是線性可分的亦鳞。這嚴(yán)重限制了感知機(jī)的使用場(chǎng)景馍忽。它的分類競(jìng)爭(zhēng)對(duì)手在面對(duì)不可分的情況時(shí),比如支持向量機(jī)可以通過核技巧來讓數(shù)據(jù)在高維可分燕差,神經(jīng)網(wǎng)絡(luò)可以通過激活函數(shù)和增加隱藏層來讓數(shù)據(jù)可分遭笋。
用數(shù)學(xué)的語言來說,如果我們有m個(gè)樣本徒探,每個(gè)樣本對(duì)應(yīng)于n維特征和一個(gè)二元類別輸出瓦呼,如下:
 (x1(0),x2(0),...xn(0),y0), (x1(1),x2(1),...xn(1),y1),...
(x1(m),x2(m),...xn(m),ym)
我們的目標(biāo)是找到這樣一個(gè)超平面:
θ01x1+...+θnxn=0
讓其中一種類別的樣本都滿足θ01x1+...+θnxn >0,讓另一種類別的樣本都滿足θ01x1+...+θnxn<0 .
從而得到線性可分。如果數(shù)據(jù)線性可分测暗,這樣的超平面一般都不是唯一的央串,也就是說感知機(jī)模型可以有多個(gè)解。
為了簡(jiǎn)化這個(gè)超平面的寫法碗啄,我們?cè)黾右粋€(gè)特征
x0=1 质和,這樣超平面為

image

進(jìn)一步用向量來表示為: θ?x=0,其中θ為(n+1)x1的向量,x為 (n+1)x1 的向量, ?為內(nèi)積稚字,后面我們都用向量來表示超平面饲宿。
而感知機(jī)的模型可以定義為:y=sign(θ?x) 其中:
image

2. 感知機(jī)模型損失函數(shù)
為了后面便于定義損失函數(shù),我們將滿足θ?x>0的樣本類別輸出值取為1尉共,滿足θ?x<0的樣本類別輸出值取為-1褒傅,這樣取y的值有一個(gè)好處弃锐,就是方便定義損失函數(shù)袄友。因?yàn)檎_分類的樣本滿足 yθ?x>0,而錯(cuò)誤分類的樣本滿足 yθ?x<0霹菊。我們損失函數(shù)的優(yōu)化目標(biāo)剧蚣,就是期望使誤分類的所有樣本,到超平面的距離之和最小旋廷。
由于yθ?x<0鸠按,所以對(duì)于每一個(gè)誤分類的樣本i ,到超平面的距離是?y(i)θ?x(i)/||θ||2 , 其中||θ||2為L(zhǎng)2范數(shù)饶碘。
我們假設(shè)所有誤分類的點(diǎn)的集合為M目尖,則所有誤分類的樣本到超平面的距離之和為:
image

這樣我們就得到了初步的感知機(jī)模型的損失函數(shù)。
我們研究可以發(fā)現(xiàn)扎运,分子和分母都含有θ,當(dāng)分子的θ擴(kuò)大N倍時(shí)瑟曲,分母的L2范數(shù)也會(huì)擴(kuò)大N倍饮戳。也就是說,分子和分母有固定的倍數(shù)關(guān)系洞拨。那么我們可以固定分子或者分母為1扯罐,然后求另一個(gè)即分子自己或者分母的倒數(shù)的最小化作為損失函數(shù),這樣可以簡(jiǎn)化我們的損失函數(shù)烦衣。在感知機(jī)模型中歹河,我們采用的是保留分子,即最終感知機(jī)模型的損失函數(shù)簡(jiǎn)化為:
image

題外話花吟,如果大家了解過支持向量機(jī)秸歧,就發(fā)現(xiàn)支持向量機(jī)采用的是固定分子為1,然后求1/||θ||2的最大化示辈。采用不同的損失函數(shù)主要與它的后面的優(yōu)化算法有關(guān)系寥茫。
3. 感知機(jī)模型損失函數(shù)的優(yōu)化方法
上一節(jié)我們講到了感知機(jī)的損失函數(shù):
image

其中M是所有誤分類的點(diǎn)的集合。這是一個(gè)凸函數(shù)矾麻,可以用梯度下降法或者擬牛頓法來解決纱耻,常用的是梯度下降法。
但是用普通的基于所有樣本的梯度和的均值的批量梯度下降法(BGD)是行不通的险耀,原因在于我們的損失函數(shù)里面有限定弄喘,只有誤分類的M集合里面的樣本才能參與損失函數(shù)的優(yōu)化。所以我們不能用最普通的批量梯度下降,只能采用隨機(jī)梯度下降(SGD)或者小批量梯度下降(MBGD)甩牺。如果對(duì)這幾種梯度下降法的區(qū)別不了解蘑志,可以參考我的另一篇文章梯度下降(Gradient Descent)小結(jié)。
感知機(jī)模型選擇的是采用隨機(jī)梯度下降贬派,這意味著我們每次僅僅需要使用一個(gè)誤分類的點(diǎn)來更新梯度急但。

image

由于我們采用隨機(jī)梯度下降,所以每次僅僅采用一個(gè)誤分類的樣本來計(jì)算梯度搞乏,假設(shè)采用第i個(gè)樣本來更新梯度波桩,則簡(jiǎn)化后的θ向量的梯度下降迭代公式為:
θ=θ+αy(i)x(i)
其中α為步長(zhǎng),y(i)為樣本輸出1或者-1请敦,x(i)為(n+1)x1的向量镐躲。
4. 感知機(jī)模型的算法
前兩節(jié)我們談到了感知機(jī)模型,對(duì)應(yīng)的損失函數(shù)和優(yōu)化方法侍筛。這里我們就對(duì)感知機(jī)模型基于隨機(jī)梯度下降來求θ向量的算法做一個(gè)總結(jié)萤皂。
算法的輸入為m個(gè)樣本,每個(gè)樣本對(duì)應(yīng)于n維特征和一個(gè)二元類別輸出1或者-1匣椰,如下:
 (x1(0),x2(0),...xn(0),y0), (x1(1),x2(1),...xn(1),y1),...
(x1(m),x2(m),...xn(m),ym)
輸出為分離超平面的模型系數(shù)θ向量
算法的執(zhí)行步驟如下:

  1. 定義所有x0為1裆熙。選擇θ向量的初值和 步長(zhǎng)α的初值。可以將θ向量置為0向量入录,步長(zhǎng)設(shè)置為1齐媒。要注意的是,由于感知機(jī)的解不唯一纷跛,使用的這兩個(gè)初值會(huì)影響θ向量的最終迭代結(jié)果喻括。
    (x1(i),x2(i),...xn(i),yi) , 用向量表示即(x(i),y(i)),這個(gè)點(diǎn)應(yīng)該滿足:y(i)θ?x(i)<0
  2. 對(duì)θ向量進(jìn)行一次隨機(jī)梯度下降的迭代:
    θ=θ+αy(i)x(i)
    4)檢查訓(xùn)練集里是否還有誤分類的點(diǎn)贫奠,如果沒有唬血,算法結(jié)束,此時(shí)的θ向量即為最終結(jié)果唤崭。如果有拷恨,繼續(xù)第2步。
    5. 感知機(jī)模型的算法對(duì)偶形式
    上一節(jié)的感知機(jī)模型的算法形式我們一般稱為感知機(jī)模型的算法原始形式谢肾。對(duì)偶形式是對(duì)算法執(zhí)行速度的優(yōu)化腕侄。具體是怎么優(yōu)化的呢?
    通過上一節(jié)感知機(jī)模型的算法原始形式
    θ=θ+αy(i)x(i)
    可以看出芦疏,我們每次梯度的迭代都是選擇的一個(gè)樣本來更新θ向量冕杠。最終經(jīng)過若干次的迭代得到最終的結(jié)果。對(duì)于從來都沒有誤分類過的樣本酸茴,他被選擇參與θ迭代的次數(shù)是0分预,對(duì)于被多次誤分類而更新的樣本j,它參與θ迭代的次數(shù)我們?cè)O(shè)置為mj薪捍。如果令θ向量初始值為0向量笼痹, 這樣我們的θ向量的表達(dá)式可以寫為:
    image

    其中mj為樣本(x(j),y(j))在隨機(jī)梯度下降到當(dāng)前的這一步之前因誤分類而更新的次數(shù)。
    每一個(gè)樣本(x(j),y(j))的mj的初始值為0酪穿,每當(dāng)此樣本在某一次梯度下降迭代中因誤分類而更新時(shí)凳干,mj 的值加1。
    由于步長(zhǎng)α為常量被济,我們令βj=αmj,這樣θ向量的表達(dá)式為:
    image

    在每一步判斷誤分類條件的地方救赐,我們用 y(i)θ?x(i)<0 的變種:
    來判斷誤分類。
    注意到這個(gè)判斷誤分類的形式里面是計(jì)算兩個(gè)樣本x(i)和x(j)的內(nèi)積溉潭,而且這個(gè)內(nèi)積計(jì)算的結(jié)果在下面的迭代次數(shù)中可以重用净响。如果我們事先用矩陣運(yùn)算計(jì)算出所有的樣本之間的內(nèi)積少欺,那么在算法運(yùn)行時(shí)喳瓣, 僅僅一次的矩陣內(nèi)積運(yùn)算比多次的循環(huán)計(jì)算省時(shí)。 計(jì)算量最大的判斷誤分類這兒就省下了很多的時(shí)間赞别,畏陕,這也是對(duì)偶形式的感知機(jī)模型比原始形式優(yōu)的原因。
    樣本的內(nèi)積矩陣稱為Gram矩陣仿滔,它是一個(gè)對(duì)稱矩陣惠毁,記為 G=[x(i)?x(j)]
    這里給出感知機(jī)模型的算法對(duì)偶形式的內(nèi)容犹芹。
    算法的輸入為m個(gè)樣本,每個(gè)樣本對(duì)應(yīng)于n維特征和一個(gè)二元類別輸出1或者-1鞠绰,如下:
    (x1(0),x2(0),...xn(0),y0), (x1(1),x2(1),...xn(1),y1),...
    (x1(m),x2(m),...xn(m),ym)
    輸出為分離超平面的模型系數(shù)θ向量
    算法的執(zhí)行步驟如下:
  3. 定義所有x0為1腰埂,步長(zhǎng)α初值,設(shè)置β的初值0蜈膨∮炝可以將α設(shè)置為1。要注意的是翁巍,由于感知機(jī)的解不唯一驴一,使用的步長(zhǎng)初值會(huì)影響θ向量的最終迭代結(jié)果。
  4. 計(jì)算所有樣本內(nèi)積形成的Gram矩陣G灶壶。
    3) 在訓(xùn)練集里面選擇一個(gè)誤分類的點(diǎn)(x(i),y(i))肝断,這個(gè)點(diǎn)應(yīng)該滿足:
    image

    在檢查是否滿足時(shí)可以通過查詢Gram矩陣的gij 的值來快速計(jì)算是否小于0。
  5. 對(duì)β向量的第i個(gè)分量進(jìn)行一次更新:βii
    5)檢查訓(xùn)練集里是否還有誤分類的點(diǎn)驰凛,如果沒有胸懈,算法結(jié)束,此時(shí)的θ向量最終結(jié)果為下式恰响。如果有箫荡,繼續(xù)第2步。
    其中βj 為β向量的第j個(gè)分量渔隶。
    5. 小結(jié)
    感知機(jī)算法是一個(gè)簡(jiǎn)單易懂的算法羔挡,自己編程實(shí)現(xiàn)也不太難。前面提到它是很多算法的鼻祖间唉,比如支持向量機(jī)算法绞灼,神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)。因此雖然它現(xiàn)在已經(jīng)不是一個(gè)在實(shí)踐中廣泛運(yùn)用的算法呈野,還是值得好好的去研究一下低矮。感知機(jī)算法對(duì)偶形式為什么在實(shí)際運(yùn)用中比原始形式快,也值得好好去體會(huì)被冒。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末军掂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子昨悼,更是在濱河造成了極大的恐慌蝗锥,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件率触,死亡現(xiàn)場(chǎng)離奇詭異终议,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門穴张,熙熙樓的掌柜王于貴愁眉苦臉地迎上來细燎,“玉大人,你說我怎么就攤上這事皂甘〔Wぃ” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵偿枕,是天一觀的道長(zhǎng)击狮。 經(jīng)常有香客問我,道長(zhǎng)益老,這世上最難降的妖魔是什么彪蓬? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮捺萌,結(jié)果婚禮上档冬,老公的妹妹穿的比我還像新娘。我一直安慰自己桃纯,他們只是感情好酷誓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著态坦,像睡著了一般盐数。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伞梯,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天玫氢,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛堆缘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播怒竿,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起槽袄,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锋谐,沒想到半個(gè)月后遍尺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怀估,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年狮鸭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片多搀。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡歧蕉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出康铭,到底是詐尸還是另有隱情惯退,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布从藤,位于F島的核電站催跪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏夷野。R本人自食惡果不足惜懊蒸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望悯搔。 院中可真熱鬧骑丸,春花似錦、人聲如沸妒貌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灌曙。三九已至菊碟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間在刺,已是汗流浹背逆害。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蚣驼,地道東北人忍燥。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像隙姿,于是被迫代替她去往敵國(guó)和親梅垄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容