機器學習定義
1959年Arthur Samuel曾經這樣定義機器學習:Field of study that gives computers the ability to learn without being explicitly programmed.Samuel 本人也寫了一個西洋棋的程序,通過讓這個程序練習下西洋棋一萬次,使得這個西洋棋程序的棋藝比自己還要高超。
1998年Tom Mitchell對機器學習給出了一個更加正式的定義:A computer program is said to learn from experience E with respect to some task T and some performance measure P,if its performance on T,as measured by P,improves with experience E.這個定義比較專業,甚至還有點押韻。
課程內容
監督學習(supervised learning):監督學習就是給出一組特征,也給出特征所對應的結果。以此來推測另外的特征所對應的結果。比如說給出某一地區房子的面積大小,卧室數量,以及它們所對應的價格。以此來預測給定面積大小,卧室數量的另外一些房子的價格。
學習理論(learning theory):介紹一些theory。
無監督學習(unsupervised learning):無監督學習就是給出一些特征,但是不給出這些特征所對應的結果,以此來判斷這些特征之間有什們結構關系。聚類問題就是無監督學習的一個例子。
強化學習(reinforcement learning):強化學習就是不斷做出決策。比如無人駕駛飛機,只有不斷做一些良好的決策,這個飛機才能持續飛行 。
監督學習
定義幾個符號
m:樣本數量(# training examples)
x:輸入值,又成為特征(input variables/features)
y:輸出值,又叫目標值(output variables/target variables)
(x,y):訓練樣本(training examples)
第i個訓練樣本(ith training examples):(x(i),y(i))
監督學習思路
為了設計學習算法,我們第一步要做的決定就是怎樣表示h,即預測函數。倘若給定某一地區房間的大小以及對應的價格,那么這只有一個特征,我們就可以令,若將theta看成向量,那么也可以寫成
。如果給出兩個特征,那么可以將預測函數寫成
,假設X0=1,那么預測函數就可以寫成
。當特征有n個時,依次類推。
實際上,我們希望自己的預測值與實際值之間的差距要小一些,即盡量小,即目標是
,前面乘以1/2是為了之后數學計算的方便性。定義函數J:
。
我們的目標就是求出參數theta,使得J取值最小。
尋找theta的算法
搜尋算法(search algorithm,應為一類算法統稱)
算法思想:
1.先給定一個特定的theta,例如可以讓theta取零向量。
2.改變theta的值,讓J變小,不斷重復,以求得最小J。
梯度下降( gradient descent)
算法思想:給定某一特定的theta值,然后重復此操作
,其中“:=”是賦值操作,alpha稱作學習速度。
若只有一個樣本點,那么
此時可以將theta的更新操作更改為。
同理可證若有m個訓練樣本,則更新操作應該為
以上的梯度下降算法稱作“批梯度下降算法”(batch gradient descent),這種算法要遍歷整個樣本。
若樣本很大,則可以使用隨機梯度下降算法,也稱增量梯度下降算法(stochastic gradient descent (also incremental gradient descent)),此算法的基本思想為:
循環{
for j=1 to m{
(for all i)
}
}
這個算法的好處就是不用每次都要遍歷所有的樣本。為了開始學習,僅僅需要查看第一個樣本,但是這個算法不會精確的收斂到全局的最小值。
正規方程組(normal equation)
定義一下矩陣求導
求過導后的矩陣是一個n+1維向量。此時,梯度下降算法的更新可以寫成
矩陣求導的進一步說明
如果A是n*n的矩陣,那么tr(A),即A的跡就等於A矩陣對角線元素之和。
trAB=trBA
trABC=trCAB=trBCA
tra=a,a為實數
定義幾個矩陣
對上述另上述J的梯度等於0,經過推到就會得出正規方程組
得出