1. 程式人生 > >吳恩達機器學習課程筆記——第一週

吳恩達機器學習課程筆記——第一週

1. 單變數線性迴歸(Linear Regression with One Variable)

1.1 模型表示

單變數線性迴歸

像上述公式,因為只含有一個特徵/輸入變數,因此這樣的問題叫作單變數線性迴歸問題。

例子如下:
迴歸函式圖示

單變數線性方程,就是我們初中就學的一元一次函式。
當然啦,除了這個模型之外,我們還有很多其他的線性模型,比如指數模型、對數模型等等,除了線性模型之外,還有非線性模型,有這麼多的模型,其目的就是在於更好的擬合訓練集的資料,以使得預測率更高。

以下是對模型的具體定義:

迴歸圖示

2. 代價函式(Cost Function)

代價函式就是為了就是找到目的函式的最優解。

因為在一個訓練集中,有無數個模型(一元一次函式),我們需要找到最擬合這個訓練集的一個函式,所以就引入了代價函式,用來找到那個最好的模型。

2.1公式表示

代價函式

上述是平方誤差代價函式,這也是常用到的代價函式,它通過目的函式跟各個實際值的誤差平方建立新的函式。為了使這個值不受個別極端資料影響而產生巨大波動,採用類似方差再取二分之一的方式來減小個別數據的影響。

平方誤差代價函式圖示

2.2 代價函式的直觀理解①

最優解即為代價函式的最小值,根據以上公式多次計算可得到代價函式的影象:
代價函式圖示
可以看到該代價函式的確有最小值,這裡恰好是橫座標為1的時候。

2.3 代價函式的直觀理解②

如果有更多引數,就會更為複雜,兩個引數的時候就已經是三維影象了:
代價函式圖示2

3. 梯度下降演算法(Gradient Descent)

梯度下降是一個用來求函式最小值的演算法,我們將使用梯度下降演算法來求出代價函式J(θ0,θ1) 的最小值。

個人理解,代價函式是分析模型與實際訓練集之間的誤差,而梯度下降演算法的作用,就是找出那個誤差最小的代價函式。

演算法思想

演算法思想
- 從引數的某一個(組)值開始,比如從θ0=0和θ1=0開始
- 保持該(組)值持續減小,如果是一組值就要保證他們同步更新,直到找到我們希望找到的最小值

我們要找到一條最快下山的路徑,我們走的每一步大小就是α 。
梯度下降圖示1

如果在不同的起點,最後到達的最低點也會不一樣。
梯度下降圖示2

3.1批量梯度下降(batch gradient descent)

批量梯度下降

  • α:學習速率,決定我們讓代價函式下降程度最大的方向邁出的步子有多大
3.1.1 同步更新(Simultaneous update)

在梯度下降演算法中,我們需要更新θ0,θ1,實現梯度下降演算法的微妙之處是,在這個表示式中,如果你要更新這個等式,你需要同時更新。

同步更新公式

3.1.2 梯度下降演算法理解

如果 α 太大,那麼梯度下降法可能會越過最低點,甚至可能無法收斂,下一次迭代又移動了一大步,越過一次,又越過一次,一次次越過最低點,直到你發現實際上離最低點越來越遠,所以,如果 α 太大,它會導致無法收斂,甚至發散。

對α的理解

解決方法——乘偏導數

批量梯度下降直觀圖

首先初始化我的梯度下降演算法,在那個品紅色的點初始化,如果
我更新一步梯度下降,隨著我接近最低點,我的導數越來越接近零,所以,梯度下降一步後,新的導數會變小一點點。然後我想再梯度下降一步,在這個綠點,我自然會用一個稍微跟剛才在那個品紅點時比,再小一點的一步,到了新的紅色點,更接近全域性最低點了,因此這點的導數會比在綠點時更小。所 以,我再進行一步梯度下降時,我的導數項是更小的,θ1更新的幅度就會更小。所以隨著梯度下降法的執行,你移動的幅度會自動變得越來越小,直到最終移動幅度非常小,你會發現,已經收斂到區域性極小值。

3.1.3 線性迴歸的批量梯度下降

偏導數求解推導過程

偏導數求解推導過程

批量梯度下降方程

通過上面幾條公式的整合,最終得出以下公式
線性迴歸方程

4. 線性代數基礎

個人現在認為,線性代數的作用主要是為了方便操作訓練集。

4.1 矩陣的定義

橫為行,豎為列,表示方法一般是R^(m*n)
矩陣的定義

尋找某個矩陣元素
某個矩陣元素

4.2 矩陣加法(Matrix Addition)

同一個位置的矩陣元素相加,得到新的矩陣
矩陣加法

4.3 矩陣乘法(Scalar Multiplication)

將值與矩陣每個元素相乘,得到新的矩陣
矩陣乘法

4.4 矩陣的組合運算(Combination of Operands)

將矩陣加減法和乘除法結合起來,道理都一樣
矩陣的組合運算

4.5 兩個矩陣相乘

A矩陣的行 乘 B矩陣的列 得到新矩陣 y 。
兩個矩陣相乘1

兩個矩陣相乘2

4.6 矩陣應用到梯度下降演算法例項

把訓練集做成一個矩陣,把線性迴歸方程做成另外一個矩陣,將兩個矩陣相乘,最後就能得出一個新的矩陣。
矩陣應用到梯度下降演算法例項圖示

4.7 單位矩陣

在矩陣的乘法中,有一種矩陣起著特殊的作用,如同數的乘法中的1,這種矩陣被稱為單位矩陣.它是個方陣,從左上角到右下角的對角線(稱為主對角線)上的元素均為1。除此以外全都為0。

單位矩陣

除0矩陣外,任何矩陣乘單位矩陣都等於它本身。

單位矩陣運算

4.8 逆矩陣

定義

用octave求得逆矩陣:pinv()函式

octave求得逆矩陣