Processing math: 100%

2015年8月15日 星期六

Machine Learnng 1.1 -- Perceptron -- 什麼是 machine learning 問題


如果有上過林軒田老師的課,他在課堂的一開始一定會先提到 perceptron learning algorithm (PLA)。這是一個最簡單,最好應用,涵蓋範圍可以很廣,但效果卻不會太差的演算法。我想在真正提到SVM之前,先用PLA來給大家進一步熟悉machine learning的問題。

我在上一個段落有說到machine learning的概念,這樣的概念我們可以用一個比較一般性的描述來表示。

為了找到未知的公式 f:XY ,我們必須要從資料集(Data set) D:(x1,y1)(x2,y2)...(xn,yn) 中,利用演算法 A 產生一個假說集 (Hypothesis set) H:h1(x),h2(x)... ,並想辦法從 H 中挑一個我們心目中最接近 f(x) 的假說,一般而言我們會用g(x)來表示那個從H雀屏中選的那個。

/* 以下廢話

上面那一段用白話文來說就可以講一大堆了,以前在看大學工數課本的時候,都覺得外國人寫的書廢話好多,我只要看得懂公式就好,不過這幾年下來,我有時候會覺得學數學的重點就是,可以從公式中領會出那些廢話。公式是一個結論,是思想的精華,不過對數學而言,我們需要花很多時間來思考問題,界定問題,這樣才能真正應用在這個世界上。

先來看 f ,什麼叫做未知的公式,其實可以把它看作是一個最終目標,這樣的目標可以是一個判斷,一種預測,甚至是比較抽象的想法。比如說:

這張相片中有沒有人臉? (二元分類問題)
輸入:圖片
輸出:true / false

身高175公分的人走一步的距離大概是多少? (回歸問題)
輸入:身高
輸出:步長

這位網路商城的使用者可能會喜歡哪種廣告?(比較抽象的問題)。
輸入:歷史紀錄
輸出: 可能喜歡的廣告

這些問題是無法憑空找出答案的,不管是人也好,機器也好,要找出這些問題的答案都必須經過學習過程。學習就是透過資料、教材或範本找到答案,也就是說從一群資料中萃取出我們要的東西,那個萃取出來的公式 一般我們會用 g 來表示。

換句話說,這件事可以拆成兩件事來看 1)要如何利用手上的資料找出 g並且 2)確保 gf 很接近

1) 如何利用手上的資料找出 g
這時後 A 就出場了,我們可以用很多種方法來找 g,每一種都是 A 的子集,這些方法作用在資料上,就會出現其對應的假說 h ,每一種方法至少會有一種假說(註),這些假說的集合 就表示為 H

每個 h 的功用就是越來預測資料,資料是由一群這樣的東西 D:(x1,y1)(x2,y2)...(xn,yn)所組成的,其中的 x 就是所謂的特徵,也就是上面的 "輸入" ,可以是圖片,可以是身高,可以是歷史紀錄或是任何想用來學習的特徵;而 y 就是 "輸出",也有人把他們叫做 "標籤" , 他標示著我們想要電腦學習的結果,也就是我們會希望那個好的 h 會出現,並且讓所有的 h(X) 都接近甚至等於 Y

註:一般來說,我們會把同一種方法,但使用不同的參數的結果,定義為不同的 h,換句話說,一個 a (俗稱演算法),可能會產生多個 h

2) 如何確保 gf 很接近:
H 裡面,要知道其中的好壞很簡單,就是把所有在 D 中的 x1,x2,x3... 都帶到 hi, ( i=1,2,...,n Hn ) 裡面,然後再將每一個輸出 hi(x1), hi(x2), hi(x3), 與 y1,y2,y3... 比較錯誤率最低的,在小心 overfit(註) 的情況下,我們可以說 g 接近 f,只要有類似的資料進來,我們就可以用手上的 g 來完成 f 所描述的問題。

註:overfit 是過度學習的意思,一般而言可以看做是不只有用的資料本身,連雜訊也完全學習。也就是說,雖然可以百分之百呈現當前的資料,但往往這個找到的 g 是沒有應用價值的。

以上廢話  */

這就是我所知道的machine learning的問題,簡單用一句話來說明就是,如何從資料中找到我們心中想知道的答案。

沒有留言 :

張貼留言