1. 程式人生 > >機器學習基石學習筆記(1)-PLA

機器學習基石學習筆記(1)-PLA

(☆:本文是筆者通過學習臺灣大學機器學習課程,記錄學習過程之筆記博文,博文中出現的各種非正統的機器學習語錄可能只是筆者腦洞大開之文段,敬請海涵)

0、寫在前面

在系列博文開始前,筆者簡單描述一下機器學習:

筆者理解的機器需學習,是“通過計算機把非資料資訊轉化為資料資訊並從中獲得基於數理的分類,並用這個分類來指導之後的資訊處理”的過程。我們可以用一張流程作為例子來表示下:

f:x→y      →      D:(x1, y1), ...(xn, yn)      →      A      →      g

解釋一下,首先我們是要處理一個二維資訊(實際可以有多維,此處以二維舉例)的分類問題,二維資訊分類在實際生活中有很多實際應用,比如說下圖這一類的分類,可以簡單理解為“判斷題”,通過學習以下的點圖,假如再來一個點,能夠根據機器學習學到的方法來確定新的點是圈還是叉:


那我們現在再來看一下上邊的這個流程具體是什麼含義:

f”呢,是我們想得到的那個分類方法,為了得到這個分類方法,首先我們需要檢視資料D本身有什麼特徵;

D”就是已經數字化或者量化後的資料本身,可以看作是二維座標系下的散點,(所以此時可以把“f”理解為二維座標系下的函式或者方程);

A”呢,就是為了得到分類,需要我們用一種演算法”A“能夠對資料進行分類。這裡需要區分“f”和“A”,“f”是最後我們期望的函式,本意在於“function”,而“A”本是“algorithm”,是需要我們自己設計的演算法,在這裡他叫做“演演算法“,用它來分類資料;

g”呢,是我們通過用“A”演算資料“D”的出來的一個函式(或方程),實際上,可能不同的演演算法“A

”處理“D”可能有不同的“g’”,這裡需要找到一個最好的“g”並使之儘可能幾乎就是“f”本身。

至此,我們就可以用“f”來指導機器以後在面對相同型別的“D”資料時能夠僅僅從給定的“xi”中猜測到“yi”。

1、PLA

PLA是Percepton Learning Algorithm(感知器學習演算法)的縮寫,通俗理解為“知錯能改演演算法”。為了便於理解,舉個例子:比如說一個瞎子走路,首先把一個盲人置身於一個他從來沒到過的地方,那麼他拿著小杆會嘗試著各個方向是否有路,假如周圍都是石頭,只有一個路口,還有一個用於提示的鈴鐺,而且當他試探的地方離著路口越近鈴鐺就會越響,他會怎樣選擇呢?比較有效率的方法是先嚐試12點鐘方向,鈴鐺聲音很弱,那就是不行,那就換6點鐘方向,再不行,就3點鐘、9點鐘方向。這樣很快就會在瞎子心裡有一個大致的判斷,基本知道了路口的方位。

以下開始具體表示PLA方法,首先每個方框圖的中點為原點,依此嘗試每個點,並根據原點到每個點之間的向量來確定每次的修正:

update1:第一次找到一個向量,在原點處對其做垂線(沒畫線,麻煩,不想畫,懇請讀者自行腦補)發現x9在其外;

update2:那就x9向量和x1向量相加,得到新的向量,原點出對其作垂線,此時發現x14在其外;

update3:。。。依此對比每個向量,如如發現還有點在其外,就繼續update;

...




update9後發現所有的點都被劃開為update9中向量中垂線兩側,那,ok,成了!

對其做中垂線處理得到分界線如下:

所以,此時我們可以說已經找到了一個“g”,他把“D”裡面的圈圈和叉叉分開了,所以此時假如我們隨便置入一個點,那麼就很容易判斷這個點是屬於叉叉範圍呢還是圈圈範圍。

那這一節就結束了,PLA的基本內容就是這樣,但不得不說,這是一個處理“是非”問題的方法,但是計算機科學裡面全都是“是非一零”問題,線性或者二元分類的學習可以說是機器學習過程的一個基礎必備知識。

這一節就醬!

update (本文是筆者通過學習臺灣大學機器學習課程,記錄學習過程之筆記博文,博文中出現的各種非正統的機器學習語錄可能只是筆者腦洞大開之文段,敬請海涵)