所以到底機器透過什麼方式學習呢?
其實說穿了就只是去學習一個對應關係,一個函數!
也就是去學習一個 y = f(x)的關係
天啊,甚麼意思??
舉例來說呢,我們想知道一小時後的氣溫,我們決定參考現在的濕度來做為依據。
那我們剛剛上面三個東西就會變成
假設我們最後學習到的那個f(.)是 f(x) = 30x
意思就是說,假設現在的濕度是80%也就是0.8,那我們的電腦就會說,一個小時之後的氣溫會是24度!
不過很明顯的舉例的這一個關係一定不準。
但是可以想像,如果x多一點,例如我們考慮更多因素,氣溫、濕度、地理位置…等等,我們就可以更精準的判斷一小時之後的氣溫。
數學一點來說,就是我們可以更充分表現我們所要的函數。
以上面的例子來說,如果實際上真正的對應關係,要考慮三個變數(我們以粗體x表示向量,如果你不懂向量,你可以暫時先想像他是我懶得打[x1 x2 x3],而是用x代替)函數是f(x) = x1 + x2 + x3,那我只考慮一個變數,用 f(x) = x1 來學習,效果一定會很差。
如果我們今天考慮三個變數x = [x1 x2 x3]
那f(x) = x1 + x2 + x3 ,這一個函數式他的係數就是[+1 +1 +1]
若f(x) = 5x1 - x2 + 3x3 ,那係數就是 [+5 -2 +3]
也就是我們只要決定係數,那我們就可以決定這些變數之間的關係,也就是學習這件事情,其實是在學習函數的係數,另外此後我們將稱這些變數特徵,而我們總共用了幾個特徵,我們就稱幾個維度。
可以想像,我們的特徵越多,越有機會知道他們之間的對應關係,而特徵也不一定只是那些物理上的數值,他也可以是抽象一點的。
例如:x1 = 溫度 x2 = 溫度平方 x3 = 溫度三次方 x4 = 溫度四次方 … 以此類推。
這樣的表示方式我們叫他多項式基底,我們可以把他標記成
x左邊那的東西唸作phi
也就是說,即使我們只有一個特徵,我們還是可以透過一些手段讓他對於我們的函數更具表現能力。
而這樣的phi只是其中一種方式而已,phi有很多定義,就看你打算怎麼抽取你的特徵來決定,這邊我們不多談。
接下來我們看個例子!
藍色的點是我們資料的分佈,x軸是我們所輸入的資料,y軸是我們希望得到的預測
那如果今天我們只用一個維度,也就是只用x去預測的話,會得到這樣的結果。
紅色的曲線就是我們的預測,粉紅色區域是他的範圍,我們這邊可以先不管他。
可以看到預測效果非常的差,基本上連我們監督的告訴他,什麼x你應該在什麼y他都做不到。
那我們把維度提高,也就是剛剛,我們把x提升到七次方
可以發現他現在效果就相當不錯,可以把我們已經告訴他答案的情況都預測的非常好
以上的例子叫做curve fitting(曲線擬合)!
預計明天再跟大家比較詳細的介紹曲線擬合的問題。
看完上面的例子,希望你可以有點感覺,機器學習,其實就是在學習一個函數,也就是一個對應關係。
也就是例如,今天的溫度跟今天的濕度,也許與明天的降雨機率有一個神秘的對應關係,那我們就是輸入濕度與溫度,讓機器學學的演算法告訴我們他們那一個對應關係是什麼,並且利用這個關係去預測未來的降雨機率!
簡單來說,機器學習就是利用過去的資料,去預測未來的情況!
而這種方式因為都是利用過去的資料,所以這樣的方式被稱作Data-Driven!
明天我們就會開始跟大家討論,這些函數的係數要怎麼學!