About Me

我的相片
台北市, Taiwan
我是方選,
方白科技(finebind tech.)共同創辦人,
臺大資管所畢,
希望能幫助更多的人!

FB: http://fb.com/function1122
LINE: http://bit.ly/1foeZft (手機開啟點擊網址自動加入)

最新15則讀者回應

最新文章

FUNction's 上課筆記

Label Cloud

Blog Archive

FeedBurner

追蹤者

顯示具有 背景知識 標籤的文章。 顯示所有文章
顯示具有 背景知識 標籤的文章。 顯示所有文章

感知學習演算法(Perceptron Learning Algorithm)白話說明

FUNction 於 2010年10月16日 下午6:44 發表

看完這篇文章,你會對機器學習最入門的概念─「感知學習演算法」有基本的認知。因為筆者數學並不好,為了寫這篇,我花了大約30小時,看了10多個版本的教學(n次),在成大數學的高手歐民同學的指導下,站在好懂的角度撰寫,希望不會令你感到失望 :)

感知器是幹麻用的?
用來產生判斷結果!會經由多個輸入的數據,透過運算產生一個非黑即白的結果,用途相當廣泛。例如透過收入、負債的數據,協助銀行判斷顧客是否可以核辦信用卡(可發/不可發)、或是可以找出潛在消費者(潛在/非潛在)、判斷股票未來的走勢(漲/跌)等等。

感知器的靈感是來自生物的神經元(下圖),神經元從樹狀突接收不同來源的訊號,其中有些來源的刺激具正向效果、有些來源則是抑制效果,經過加總計算後,如果結果達到該神經的門檻值,則會將訊號從軸索末端傳出;或沒達到門檻,則不傳出訊號(在此為了講解方便,將訊號簡化為有與無,實際上神經元有很多種,也有些會依照加總輸出不同強度的訊號,但不在今日討論範圍內)。


▲神經元(Neurons),主要構造有樹狀突(Dendrites)、細胞體(Cell Body)與軸索(Axon),圖片來自UCODE資優密碼

如何透過輸入進行分類?
在我們了解感知器的基本功能後,現在要進一步探討,輸入的數據與分類結果的關係。假設我們腦中有一顆功能是判斷一個男人可不可以嫁的神經元,它只有兩根樹狀突,一根偵測這男人專情程度、另一根偵測他的上進心。接著你得到了50個老婆覺得婚姻幸不幸福的資料,其中紅色的老婆覺得婚姻幸福美滿,藍色的則是有家庭問題或離婚的,如下所示:

 image
▲描述這些女人他們老公的資訊,專情程度用「心上人數」來代表,心上人越多則越不專情;上進心用「上進時數」表示,時數越高越上進

從圖片中直觀的可以發現,心上人數越少且上進時數越多的老公,越能帶給家庭幸福(不過如果沒有這個統計結果,我們很難證明有這樣的關係存在)。接下來也就是感知器最神奇的地方,今天的重點。感知器從心上人數、上進時數等資訊,經過一些變數的調整(調整影響力的強弱),產生可不可以嫁的答案。這些答案是透過資料訓練出來的,所以沒有經過資料訓練的感知器不會有分類功能,在這裡必須給他先讀過這份「老婆幸福報告書」,才能從結果中歸納出衡量的準則(「心上人數」要少且「上進時數」高才是可以嫁的男人)。

因此我們的目標是,透過這些這份報告書的訓練的資料,建立一個公式,讓未來只要知道某男人的「心上人數」與「上進時數」等資訊,就能馬上判斷這男人可不可以嫁:

(心上人數 * w1) + (上進時數 * w2) = 一個數字
若這數字大於某個值,就表示可以嫁

如何找到這個公式?
接下來問題會變得有點數學,因為我們必須使用數學的方式找到合適的影響力(w1與w2),使公式產生合理的結果。我們再看看手邊有什麼資訊:

  • 50個男配偶的心上人數、上進時數資料(整堆用x表示)。x裡面包含了x1~x50等50筆配偶資料,且每筆配偶資料又包含「心上人數」、「上進時數」兩個數值,因此可以把x1~x50都當作50個不同的向量→(心上人數, 上進時數)
  • 我們還必須假設一組數據,代表心上人數、上進時數分別的影響力,這個影響力會與每個男配偶資料相乘(作向量內積),幫男配偶打一個分數。在這裡我們用w代表這組數據,其中包含w1的心上人數與w2的上進時數。例如w = (-16, 12),則第20號男人x20有1.2個心上人與7小時的上進,經過相乘後分數為64.8 = 1.2 * (–16)+ 7 * 12,這樣的乘法就是所謂的向量內積。
  • 男配偶的老婆幸福與否(只有幸福/不幸福兩種選項),這個函數我們取名為sign()。輸入的的是某個男人的分數(例如64.8),輸出的是-1(代表不幸福)或+1(代表幸福)。

好,大概就這樣,不過一開始,我們不會知道w這組影響力的值,必須要透過既有的幸福/不幸福資料,去調整w的內容,所以接下來進入到最核心的部分。起初,我們將w的值設定為(1,1),並假設sign()分數大於60則為「可以嫁」,如此開始檢查這樣的w是否可以把第一個男人正確歸類。我們將w與x1作向量內積並帶入sign()中,假設得到+1(可以嫁),我們再將這樣的結果與統計結果對應,看看一號男人是否真的可以嫁;假設結果也是可以的,於是我們用這組影響力去檢查2號男人。

如果發現2號男人sign()的答案是可以嫁,但實際上(統計中)二號男人不可以嫁,我們就要進行修正(讓2號男變得不可以嫁)。修正的方法如下:

新的w = 舊的w + 2號男人實際上可不可以嫁 * 2號男人的向量

其中,

  • 2號男人實際上可不可以嫁:統計的結果,可嫁為+1,不能嫁為-1,2號男人在這裡的值為-1
  • 2號男人的向量:(2號男人的心上人數, 2號男人的上進時數)

如此因為新的w加上得負的2號男人向量,可以使2號男人的分數變低,接著就這樣依序檢查3~50號男人。如果存在一條可以分隔可嫁/不可嫁男人的線,Novikoff(1962)證明用這樣的演算法可以在有限次數的反覆計算後得到答案。

結語
感知器其實是類神經網路的基礎,透過感知器可以使電腦在已知的資料中找到規則,並套用到未知的相關資料,以達到預測的效果。雖然在這裡只介紹結果非黑即白的基本感知器模型,不過它已經可以用來解決許多大型的應用問題。但值得注意的是,不是所有的問題都適合用機器學習來解決,例如許多已知可以套用公式的科學領域。

DSC01755
▲歐民大大畫了一大堆圖讓我了解sign()與實際結果的關係,以及分界線到底長什麼樣子

老實說這篇文章真的要感謝歐民大大的相助,因為光憑我一個人的能力我想我很難了解這些資料的內容。當然如果有不正確之處也歡迎各界指教,我寫的目的是在弄懂之後能幫助其他像我曾經一樣的人,不是要造成他們的誤解。

繼續閱讀全文 感知學習演算法(Perceptron Learning Algorithm)白話說明

什麼是 馬...馬可夫鏈(Markov Chains)?

FUNction 於 2010年8月6日 下午5:15 發表

「人生的課題,如果你沒有學會處理,它就會一而再、再而三的讓你練習」…其實也沒那麼嚴肅啦,只是小時候沒學好,最近讀論文的時候一直碰到馬可夫鏈…讓我覺得很卡,於是想說花一些時間把這個關節打通。我希望用一些淺顯易懂的文字寫一些老嫗能解的馬可夫鏈概念(千萬不要像維基百科寫得像天書般),這就是邊學邊寫的最高境界吧,我想!

馬可夫鏈
▲當我聽到「馬可夫鏈」的時候,總會想像一條長長的鏈子,鏈住馬的頭@@

正文開始
我們想像有一些加以編號的桶子,每個桶子裡面裝著數顆編號過的球,如下圖所示:

馬可夫桶子
▲有1~n個桶子,桶子中的球也編有1~n號

接下來玩法是這樣的,例如我們先在2號桶子中抽到3號球,於是我們就跑到3號桶子再抽一顆球;我們發現3號桶子抽出來的球是5號,於是又跑去5號桶子抽…總之從任一個桶子中抽出球的號碼,決定著接下來目的桶子的號碼,然後一直抽到沒完沒了(或某個次數),如此所形成的連續動作就是馬可夫鏈

到這裡已經講完馬可夫鏈了,應該有如醍醐灌頂的感覺吧!那我們接下來看看,這樣的一條鍊子有什麼特別的呢?

馬可夫鏈的特色
馬可夫鏈最主要的的特色在於「下一個狀態決定於上一個狀態裡的機率」,以上面桶子抽球的例子來說,第k次抽球的桶子決定在第k-1次所抽出來的球(與前面抽球的機率都沒有關係)。此外,在同一個時間,馬可夫鏈只會有一個狀態,我們舉下一個例子:慈善賭場中有一個賭徒,身上只有一塊錢,每賭贏一次多一塊,輸一次少一塊(因為是慈善賭場,輸到負的還可以繼續賭XD)。

這樣也構成一個馬可夫鏈,第k次賭博身上所剩的錢,決定在第k-1次身上的錢&輸或贏,所以我們若知道第k-1次身上有10塊錢,就可以推論第k次輸了的話身上剩9塊錢,贏的話會有11塊錢。此外,我們還可以發現,狀態是可能來回循環的,例如可能會重複回到「一塊錢」的狀態。但是如果是三度空間以上的馬可夫鏈,狀態會離原點越來越遠(雖然不一定沿著固定方向)。

總而言之,馬可夫鏈有以下兩點特色:

  • 在任何週期,系統中的事件只存在於一種狀態內。(每一局身上的錢只有一種狀態)
  • 事件由一種狀態轉換到另一種狀態時的機率,決定於前一週期。(第k局加減的錢由第k-1局的機率所決定)

計算馬可夫鏈
一般而言,我們會使用轉移圖來了解馬可夫鏈狀態間的轉換,再搭配矩陣來計算馬可夫鏈的數值。一開始我們可以使用樹狀圖來分析馬可夫鏈,如下圖:

馬可夫鏈表示法
▲以上三張圖都在表示同樣結構的馬可夫鏈,a1, a2, a3 為三種狀態,而互相轉換的機率標在線上

我們都會使用矩陣來進行馬可夫鏈的計算,透過反覆的計算,例如計算第k步時停留在a1狀態的機率,達到一個程度的預測。

總結
馬可夫鏈的應用相當多,可以用來進行物理中排隊理論或統計學的建模,此外也可以應用在人口、生物觀察上(估計的繁殖或死亡狀態)。最值得一提的是,基於馬可夫鏈發展出狀態非顯而易見的隱藏式馬可夫模型(HMM)大量的被應用在辨識技術上,如語音辨識與文件切割等,這也是為什麼馬可夫鏈重要的原因。

參考資料

  • 馬可夫鏈的簡介:這是一篇從概念講起馬可夫鏈的文章,雖然後面寫得有點讓人想飄走,但是可以對馬可夫鏈有個概觀的了解。
  • Ch 10 馬可夫鏈.ppt:朝陽科大資管系李朱惠老師的上課教材,使用例題介紹馬可夫鏈的運算
繼續閱讀全文 什麼是 馬...馬可夫鏈(Markov Chains)?