1. 程式人生 > >Machine Learning (2) Parameter Learning & Linear Algebra Review

Machine Learning (2) Parameter Learning & Linear Algebra Review

上一篇介紹了機器學習的基本概念以及這個系列中將要使用的各種表示法,建議手動畫幾次所謂的訓練資料集的表格,加深對各個引數的理解。另,這個系列的主要目的是對整體ML提供一個有深度併兼顧廣度的flavor,所以在這個系列中的programming練習將會用matlab實現,如果沒有matlab許可權的,用octave也是一樣的。

1. Gradient Descent [梯度下降法]:

1.1 在上一點裡已經介紹了對於一個相應線性迴歸模型中,可以利用代價函式來尋找相應的最小值Jmin,並介紹了輪廓圖以觀察J隨變數θ的變化趨勢。但是靠人眼來找相應的Jmin顯然是不合理的。於是引入梯度下降法,這個利用這個方法可以更合理的找到相應的Jmin

1.2 對於J(θ0,θ1)的過程,我們是根據根據θ0θ1的域來繪製假設函式(實際上,我們是在把成本函式當成引數估計函式來描述)。因為我們不是在根據xy變數本身進行函式繪製,而是將函式的引數當做自變數,並選擇一組特定(x, y)引數從而產生相應的成本函式。

1.3 將傳統的x軸變為θ0軸,而傳統的y軸變為θ1軸,傳統的z軸將變為成本函式值,即J(θ0, θ1).下圖描述了相關結果:

1.4 當成本函式處於圖中凹坑的底部時,它的值是最小值。紅色的箭頭表示圖中最小的點。具體的實現方法是取成本函式的導數(切線的函式),切線的斜率是這一點的導數,它會給一個方向。沿著最陡下降的方向,即成本函式向下最快的方向走。每個下降步驟的大小由引數α

決定,這稱為學習速率

1.5 注意,具體的最低處的位置,與起始點是有關的,如上圖所示,當開始點不同但是兩個很近的點時,最終到達的“底部”也是不同的。

1.6 用數學方式表述下降演算法為:(重複迭代以下計算直到收斂,注意其中j = 0, 1

1.7 最後需要注意的一點是,在上述迭代過程中會涉及到θ0θ1的更新問題,一般梯度下降演算法都是對兩者同時進行更新,注意不要搞錯,交替更新就不是梯度下降演算法了,如下圖:

2. Gradient Descent for Linear Regression [線性迴歸梯度下降]:

2.1 對於上一點提到的下降演算法,進行一個求導簡化如上:(如上,迭代直到收斂)。

2.2 這一切的重點是,如果從某假設的猜測點開始,然後反覆應用這些梯度下降方程,我們的h(x)就會變得越來越準確。

2.3 Batch Gradient Descent [批量梯度下降]:如上所述的方法是原始成本函式的梯度下降演算法,其中的每一步都是在全域性資料上進行的。這裡涉及到Batch [批量]的概念,對於機器學習中一類每一步都著眼於整體資料集的方法,都被稱為是Batch類問題。

2.4 Convex Function [凸函式]:是指區域性最小值即全域性最小值的一類實數函式集。

3. 線性代數相關:

3.1 矩陣和向量相關Matlab實現:

3.2 矩陣和向量的標量乘法

3.3 矩陣與向量的點乘:

3.4 矩陣與矩陣的點乘: