2015年8月15日 星期六

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


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

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

為了找到未知的公式 $f: X \rightarrow Y$ ,我們必須要從資料集(Data set) $ D: (x_1,y_1) (x_2,y_2) ... (x_n,y_n) $ 中,利用演算法 $A$ 產生一個假說集 (Hypothesis set) $H: h_1(x), h_2(x) ...$ ,並想辦法從 $H$ 中挑一個我們心目中最接近 $f(x)$ 的假說,一般而言我們會用$g(x)$來表示那個從$H$雀屏中選的那個。

/* 以下廢話

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

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

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

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

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

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

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

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

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

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

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

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

以上廢話  */

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

沒有留言 :

張貼留言