1. 程式人生 > 實用技巧 >機器學習--------PLA解析

機器學習--------PLA解析

摘要:在學習機器學習時,涉及線性分類問題時,對於如何找到最佳的線性分類器,我們會使用到Perceptron Learning Algorithm(PLA),即是感知機學習演算法,來在平面(這裡以二維平面為例)的眾多直線中找到一條理想的直線,該直線可以達到很好的分類效果。本文將對PLA演算法的原理和過程進行解釋。

1.演算法基本思想

如何找到一條能將平面上所有的正類和負類完全分開的最好的直線呢?

我們可以使用逐點修正的思想,首先在平面上隨意取一條直線,看看哪些點分類錯誤。然後開始對第一個錯誤點就行修正,即變換直線的位置,使這個錯誤點變成分類正確的點。接著,再對第二個、第三個等所有的錯誤分類點就行直線糾正,直到所有的點都完全分類正確了,就得到了最好的直線。這種“逐步修正”,就是PLA思想所在。

在這裡插入圖片描述
t表示修正時所在的輪數。

2.PLA演算法具體過程描述

首先隨機選擇一條直線進行分類。然後找到第一個分類錯誤的點,如果這個點表示正類,被誤分為負類,即 ,那表示w和x夾角大於90度,其中w是直線的法向量。所以,x被誤分在直線的下側(相對於法向量,法向量的方向即為正類所在的一側),修正的方法就是使w和x夾角小於90度。通常做法是 ,如圖右上角所示,一次或多次更新後的 與x夾角小於90度,能保證x位於直線的上側,則對誤分為負類的錯誤點完成了直線修正。

同理,如果是誤分為正類的點,即 ,那表示w和x夾角小於90度,其中w是直線的法向量。所以,x被誤分在直線的上側,修正的方法就是使w和x夾角大於90度。通常做法是 ,如圖右下角所示,一次或多次更新後的與x夾角大於90度,能保證x位於直線的下側,則對誤分為正類的錯誤點也完成了直線修正。

按照這種思想,遇到個錯誤點就進行修正,不斷迭代。要注意一點:每次修正直線,可能使之前分類正確的點變成錯誤點,這是可能發生的。但是沒關係,不斷迭代,不斷修正,最終會將所有點完全正確分類(PLA前提是線性可分的)。這種做法的思想是“知錯能改”,有句話形容它:“A fault confessed is half redressed.”

實際操作中,可以一個點一個點地遍歷,發現分類錯誤的點就進行修正,直到所有點全部分類正確。這種被稱為Cyclic PLA。

3.PLA演算法過程的圖解形式
把誤分為正類(或負類)的點x和當前的w(t)用於計算下一個W(t+1)),W(t+1)又可作為確定直線的法向量


在這裡插入圖片描述
下面用圖解的形式來介紹PLA的修正過程:
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述4.對PLA,我們需要考慮以下兩個問題:

PLA迭代一定會停下來嗎?如果線性不可分怎麼辦?

PLA什麼時候會停下來呢?根據PLA的定義,當找到一條直線,能將所有平面上的點都分類正確,那麼PLA就停止了。要達到這個終止條件,就必須保證D是線性可分(linear separable)。如果是非線性可分的,那麼,PLA就不會停止。

PLA停下來的時候,是否能保證 ?如果沒有停下來,是否有 ?
這個證明比較複雜,略。
補一下思想:
對於線性可分的情況,如果有這樣一條直線,能夠將正類和負類完全分開,令這時候的目標權重為 ,則對每個點,必然滿足 ,即對任一點:
證明W(t)是遞增的且有上界;

參考資料:
臺大林軒田機器學習基石