1. 程式人生 > >PLA演算法的理解(perceptron learning algorithm)

PLA演算法的理解(perceptron learning algorithm)

最近在學習臺大林軒田教授的課程,一開始就講到了perceptron learning algorithm,這個演算法是用來對線性可分資料進行分類的。要注意這裡是線性可分的資料,這個也是PLA演算法的侷限的地方,如果PLA演算法運用線上性不可分的資料中的時候,演算法將會無限迴圈下去,還有就是即使我們的資料是線性可分的,我們也不知道PLA演算法什麼時候才能找到一個最優的解,可能迴圈操作幾次就可以得到,也有可能需要很多次才能找到最優解,其實在不知道的情況下,我們無法預計演算法需要計算多久,這樣其實是開銷很大的,後續我們基於貪心演算法(greedy algorithm)對PLA演算法進行了改進,我們每一次的計算都保留當前的最優解,意思就是找到一個相對最優解,然後我們不斷去更新優化這個最優解。
首先我們PLA演算法是用來求解分類的那條分界線的,也就是求解我們 W

 = {  w 1 , w 2 , . .
. , w n W{\text{ = \{ }}{{\text{w}}_1}{\text{,}}{{\text{w}}_2}{\text{,}}...{\text{,}}{{\text{w}}_n}{\text{\} }}
向量,假設我們的資料集為 X  = {  x 1 , x 2 , . . . , x n X{\text{ = \{ }}{{\text{x}}_1}{\text{,}}{{\text{x}}_2}{\text{,}}...{\text{,}}{{\text{x}}_n}{\text{\} }} ,我們可以用這條線將我們的資料X分成正負兩個部分,用數學表示式可以將假設函式h(x)表示成:
h ( x ) = s i g n ( i = 1 n w i x i t h r e s h o l d ) h(x) = sign(\sum\limits_{i = 1}^n {{w_i}{x_i} - threshold} )
我們將分界線的向量和資料集進行內積運算,然後減去一個閾值,最後加上一個sign函式將資料進行分類操作,結果1表示正類,-1表示負類。在這個公式裡這個閾值看著比較礙眼,我們可以將閾值項threshold看作是w0和x0相乘,w0看做是-threshold,x0看做是1,那麼整個公式可以表示成:
h ( x ) = s i g n ( i = 1 n w i x n t h r e s h o l d ) = s i g n ( i = 1 n w i x n + ( t h r e s h o l d ) ( + 1 ) ) = s i g n ( i = 1 n w i x i + w 0 x 0 ) = s i g n ( i = 0 n w i x i ) = s i g n ( W T X ) h(x) = sign(\sum\limits_{i = 1}^n {{w_i}{x_n} - threshold} )= sign(\sum\limits_{i = 1}^n {{w_i}{x_n} + ( - threshold} )( + 1)) \\= sign(\sum\limits_{i = 1}^n {{w_i}{x_i} + {w_0}{x_0}} ) = sign(\sum\limits_{i = 0}^n {{w_i}{x_i}} ) = sign({W^T}X)
由上述數學公式我們可以得到 h ( x ) = s i g n ( W T X ) h(x) = sign({W^T}X) ,在假設函式h(x)中,X是已知的資料集,要求W的向量, W T X {W^T}X 的值會把我們資料集分成正負兩個類,PLA的演算法就是在不斷地糾正我們的分類錯誤,糾正的方法如下所示:

  1. 正類+1被預測到了負類-1
    這個時候,x的實際指向是正方向,也就是說y=+1,但是預測到了-1,也就是說 W T X = 1 {W^T}X=-1 ,這裡x的指向表示y的布林值,我們可以用向量圖來表示:
    向量糾正1
    在上圖中X是正類,但是與預測的W向量夾角大於90度,所以 W T X = 1 {W^T}X=-1 ,我們如何來糾正這個向量呢?我們可以將W和X向量相加,這裡需要注意的是X還需要乘以一個y,來表示向量的方向,同時也表示W分割線調整的方向。這個時候y=+1,所以我們新調整的W是W+X,如圖所示,紅色的向量表示預測錯誤的向量,我們加上實際的X向量,就可以得到調整之後的綠色的向量,可以看到綠色的向量相比紅色的向量更加靠近X向量了,夾角也小於90度,這樣就可以糾正原來的錯誤預測了。
  2. 負類-1被預測到了正類+1
    同樣的道理,X的向量指向負的情況下,但是由於預測錯誤,W向量和X向量夾角小於90度,所以 W T X = 1 {W^T}X=1 ,我們同樣需要y*X來調整新的預測,我們可以得到下圖:
    在這裡插入圖片描述
    由上圖可以看出,黑色的向量X和紅色的向量W,由於夾角小於90度,所以 W T X = 1 {W^T}X=1 ,這個時候需要調整新的W向量,這個時候y=-1,所以W+yX=W-X,就相當於是兩個向量相減,得到新的調整之後的綠色的向量,這樣新調整的向量與原有的X向量的夾角大於90度,那麼 W T X = 1 {W^T}X=-1 ,這樣錯誤就糾正了。

有了上面就正錯誤點的方法,我們可以不斷地更新W,直到找到最優解,用虛擬碼可以表示成:

init w(0)=0
for t = 0,1,2,3,...:
	for i = 1,2,3,4,...,n:
		w(t+1) = w(t) + y(i) * x(i)
end
//直到所有的點都被正確分類,我們就停止更新W

有的朋友就會有疑問了,會不會有這個迴圈停不下來的情況,答案是不會的,這個演算法到最後一定是會停下來的。下面我們就來證明一下。首先我們假設有一條理想的分割線 W f {W_f} ,因為 y n {y_n} W f T X n W_f^T{X_n} 一定是同號的,那麼 y n W f T X n {y_n}W_f^T{X_n} 一定是大於0的,所以可以得到:
y n ( t ) W f T X n ( t ) min n y n W f T X n > 0 {y_{n(t)}}W_f^T{X_{n(t)}} \geqslant \mathop {\min }\limits_n {y_n}W_f^T{X_n} > 0

相關推薦

PLA演算法理解perceptron learning algorithm

最近在學習臺大林軒田教授的課程,一開始就講到了perceptron learning algorithm,這個演算法是用來對線性可分資料進行分類的。要注意這裡是線性可分的資料,這個也是PLA演算法的侷限的地方,如果PLA演算法運用線上性不可分的資料中的時候,演算法將會無限迴圈下去,還有就

感知機演算法Perceptron Learning Algorithm和程式碼實現Python

PLA演算法是機器學習中最為基礎的演算法,與SVM和Neural Network有著緊密的關係。                            &n

機器學習——感知器學習演算法The perceptron learning algorithm

現在,讓我們簡要地談論一個歷史上曾經令人很感興趣的演算法,當學習到學習理論章節的時候我們將還會提到這個。試想一下修改logistic迴歸的方法,來“迫使”它能夠輸出除了0或1亦或是其它以外的輸出值。為了達到這個目的,自然而然地會想到去改變閾值函式 gg 的定義:接下來,如果我

深度強化學習演算法 A3C Actor-Critic Algorithm

對於 A3C 演算法感覺自己總是一知半解,現將其梳理一下,記錄在此,也給想學習的小夥伴一個參考。   想要認識清楚這個演算法,需要對 DRL 的演算法有比較深刻的瞭解,推薦大家先了解下 Deep Q-learning 和 Policy Gradient 演

關於對Dijkstra最短路徑演算法理解無程式碼版

演算法步驟: (1)、設定兩個結點集合U、T,將源點v新增到U,其餘所有頂點新增到T; (2)、從給定點v開始,搜尋其鄰接結點,生成多條初始路徑,並新增到路徑集合Path; (3)、從Path中計算路徑長度最短的路徑,如果U中不存在該路徑的終點,則說明已經找到v到該結點的最

Digression:The perceptron learning algorithm感知機學習演算法

''' Author :Chao Liu Data:2013/12/9 Algorithm: perceptron ''' import numpy import matplotlib.pyplot as plt ''' decision function ''' def h_function(W,x):  

感知機學習演算法PLA的修正過程的理解機器學習基石

原理 首先,PLA修正過程的數學表示: 在一個迴圈中,t代表當前的迭代次數 1. 找到一個錯誤分類的點(xt,ytxt,yt): sign(wTtxn(t))≠yn(t)sign(wtTxn(t))≠yn(t) 2. 修正該錯誤 Wt+1←Wt+yn

t-分佈鄰域嵌入演算法t-SNE algorithm簡單理解

這篇文章主要介紹一個有效的資料降維的方法 t-SNE. 大資料時代,資料量不僅急劇膨脹,資料也變得越來越複雜,資料的維度也隨之增加。比如大圖片,資料維度指的是畫素的數量級,範圍從數千到數百萬。計算機可以處理任意多維的資料集,但我們人類認知只侷限於3維空間,

通俗理解卡爾曼濾波及其演算法實現帶例項解析

1.簡介(Brief Introduction) 在學習卡爾曼濾波器之前,首先看看為什麼叫“卡爾曼”。跟其他著名的理論(例如傅立葉變換,泰勒級數等等)一樣,卡爾曼也是一個人的名字,而跟他們不同的是,他是個現代人! 卡爾曼全名Rudolf Emil Kalman,匈牙利數學家,1930年出生於

EM演算法Expectation Maximization Algorithm

1. Jensen不等式 設 f 是定義域為實數的函式,如果對於所有的實數 x,,那麼 f 是凸函式。當 x 是向量時,如果其hessian矩陣 H 是半正定的(),那麼 f 是凸函式。如果或者,那麼稱 f 是嚴格凸函式。 Jensen不等式表述如下: 如果 f 是凸函式,X是隨機變

生成學習演算法Generative Learning algorithms

看了一下斯坦福大學公開課:機器學習教程(吳恩達教授),記錄了一些筆記,寫出來以便以後有用到。筆記如有誤,還望告知。 本系列其它筆記: 線性迴歸(Linear Regression) 分類和邏輯迴歸(Classification and logistic regression) 廣義線性模

SSD演算法理解2

作者:葉 虎 編輯:祝鑫泉 前言 目標檢測近年來已經取得了很重要的進展,主流的演算法主要分為兩個型別:(1)two-stage方法,如R-CNN系演算法,其主要思路是先通過啟發式方法(selective search)或

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

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

統計學習方法筆記二---感知機(Perceptron Learning Algorithm,PLA)

簡介 感知機(perceptron)是二分類的線性分類模型,其輸入為例項的特徵向量,輸出為例項的類別,取+1和-1二值。感知機對應於輸入空間(特徵空間)中將例項劃分為正負兩類的分離超平面,屬於判別模型,解決的問題是分類問題。 目標/目的:求出將訓練資料進行線

生成學習演算法generative learning algorithms和判別學習演算法discriminative learning algorithms

1、 生成學習演算法例:對惡性腫瘤和良性腫瘤的分類除了尋找一個將兩類資料區分的直線外,還可以用如下方法:1)       遍歷訓練集,找到所有惡性腫瘤樣本,直接對惡性腫瘤的特徵建模;同理,對良性腫瘤建模。2)       對一個新的樣本分類時,即有一個新的病人時,要判斷其是惡

TLDTracking-Learning-Detection一種目標跟蹤演算法

    對於長時間跟蹤而言,一個關鍵的問題是:當目標重新出現在相機視野中時,系統應該能重新檢測到它,並開始重新跟蹤。但是,長時間跟蹤過程中,被跟蹤目標將不可避免的發生形狀變化、光照條件變化、尺度變化、遮擋等情況。傳統的跟蹤演算法,前端需要跟檢測模組相互配合,當檢測到被跟蹤目標之後,就開始進入跟蹤模組,而此後,

閱讀理解2000年統考

erp ssa ted japan market stat some hang 屬性 A history of long and effortless(毫不費力的,容易的) success can be a dreadful(可怕的) handicap(障礙), but,

談談對事件的理解持續更新中

use 通過 行為 tlist 理解 scrip 創建 可能 有時 談談對事件的理解: 從前有一家人,我們稱為window家。window他其中有一個兒子叫事件。 -------------------------------------------------------

【算法】狄克斯特拉算法Dijkstra’s algorithm

父節點 定義 cte 最短路 pan 函數 dijk 節點 表示 狄克斯特拉算法(Dijkstra’s algorithm) 找出最快的路徑使用算法——狄克斯特拉算法(Dijkstra’s algorithm)。 使用狄克斯特拉算法 步驟 (1) 找出最便宜的節點,即可

演算法-查詢紅黑樹

查詢 符號表 最主要的目的是將一個鍵合一個值聯絡起來。用例能夠將一個鍵值對插入符號表並希望在之後能夠從符號表的所有鍵值對中按照鍵直接找到對應的值,即以鍵值對為單元的資料結構。 無序連結串列順序查詢 效能:N方 有序陣列二分查詢 程式碼 public int ran