Machine Learning(機器學習)之一

魏仲凱發表於2019-02-27
Machine Learning(機器學習)之一

Machine Learning(機器學習)之二:juejin.im/post/5bd1d1…

Machine Learning的定義

早期定義

50年代,第一個機器學習的定義來自於Arthur Samuel。他定義機器學習為:在特定程式設計的情況下,給予計算機學習能力的領域。

他編寫了一個西洋棋程式。 這程式神奇之處在於,程式設計者自己並不是個下棋高手。 但因為他太菜了,於是就通過程式設計, 讓西洋棋程式自己跟自己下了上萬盤棋。通過觀察 哪種佈局(棋盤位置)會贏,哪種佈局會輸, 久而久之,這西洋棋程式明白了什麼是好的佈局, 什麼樣是壞的佈局。程式通過學習後, 玩西洋棋的水平超過了Samuel。這絕對是令人注目的成果。 儘管編寫者自己是個菜鳥,但因為 計算機有著足夠的耐心,去下上萬盤的棋, 沒有人有這耐心去下這麼多盤棋。通過這些練習, 計算機獲得無比豐富的經驗,於是漸漸成為了 比Samuel更厲害的西洋棋手。上述是個有點不正式的定義, 也比較古老。

近期的定義

由來自卡內基梅隆大學的Tom Mitchell提出,機器學習定義如下: 一個程式被認為能從經驗E中學習,解決任務 T,達到 效能度量值P,當且僅當,有了經驗E後,經過P評判, 程式在處理 T 時的效能有所提升。 在西洋棋那例子中,經驗e 就是 程式上萬次的自我練習的經驗 而任務 t 就是下棋。效能度量值 p呢, 就是它在與一些新的對手比賽時,贏得比賽的概率。

Machine Learning的學習演算法

1.Supervised learning(監督學習)

教計算機如何去完成任務

在有監督的學習中,我們得到一個資料集,並且已經知道我們的正確輸出應該是什麼樣的,並且認為輸入和輸出之間存在關係。

監督學習問題分為“迴歸”和“分類”問題。在迴歸問題中,我們試圖在連續輸出中預測結果,這意味著我們正在嘗試將輸入變數對映到某個連續函式。在分類問題中,我們試圖在離散輸出中預測結果。換句話說,我們試圖將輸入變數對映到離散類別。

例子1:

鑑於有關房地產市場房屋面積的資料,請嘗試預測房價。作為大小函式的價格是連續輸
出,因此這是一個迴歸問題。
我們可以將這個例子變成一個分類問題,而不是讓我們的輸出關於房子“賣得多於還是
低於要價”。在這裡,我們將基於價格的房屋分為兩個不同的類別。
複製程式碼

例子2:

迴歸 - 鑑於一個人的照片,我們必須根據給定的圖片預測他們的年齡
分類 - 鑑於患有腫瘤的患者,我們必須預測腫瘤是惡性的還是良性的。
複製程式碼

2.Unsupervised learning(非監督學習)

讓計算機自己進行學習

無監督學習使我們能夠在很少或根本不知道我們的結果應該是什麼樣的情況下解決問題。我們可以從資料中匯出結構,我們不一定知道變數的影響。

我們可以通過基於資料中變數之間的關係聚類資料來推匯出這種結構。

在無監督學習的情況下,沒有基於預測結果的反饋。

例子:

聚類:收集1,000,000個不同基因的集合,並找到一種方法將這些基因自動分組成不同
的相似或通過不同變數相關的組,例如壽命,位置,角色等。

非聚類:“雞尾酒會演算法”允許您在混亂的環境中查詢結構。(即在雞尾酒會上從聲音網
格中識別個別聲音和音樂)。
複製程式碼

3.Reinforcement learning(強化學習)

4.Recommender system(推薦系統)

線性迴歸演算法

模型表示

為了建立未來使用的符號,我們將使用

Machine Learning(機器學習)之一

表示“輸入”變數(本例中的生活區域),也稱為輸入特徵,和

Machine Learning(機器學習)之一

表示我們試圖預測的“輸出”或目標變數(價格)。一對

Machine Learning(機器學習)之一

被稱為訓練示例,以及我們將用於學習的資料集 – m個訓練樣例的列表

Machine Learning(機器學習)之一

稱為訓練集。請注意,符號中的上標“(i)”只是訓練集的索引,與取冪無關。我們還將使用X來表示輸入值的空間,並使用Y來表示輸出值的空間。在這個例子中,X = Y =ℝ。

為了更加正式地描述監督學習問題,我們的目標是,在給定訓練集的情況下,學習函式h:X→Y,使得h(x)是y的對應值的“好”預測器。由於歷史原因,該函式h被稱為 hypothesis。從圖中可以看出,這個過程是這樣的:

Machine Learning(機器學習)之一

當我們試圖預測的目標變數是連續的時,例如在我們的住房示例中,我們將學習問題稱為迴歸問題。當y只能承擔少量離散值時(例如,如果給定生活區域,我們想要預測住宅是房屋還是公寓,請說),我們稱之為分類問題。

Cost Function(成本函式)

我們可以使用成本函式來衡量我們的假設函式的準確性。這需要假設的所有結果與x和實際輸出y的輸入之間的平均差異(實際上是平均值的更高版本)。

Machine Learning(機器學習)之一
Machine Learning(機器學習)之一

此函式另外稱為“平方誤差函式”或“均方誤差”。平均值減半(1/2)是為了便於計算梯度下降,因為平方函式的導數項將抵消掉(1/2)。下圖總結了成本函式的作用:

Machine Learning(機器學習)之一

如果我們試圖用視覺術語來思考它,我們的訓練資料集就會分散在xy平面上。我們正試圖做一條由hθ(x)定義的直線通過這些分散的資料點。

我們的目標是獲得最佳線路。最好的線將是這樣的,使得來自線的散射點的平均垂直距離將是最小的。理想情況下,該線應該通過我們的訓練資料集的所有點。在這種情況下,J(θ0 ,θ1)的值將為0。

為了方便理解,我們可以先把θ0設為0,

下圖是θ1 = 1時:

Machine Learning(機器學習)之一

θ1 = 0.5時:

Machine Learning(機器學習)之一

下圖是J(θ1)大概的影像:

Machine Learning(機器學習)之一

因此,我們需要找到一個θ1來使Cost Function最小化,在上面的情況中,θ1 = 1就是我們想要的值。

當同時考慮θ0和θ1的時候,影像是這樣的:
這是一個三維曲面圖 兩個軸分別表示θ0和θ1,隨著你改變θ0和θ1的大小,你便會得到不同的代價函式 J(θ0,θ1),對於某個特定的點 (θ0,θ1) 這個曲面的高度 也就是豎直方向的高度 就表示代價函式 J(θ0,θ1) 的值。

Machine Learning(機器學習)之一

下圖與上圖是同一個意思,下圖可以理解成是從上圖以俯視的角度去看,而最低點就是同心橢圓形的中心點。

Machine Learning(機器學習)之一

等高線圖是包含許多等高線的圖形。雙變數函式的等高線在同一行的所有點處具有相同的值。

Machine Learning(機器學習)之一

上面綠線上的三個綠點具有相同的值

Machine Learning(機器學習)之一
Machine Learning(機器學習)之一

上圖最大限度地最小化成本函式,θ0大約為250,θ1大約為0.12。在我們的圖表右側繪製這些值似乎將我們的點置於最內圈“圓圈”的中心。

梯度下降

所以我們有假設函式,我們有一種方法可以衡量它與資料的匹配程度。現在我們需要估計假設函式中的引數。這就是梯度下降的地方。

想象一下,我們根據其欄位θ0、θ1繪製我們的假設函式(實際上我們將成本函式繪製為引數估計的函式)。我們不是繪製x和y本身,而是我們的假設函式的引數範圍以及選擇一組特定引數所產生的成本。

我們把θ0作為x軸和θ1作為y軸,在垂直z軸上具有成本函式。我們的圖上的點將是成本函式的結果,使用我們的假設和那些特定的θ引數。下圖描繪了這樣的設定。

Machine Learning(機器學習)之一

當我們的成本函式位於圖中凹坑的最底部時,即當它的值最小時,我們就會知道我們已經成功了。紅色箭頭顯示圖表中的最小點。

我們這樣做的方法是採用我們的成本函式的導數(一個函式的切線)。切線的斜率是該點的導數,它將為我們提供一個朝向的方向。我們在最陡下降的方向上降低成本函式。每個步驟的大小由引數α確定,該引數稱為learning rate(學習速率)。

例如,上圖中每個“星”之間的距離表示由引數α確定的步長。較小的α將導致較小的步長,較大的α將導致較大的步長。每一步的方向由J(θ0,θ1)的偏導數確定。根據圖表的開始位置,可能會在不同的點上結束。上圖顯示了兩個不同的起點,最終出現在兩個不同的地方。

梯度下降演算法是:

重複直到收斂:

Machine Learning(機器學習)之一

j = 0,1表示特徵索引號。

在每次迭代j時,應該同時更新引數θ1,θ2,…,θn。在計算另一個引數之前更新特定引數j
(th)迭代將導致錯誤的實現。
如下圖:(應該同時更新,而不是更新一個後再更新另一個)

Machine Learning(機器學習)之一

我們可以先從只有一個引數的場景來理解梯度下降並繪製其成本函式以實現梯度下降。

我們的單個引數公式是:

重複直到收斂:

Machine Learning(機器學習)之一

無論

Machine Learning(機器學習)之一

的斜坡的標誌如何,θ1最終收斂到最小值。下圖顯示當斜率為負時,其值為θ1增加,當它是正時,價值θ1降低。

Machine Learning(機器學習)之一

另外,我們應該調整引數α確保梯度下降演算法在合理的時間內收斂。沒有收斂或太多時間來獲得最小值意味著我們的步長是錯誤的。

Machine Learning(機器學習)之一

梯度下降如何以固定的步長α收斂?

當我們接近凸函式的底部時,

Machine Learning(機器學習)之一

接近0,在最低點,導數總是0,因此我們得到:

Machine Learning(機器學習)之一

在選好合適的步長α的前提下,當我們越來越接近最低點的時候,梯度下降會自動縮小步長,因為斜率的絕對值是越來越小的。所以我們不需要去減少步長α的值。

Machine Learning(機器學習)之一

線性迴歸的梯度下降

Machine Learning(機器學習)之一

當具體應用於線性迴歸的情況時,可以匯出梯度下降方程的新形式。我們可以替換我們的實際成本函式和我們的實際假設函式,並將等式修改為:

Machine Learning(機器學習)之一
Machine Learning(機器學習)之一

其中m是訓練集的大小,θ0和θ1是同時更新的,xi,yi是給定的訓練集中的值。

請注意,我們已經把θj分別等於θ0和θ1兩種情況分開。以下是推導的一個例子

Machine Learning(機器學習)之一

所有這一切的要點是,如果我們從猜測開始,然後重複應用這些梯度下降方程,我們的假設將變得越來越準確。

因此,這只是原始成本函式J的梯度下降。該方法在每個步驟中檢視整個訓練集中的每個示例,並稱為批量梯度下降。需要注意的是,雖然梯度下降一般可以對區域性最小值敏感,但我們線上性迴歸中提出的優化問題只有一個全域性,而沒有其他區域性最優; 因此,梯度下降總是收斂(假設學習率α不是太大)到全域性最小值。實際上,J是凸二次函式。下面是梯度下降的示例,因為它是為了最小化二次函式而執行的。

Machine Learning(機器學習)之一

上面顯示的橢圓是二次函式的輪廓。還示出了梯度下降所採用的軌跡,其在(48,30)處初始化。圖中的x(由直線連線)標記了漸變下降經歷的θ的連續值,當它收斂到其最小值時。

相關文章