目錄
單變量線性迴歸 Linear Regression with One Variable
機器學習是什麼
在課後題目中看到一個定義,感覺比較適合理解
A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.
機器學習的分類
監督學習和無監督學習
監督學習 Supervised Learning
監督學習(Supervised Learning)問題分爲“迴歸”和“分類”問題:
- 在迴歸問題中,我們試圖在連續輸出中預測結果,這意味着我們正在嘗試將輸入變量映射到某個連續函數
- 在分類問題中,我們試圖在離散輸出中預測結果。 換句話說,我們正在嘗試將輸入變量映射到離散類別
其基本思想是,我們數據集中的每個樣本都有相應的“正確答案”。
無監督學習 Unsupervised Learning
無監督學習使我們能夠在很少或根本不知道我們的結果應該是什麼樣的情況下處理問題。我們可以從數據中導出結構,我們不一定知道變量的影響。我們可以通過基於數據中變量之間的關係對數據進行聚類來推導出這種結構。在無監督學習的情況下,沒有基於預測結果的反饋。
例如:在做題時,我們有時知道答案,邊做題邊對答案,這樣就是一種監督學習;但是有時我們沒有答案,但是我們依然可以根據題目的樣子,推斷出這個題目是英語題還是數學題,這樣對題目的分類是一種無監督學習。
在無監督學習中,我們已知的數據。看上去有點不一樣,不同於監督學習的數據的樣子,即無監督學習中沒有任何的標籤或者是有相同的標籤或者就是沒標籤。所以我們已知數據集,卻不知如何處理,也未告知每個數據點是什麼。
典型案例:雞尾酒會問題,基因自動分組,新聞事件分類。
單變量線性迴歸 Linear Regression with One Variable
以之前的房屋交易問題爲例,假使我們迴歸問題的訓練集(Training Set)如下表所示:
符號說明
訓練集中實例的數量 | |
特徵/輸入變量 | |
目標變量/輸出變量 | |
訓練集中的實例 | |
第個觀察實例 | |
學習算法的解決方案或函數也稱爲假設(hypothesis) |
我們的任務如下圖所示
這就是一個監督學習算法的工作方式,我們可以看到這裏有我們的訓練集裏房屋價格,我們把它餵給我們的學習算法,學習算法的工作了,然後輸出一個函數,通常表示爲小寫表示。
一種可能的表達方式爲:。因爲只含有一個特徵/輸入變量,因此這樣的問題叫作單變量線性迴歸問題。
代價函數
這裏我們定義代價函數的概念,這有助於我們弄清楚如何把最有可能的直線與我們的數據相擬合。
現在要做的便是爲我們的模型選擇合適的參數(parameters)和 。我們選擇的參數決定了我們得到的直線相對於我們的訓練集的準確程度,模型所預測的值與訓練集中實際值之間的差距是建模誤差(modeling error)。
藍線即是建模誤差
我們的目標便是選擇出可以使得建模誤差的平方和能夠最小的模型參數。 即使得代價函數最小,代價函數爲
可以得到下面的圖
則可以看出在三維空間中存在一個使得最小的點。除了這種表示方式,也經常用等高線圖來表示上圖(和地理上的等高線圖差不多),如下圖。
代價函數也被稱作平方誤差函數,有時也被稱爲平方誤差代價函數。我們之所以要求出誤差的平方和,是因爲誤差平方代價函數,對於大多數問題,特別是迴歸問題,都是一個合理的選擇。還有其他的代價函數也能很好地發揮作用,但是平方誤差代價函數可能是解決迴歸問題最常用的手段了。
顯然對於上面的圖,我們也不希望編個程序把這些點畫出來,然後人工的方法來讀出這些點的數值。們會遇到更復雜、更高維度、更多參數的情況,而這些情況是很難畫出圖的,因此更無法將其可視化,因此我們真正需要的是編寫程序來找出這些最小化代價函數的和的值。那麼如何求這倆值呢?
梯度下降 Gradient Descent
梯度下降是一個用來求函數最小值的算法。
梯度下降背後的思想是:開始時我們隨機選擇一個參數的組合,計算代價函數,然後我們尋找下一個能讓代價函數值下降最多的參數組合。我們持續這麼做直到到到一個局部最小值(local minimum),因爲我們並沒有嘗試完所有的參數組合,所以不能確定我們得到的局部最小值是否便是全局最小值(global minimum),選擇不同的初始參數組合,可能會找到不同的局部最小值。
思想
想象一下你正站立在山的這一點上,站立在你想象的公園這座紅色山上,在梯度下降算法中,我們要做的就是旋轉360度,看看我們的周圍,並問自己要在某個方向上,用小碎步儘快下山。這些小碎步需要朝什麼方向?如果我們站在山坡上的這一點,你看一下週圍,你會發現最佳的下山方向,你再看看周圍,然後再一次想想,我應該從什麼方向邁着小碎步下山?然後你按照自己的判斷又邁出一步,重複上面的步驟,從這個新的點,你環顧四周,並決定從什麼方向將會最快下山,然後又邁進了一小步,並依此類推,直到你接近局部最低點的位置。
批量梯度下降 Batch Gradient Descent
公式:
注意:這個公式符號是:=,即要求對參數同步更新
應該計算上圖公式右邊的部分,即先算一組的和,再算下一組和,不要把更新過的再帶到當前計算式子裏面。
其中是學習率(learning rate),它決定了我們沿着能讓代價函數下降程度最大的方向向下邁出的步子有多大,在批量梯度下降中,我們每一次都同時讓所有的參數減去學習速率乘以代價函數的導數。
- 如果太小,那麼移動的步長可能會很小,移動會非常慢,收斂速度慢。
- 如果太大,那麼梯度下降法可能會越過最低點,甚至可能無法收斂,下一次迭代又移動了一大步,越過一次,又越過一次,一次次越過最低點,直到你發現實際上離最低點越來越遠,所以,如果太大,它會導致無法收斂,甚至發散。
當收斂到最低點時,那麼根據上圖,導數爲0,公式中的爲0,它使得不再改變,也就是新的等於原來的
那麼隨着收斂,需不需要減小呢?
答案是不需要。在梯度下降法中,當我們接近局部最低點時,梯度下降法會自動採取更小的幅度,這是因爲當我們接近局部最低點時,很顯然在局部最低時導數等於零,所以當我們接近局部最低時,導數值會自動變得越來越小,所以梯度下降將自動採取較小的幅度,這就是梯度下降的做法。所以實際上沒有必要再另外減小。
爲何是“批量梯度下降”?
指的是在梯度下降的每一步中,我們都用到了所有的訓練樣本,在梯度下降中,在計算微分求導項時,我們需要進行求和運算,所以,在每一個單獨的梯度下降中,我們最終都要計算這樣一個東西,這個項需要對所有個訓練樣本求和。
因此,批量梯度下降法這個名字說明了我們需要考慮所有這一"批"訓練樣本,而事實上,有時也有其他類型的梯度下降法,不是這種"批量"型的,不考慮整個的訓練集,而是每次只關注訓練集中的一些小的子集。
線性代數
線性代數部分沒做筆記
參考:吳恩達機器學習知識點回歸和課後習題練習(week 1)
原課程:機器學習-Coursera