Posted By Mr. Thursday
前兩篇分別定義了機器學習的問題,以及數學基礎知識的補充。這一篇終於要正式介紹,SVM問題定義最佳化問題的這一步驟。
首先讓我們回想一下前兩篇使用的例子,把照片分成兩類的這個學習問題。下面這張圖是最後機器看待這個問題的方式:
紅色和藍色的座標軸,分別代表紅色和藍色的強度座標軸。因為現在每張照片只有紅色和藍色強度兩個特徵,所以每張照片依照這兩個特徵,可以在平面上這個「二度空間」,座落在某個座標點上面。除了座落在平面上某個點以外,在機器學習的訓練階段,每個學習範例,除了本身特徵讓自己座落在空間裡面某個地方以外,還有正確答案的標記,像是在照片分類問題裡面,要分成有橘子和沒有橘子兩類,在上圖中,圈圈代表那一張照片裡面有橘子,叉叉代表那一張範例照片裡面,沒有橘子。
當每張照片都在特徵 (feature)空間裡面找到一個地方以後,範例照片也依照正確答案標記圈圈叉叉以後,在機器訓練階段,未知的東西,就是要求出一條直線,或是在高維度空間裡面,一個超平面(hyper-plane),這條直線會當成機器在訓練階段求出來的模型 (model),之後在機器預測階段,會拿來預測特徵空間裡面新加進來的照片,可是這個時候沒有圈圈叉叉,必須要依靠學習出來的直線,在直線右上方預測為有橘子 (也就是預測是圈圈照片的一份子),在直線左下方,就預測為沒有橘子 (也就是預測為是叉叉照片的一份子)。
那麼現在在訓練階段,機器有每張範例照片的座標點,也有目標要學習出一條直線當作日後預測的模型 (model),那這個目標和範例們,要怎樣子化成最佳化問題(optimization problem),也就是把目標化成數學的「目標式」(goal),範例帶來的條件限制,化成數學的「限制式」(constraint),請看以下說明。
首先,我們要先把每個座標點符號化,把上面那張圖,每一個點用數學變數的符號來代表:
每個點的紅光強度用x1來表示,藍光強度用x2表示,除此之外,還有一個上標,括號(1)代表這是第一個範例座標點的x1和x2括號2代表第二個範例的x1和x2,無論範例是圈圈還是叉叉,都是如此代表。以此類推,第i個範例,我們的上標就是括號(i)了!
除了把特徵用x1和x2代表,第幾個範例用上標括號(i)來代表以外,範例的標記,這邊用變數y來代表,同樣地,第i個範例的標記,就是y上標(i),如下圖所示:
接下來,我們要開始定義目標式(goal)。在這邊SVM有個目標,就是在學習階段求直線的時候,這條直線和平面上每個範例點,都有一個垂直距離。而所有垂直距離裡面最小的那一個距離,這邊用j來代表,例如下圖:
所以現在我們在機器訓練階段的時候,已知的東西都有符號來代表了:每個範例(i)有x1和x2代表兩個特徵的量,每個範例(i)有y來代表正確答案的標記,y等於1的時候代表圈圈,也就是有橘子,y等於-1的時候代表叉叉,也就是照片裡面沒有橘子。
接下來就是未知的東西,也就是訓練階段要求得的模型(model),圖裡面那條直線。雖然是未知,但是我們仍舊可以用符號代表。
既然提到直線,就如同SVM之旅1(b)裡面提到的,畫在平面上的直線,可以用方程式來表示,反過來看到方程式,在平面上把滿足這個方程式的(x1,x2)一個描出來,就會得到一條直線畫在平面上。
除此之外,座標上的任一點代入方程式,如果大於0代表在直線右上方,反之小於0則是在直線左下方,如下圖所示:
更重要的是,一條直線方程式,我們可以簡化成w‧x+b = 0這個最簡單的符號形式,也就是用w和x兩個向量,代表直線方程式的前半段,如果是在平面二度空間,x就代表(x1,x2)這個向量,w就代表對應的係數的向量(w1, w2)。
所以原來的直線方程式,如果是w1‧x1 + w2‧x2 + b = 0,只要寫成w‧x + b = 0就可以了。甚至推廣到N度空間,一樣寫成w‧x + b = 0,只是這個時候,w代表(w1, w2, …, wn),x代表(x1, x2, …, xn)。如果想不通,可以參考上一篇文章,以及上次提到的代換過程:
所以我們現在終於可以用數學符號表示我們想要學習出來的直線了!就寫成
w‧x + b = 0
w是未知,對應到圖形上面,就是直線的法向量,也就是和直線垂直的一條向量。如果已經忘記「法向量」的讀者,不妨先把w視為描述直線傾斜程度的一個向量,w變動,就代表著直線稍微斜一點,或著直線稍微平坦一些。
因為訓練階段的時候,範例的座標是已知x = (x1, x2),範例的標記是已知y=1 or -1,剩下要學習出來的未知,就是直線的傾斜程度和平移程度,分別是直線方程式裡面的w和b來代表。
另外還有一個變數j,代表著所有範例和直線的垂直距離裡面,最小的那一個距離。現在終於要看到SVM問題的定義了!
SVM的目標是:把j最大化,也就是說,學習出來的直線,要和最近的那一個範例的距離,愈大越好!
先看一下圖形表示法:
SVM的目標,就是要學習一條直線,用數學符號來說就是在所有可能的w和b裡面,學出一組w和b,這組w和b所代表的直線,可以讓j是所有可能值裡面,的最大值。
再白話文一些,就是把直線傾斜一些或是平坦一些,上下左右移動一些,這個時候j的值,會跟著變大變小。機器學習過程中就是把直線這樣子調來調去,直到圖裡面那段用符號j代表的距離,是所有嘗試過程裡面,最大值,這個時候直線的斜率和平移程度,就是機器要留下來的學習成果。這個學習成果就是一條直線,可以用w和b兩個符號來代表。
至於為什麼SVM的目標是這樣子呢?我們可以先自己證明一下,也許用反向思考,反證法,如果在一堆直線的可能選擇裡面,我們選一條直線,沒有讓j最大化,會發生什麼事情?目前我想到的是,如果沒有讓j最大化,代表這條直線和某一個範例的距離太接近,那麼在預測階段,預測錯誤可能因此增加。至於詳細理論基礎課程中也沒有提到,也許之後再做嚴謹的證明和討論吧!
所以最後,把這個目標寫成數學式子,就變成:
max j
用圖片來方便顯示數學符號:
除了目標是max j的部分以外,上圖裡面還有限制式。其實限制式的部分也不難懂,要表達的限制其實就是剛才提到的:j是所有範例點和直線垂直距離裡面,最小的距離,反過來說,所有範例點,不管是範例1、範例2、還是範例(i),他和直線的距離都要大於等於j。
寫成方程式,就變成上圖裡面的限制式了。
不過這邊還少一項東西,在這邊稍微說明,在開放課程裡面,Andrew Ng教授用了兩個符號,分別是 j 和 j^hat (j上面有一個向上箭頭)。j 剛才提到是最接近直線的範例,和直線的垂直距離,那麼j^hat呢?
j^hat其實就是所有範例(i)裡面,和直線最小的函式距離,所謂的函式距離,就是上圖裡面的第一個式子。每一個範例,都可以算出一個函式距離(functional margin)。函式距離所代表的,是這個範例,帶入目前這個w和b所代表的直線之後,乘上自己的標記y (只等於1或-1)。延續之前提過的部分,一條直線帶入範例以後,如果在右上方,會大於0,如果在左下方,會小於0,因此上圖第一個式子,其實就是把範例代入直線方程式以後,乘上y讓原來正的值還是正的,負的值因為只有在直線左下方的範例才會有,而左下方的範例他們的y都等於-1,所以負負得正!
在延續上圖所示,第二道式子,代表所謂幾何距離 j (geometry margin)。幾何距離j 或是函式距離 j^hat,都是從每個範例(i)算出來的幾何距離、函式距離裡面,分別各自挑出最小的那一個來代表。
第三道式子,就是目前沒有證明的式子,開放課程裡面有證明,今天先略過,或是各位有興趣可以用線性代數基本原理來得證。最後根據這個結果,我們會知道幾何距離j,和函式距離j^hat之間的關係,可以用第四道式子來代表,也就是函式距離,除以w向量的長度,會等於幾何距離。
回到剛才SVM化成最佳化問題的那張圖:
第一道式子,就是SVM的目標,把幾何距離 j 最大化。第二道式子,原本根據定義,式子右邊應該是 j^hat才對,但是因為限制是有多一道式子,就是w向量的距離規定限制在等於1,而根據j和j^hat的關係,如果w向量的長度為1,這時候j就等於j^hat了!因此上圖SVM最佳化問題的第二道式子右手邊是寫幾何距離j,而沒有寫函式距離j^hat,因為有第三道式子限制w向量的長度為1。
接下來要為SVM之旅(2b)做開端。有了上面這個最佳化問題之後,在開放課程裡面,Andrew Ng教授,把最佳化問題,做了兩次轉換,每次轉換後的問題,都保證會求出一樣的解,也就是不會脫離原來問題要表達的意思。
但是意思不變的前提下,問題為什麼需要轉換呢?因為在後頭求解的過程中,我們需要保證定義的問題的式子,滿足所謂的「凸」的性質 (convex),各位請別誤會!在SVM之旅(2b)我會好好解釋何謂「凸性質」(convex),為什麼要滿足convex才能使用某個求解方法 (梯度遞減法gradient descent),以及用畫圖的方式來視覺化,兩次轉換的時候,到底發生什麼事情,為什麼能夠保留原來問題式子的意思,新的式子卻又為什麼滿足了凸性質!
最後把課堂錄影裡面,Andrew Ng教授問題轉換的畫面貼上來,如果各位數學已經有基礎,這邊符號我也都盡量和課程中使用的符號相同,各為不妨先自行思考醞釀一番,黑板上三種定義問題的方式為什麼意思一樣,但是視覺化起來怎樣子滿足了convex性質。我們下次再見!
看完您的文章!
使學生對svm中w和x 的求解有更深的認識,
使我接下來要用手動算出svm的直線,
似乎有感覺了 ^^”
您好!
學生看了您的文章,有一些問題,不知可否提問?
我的問題是,w是法向量,但該怎麼求得呢?
法向量的解應該不只一個吧?
若只知十個樣本點的座標,有辨法算出「超平面」嗎?
謝謝