[Coursera] 機器學習入門

[Coursera] 機器學習入門

@斯坦福公開課 Machine Learning 學習筆記

基本思想

機器學習(machine learning)是一種方法或算法,它能夠通過“學習”,來解決一些特定的問題。

接下來,我將以具體的實例,闡述機器學習的產生和設計過程。

以認人識物爲例,只要你告訴一個之前不知道蘋果的人“這是蘋果,那是蘋果,那也是蘋果”,當你再拿一個新的蘋果,問他是什麼,他便能夠回答出“這是蘋果”。

這對於人來說,是一個很自然,不需要什麼努力就能完成的任務,但這對機器卻不是。如果要讓機器能夠認出這個蘋果,我們要先思考 “我們人,是怎麼認出這個蘋果的”。

將認蘋果的過程抽象出來,我們可以得到以下過程:

這裏寫圖片描述

即人眼看到蘋果,獲取蘋果的圖像傳遞給大腦,大腦對圖像進行判斷,得出結果。將此過程再抽象擴展,我們得到更一般的過程。

這裏寫圖片描述

即給定一個或多個輸入,通過一個處理器處理,得到一個或多個輸出。

此即人對此類問題處理方法的概況,也即“人是怎麼認出蘋果來的”。同時,這個過程也給了我們要讓機器認出蘋果的方法。即解決兩個問題:

  1. 如何獲取輸入
  2. 如何處理輸入,並給出輸出

不同的問題有不同的獲取輸入的辦法,以認蘋果爲例,利用數碼照相機對蘋果成像得到照片(即一系列像素)即可作爲輸入。通常來說,輸入的獲取較爲容易(當然也不全是這樣),而處理部分則相對困難。

對於處理,也有很多不同的辦法,其主要思想在於構造一個函數,能夠將不同輸入映射到不同的輸出上去。

然而我們不可能針對每個問題都設計一個算法,認蘋果一個,認桃子一個這樣做,我們需要讓機器學習,讓它自己設計出這個“算法”,我們要做的就是

  1. 提供給機器學習的辦法
  2. 提供給機器評估算法好壞的辦法

至此,我們最初“讓機器認物品(蘋果)”這個問題就轉換爲,如何讓機器通過一系列輸入,在這個例子中爲物品的照片,學習出識別的算法 和 如何評估算法的優劣,好讓機器調整算法。

至此,我們便清楚了機器學習究竟在做什麼以及它大體上是如何做的。

下面簡單介紹一種模型:


解決模型

線性迴歸

線性迴歸分爲單變量線性迴歸和多變量線性迴歸。其中單變量線性迴歸就是大家初高中求迴歸直線基本一樣,而多變量就是將回歸直線擴展到平面,空間,高維空間。

我們知道線性迴歸就是用一個線性函數去擬合給定的一個數據集,就像這樣。

h(X)=θ0+θ1x1+θ2x2+...+θnxn

這裏寫圖片描述

(圖片來自CS229)

我們求線性迴歸就是要求那些參數 θ ,對與線性迴歸我們是有解析法的,但是讓機器去算這些公式並不現實,同時對於很多非線性迴歸問題並沒有解析法可用,因此我們還有另外一種求參數 θ 的辦法,即 梯度下降(Gradient descent)

它通過一個給定的初始參數,利用一個評估函數指導如何修正參數,不斷迭代,從而求出最終參數。

評估函數(cost function):

J(θ0,θ1)=12mi=1m(y^iyi)2=12mi=1m(hθ(xi)yi)2


一些建議

複習線性代數

機器學習的絕大多數算法,都要利用矩陣向量化(vectorization)來加快運算速度,所以一定要熟練掌握將各種加法乘法運算,轉換爲矩陣運算。

θ0+θ1x1+θ2x2+...+θnxn 可以轉換爲兩個矩陣相乘 θX

編程語言的選擇

初學者不必強求自己實現各種機器學習算法,可以多利用現有的第三方庫。

不建議一開始就用 Java, C#, C, C++ 進行學習,甚至Python也不要

建議使用 matlab 或 octave

它們只需簡單的幾行代碼就能實現複雜的功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章