機器學習公式推導

  本篇筆記主要記錄及推導Andrew NG的Machine Learning課程中出現的公式。

  我們假設對於任意的分類、聚類、迴歸等問題在自然界中總是存在一個精確的模型與之相對應,接下來我們要做的就是根據獲取的樣本來反推並確定這個模型。由於我們畢竟無法遍歷這個問題所有的情況,所以我們只能根據獲取的樣本去儘可能接近的確定這個模型。

  公式化上面這段描述,問題對應的模型就藏在假設空間(Hypothesis) h θ ( x ) 中,我們需要通過觀測樣本,確定其中的 θ 值。在確定 θ 值的過程中,定義一個損失函數(Cost Function) J ( θ ) ,如果我們獲取的樣本在某一個參數 θ 時使損失值達到最小,即表示當前 θ 值確定的模型可以使預測值很接近觀察值。那麼這個模型就是我們需要尋找的。

  對於監督學習,我們要做的就是確定目標函數,損失函數,然後通過樣本訓練,得到損失值最小的那一組參數值,用該參數值代入目標函數,即可得到對應問題的模型。

一、線性迴歸模型

1、單一變量的線性迴歸模型

  目標函數

h θ ( x ) = θ 0 + θ 1 x

   損失函數
J ( θ 0 , θ 1 ) = 1 2 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) 2

  公式說明:
   h θ ( x ( i ) ) : i
   y ( i ) : i

  接下來的目標就是找到一組參數值,使得損失函數值最小,即

m i n i m i z e θ 0 , θ 1 J ( θ 0 , θ 1 )

  求損失函數最小值時,使用梯度下降(Gradient descent)的方法。在微積分中我們學過梯度,梯度方向是函數值下降最快的方向,所以在梯度下降方法中,我們分別求 θ 0 θ 1 的偏導數,然後用該導數值更新參數值。

(7) r e p e a t   u n t i l   c o n v e r g e n c e { θ j := θ j α θ j J ( θ 0 , θ 1 ) ( f o r   j   =   1   a n d   j   =   0 ) }

  說明,上面公式中的 := 表示賦值的意思,如果直接寫a = 1可能會被誤理解爲判斷a是否等於1

  求損失函數 J ( θ 0 , θ 1 ) θ 0 θ 1 的偏導數,

θ 0 J ( θ 0 , θ 1 ) = 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) θ 1 J ( θ 0 , θ 1 ) = 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x ( i )

使用偏導數公式對上式展開。

(8) r e p e a t   u n t i l   c o n v e r g e n c e { θ 0 := θ 0 α 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) θ 1 := θ 1 α 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x ( i ) }
 

2、多變量線性迴歸模型

  上一節的模型中只有一個指標 x ,理解了線性迴歸模型及其尋找最優化參數的過程。接下來將該思路應用到多變量模型中。

(1)目標函數

h θ ( x ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + + θ n x n

  上式中的 x 1 , x 2 , , x n 都是給定樣本中的指標,其中 x 0 = 1 是人爲增加的。
  如果將目標函數使用向量表示,
h θ ( x ) = θ T x

(2)損失函數

J ( θ ) = 1 2 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) 2

(3)梯度下降

(9) r e p e a t   u n t i l   c o n v e r g e n c e { θ j := θ j α θ j J ( θ ) ( f o r   j   =   0   , ,   n ) }

  分別對 θ 0 , θ 1 , θ 2 求偏導數並進行展開,如下所示

θ 0 := θ 0 α 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) θ 1 := θ 1 α 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x 1 ( i ) θ 2 := θ 2 α 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x 2 ( i )

(4)公式法

  如果我們將目標函數向量化, T X T θ = y ,需要求解其中的 θ

X θ = y X T X θ = X T y θ = ( X T X ) 1 X T y

  這裏需要說明一下, θ , y , X 分別代表的含義。在本文中,向量都是小寫字母表示,並且都是列向量,即 n 1 維。矩陣的維度 m n 表示有 m n 列。那麼上式中,我們假設 m = 4 n = 5 其中包括 x 0 ,給出一組示例數據

x 0 x 1 x 2 x 3 x 4 y 1 2104 5 1 45 460 1 1416 3 2 40 232 1 1534 3 2 30 315 1 852 2 1 36 178

  對應的 X 爲,每個 x ( i ) 表示一行數據的話:

X = [ 1 2104 5 1 45 1 1416 3 2 40 1 1534 3 2 30 1 852 2 1 36 ] = [ ( x ( 1 ) ) T ( x ( 2 ) ) T ( x ( 3 ) ) T ( x ( 4 ) ) T ]

  對應的 y 爲:

y = [ 460 232 315 178 ]

  對應的 θ 爲:

θ = [ θ 0 θ 1 θ 2 θ 3 ]

二、邏輯迴歸模型

1、邏輯迴歸模型

  上面的線性迴歸模型輸出結果爲連續值,如果我們面對的是一個分類模型,比如判斷是否爲垃圾郵件,或者其他的分類問題時,就不能直接使用線性迴歸模型了。

  邏輯迴歸模型是在線性迴歸模型上的一個演變,它通過一個邏輯函數可以將線性迴歸模型的輸出結果轉變爲0或1的離散輸出。

(1)邏輯函數

  即Logistic Function,也稱爲Sigmoid Function,如下所示,

g ( z ) = 1 1 + e z

  對應的函數圖形爲:

Sigmoid函數圖形

  從圖中可以看到,橫軸是連續取值,但是縱軸上的取值範圍被限制在0和1之間,Sigmoid函數可以將連續值轉變爲0或1的離散值。

  如果將上面的邏輯函數 g ( z ) 應用在線性迴歸模型的輸出函數 h θ ( x ) 上,就可以得到本節所講的邏輯迴歸模型。

(2)目標函數

h θ ( x ) = 1 1 + e θ T x

  當 y = 1 時, h θ ( x ) 的值,可以理解爲是對當前樣本 x ,在參數 θ 的情況下被預測爲1的概率。即

P ( y = 1 | x , θ ) = h θ ( x ) = 1 1 + e θ T x

(3)損失函數

  在前面的線性迴歸模型中,損失函數如下

J ( θ ) = 1 2 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) 2 = 1 m i = 1 m 1 2 ( h θ ( x ( i ) ) y ( i ) ) 2

  上式第二行中將 1 2 向後移動到求和項中,如果將求和項中整體定義爲

C o s t ( h θ ( x ) , y ) = 1 2 ( h θ ( x ( i ) ) y ( i ) ) 2

  那麼線性迴歸的損失函數可以寫成

J ( θ ) = 1 m i = 1 m C o s t ( h θ ( x ) , y ) C o s t ( h θ ( x ) , y ) = 1 2 ( h θ ( x ( i ) ) y ( i ) ) 2

  線性迴歸使用的是平方損失,如果我們直接將平方損失函數應用到邏輯迴歸模型中,最終得到的 J ( θ ) 可能如下圖所示,

non-convex

  邏輯迴歸模型中使用的是對數損失,定義如下

C o s t ( h θ ( x ) , y ) = { l o g ( h θ ( x ) ) y = 1 l o g ( 1 h θ ( x ) ) y = 0

  可以畫出對數損失函數圖形來看,當 y = 1 並且 h θ ( x ) = 1 時, C o s t = 0 ,當 y = 1 並且 h θ ( x ) 0 時, C o s t y = 0 時情況類似。

  最後,將邏輯迴歸的對數損失函數進行融合,

C o s t ( h θ ( x ) , y ) = y l o g ( h θ ( x ) ) ( 1 y ) l o g ( 1 h θ ( x ) )

  將 C o s t ( h θ ( x ) , y ) 代入 J ( Θ ) 可以得到邏輯迴歸完整的損失函數如下

J ( θ ) = 1 m i = 1 m [ y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 y ( i ) ) l o g ( 1 h θ ( x ( i ) ) ) ]

  邏輯迴歸中使用對數損失函數來求解參數,與採用極大似然估計求參數是一致的。

  以下爲對數損失函數和極大似然估計的分析過程:

  假設樣本服從伯努利分佈(0-1分佈),則有

P ( h θ ( x ) = y ) = { 1 p n = 0 p n = 1

  似然函數如下:
L ( θ ) = i = 1 m P ( y = 1 | x i , θ ) y i P ( y = 0 | x i , θ ) 1 y i

  對數似然函數爲:
l n L ( θ ) = i = 1 m [ y i l n ( P ( y = 1 | x i , θ ) + ( 1 y i ) l n P ( y = 0 | x i , θ ) ] = i = 1 m [ y i l n ( P ( y = 1 | x i , θ ) + ( 1 y i ) l n ( 1 P ( y = 0 | x i , θ ) ) ]

  根據對數損失函數的定義
C o s t ( y , p ( y | x ) = y l n p ( y | x ) ( 1 y ) l n ( 1 p ( y | x ) )

  那麼對於全體樣本,損失函數如下:
C o s t ( y , p ( y | x ) = i = 1 m [ y i l n p ( y i | x i ) ( 1 y i ) l n ( 1 p ( y i | x i ) ) ]

  可以看到,對數損失函數與上面的極大似然函數本質上是等價的。所以,邏輯迴歸直接採用對數損失函數,與採用極大似然估計是一致的。

(4)梯度下降

  接下來使用梯度下降方法求解邏輯迴歸的最佳參數,求解損失函數

J ( θ ) = 1 m i = 1 m [ y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 y ( i ) ) l o g ( 1 h θ ( x ( i ) ) ) ]

  的最優解過程如下,
(10) r e p e a t   u n t i l   c o n v e r g e n c e { θ j := θ j α θ J ( θ ) := θ j α 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x j ( i ) }

  以下爲求 θ j J ( θ ) 的過程,

以下爲了簡便,將 h θ ( x ) 記作 h ,那麼 h = 1 1 + e θ T x θ 求偏導數如下,

θ h = x e θ T x ( 1 + e θ T x ) 2 = x e θ T x 1 + e θ T x 1 1 + e θ T x = x ( 1 1 1 + e θ T x ) 1 1 + e θ T x = x ( 1 h ) h

C o s t ( h θ ( x ) , y ) = y l o g ( h θ ( x ) ) ( 1 y ) l o g ( 1 h θ ( x ) )
簡記爲
C o s t ( h , y ) = y l o g ( h ) ( 1 y ) l o g ( 1 h )

那麼
θ C o s t ( h , y ) = y 1 h θ h ( 1 y ) 1 1 h ( θ h ) = y 1 h θ h + ( 1 y ) 1 1 h θ h = y ( 1 h ) h ( 1 h ) θ h + h ( 1 y ) h ( 1 h ) θ h = y + y h + h y h h ( 1 h ) θ h = h y h ( 1 h ) θ h = h y h ( 1 h ) x h ( 1 h ) = x ( h y )

將上式代入 J ( θ ) = 1 m i = 1 m C o s t ( h θ ( x ) , y ) ,可得到
θ J ( θ ) = 1 m i = 1 m θ C o s t ( h θ ( x ) , y ) = 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x ( i )

那麼對於梯度下降,
θ j := θ j α θ J ( θ ) := θ j α 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x j ( i )

因爲 α 是一個常量,並且 1 m 對於一個給定的樣本也是一個常量,所以可以將 α m 直接寫成 α

三、正則化

1、過擬合

  正則化的目的是防止過擬合,當指標較多,並且訓練樣本較少時得到的模型可能會出現過擬合。過擬合從函數圖像上的理解就是,訓練得到的模型完全擬合給定樣本,可能出現對於訓練樣本,損失值爲0,而對於未在訓練樣本中出現過的樣本,誤差會很大。下圖示例了過擬合,

過擬合

2、線性迴歸模型正則化

  圖中藍色線條爲線性迴歸模型的過擬合情況,增加了 θ 3 x 3 θ 4 x 4 兩項後,曲線完全擬合給定樣本。而紅色曲線是訓練的比較好的情況。在這裏,我們如果想將 θ 3 x 3 θ 4 x 4 從模型中剔除,可以將損失函數進行一定改造,如下所示,

m i n θ 1 2 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) 2 + 1000 θ 3 2 + 1000 θ 4 2

  上面這個損失函數中,由於給了 θ 3 θ 4 兩個很大的係數,所以最終得到 θ 3 θ 4 接近於0才能使損失函數值儘可能小。

  正則化基本上就是這個過程,會爲除 θ 0 之外每個參數值增加一個類似的係數。增加了正則化後的線性迴歸模型損失函數如下,

J ( θ ) = 1 2 m [ i = 1 m ( h θ ( x ( i ) ) y ( i ) ) 2 + λ j = 1 n θ j 2 ]

3、欠擬合

  假如我們給 λ 設置一個很大的參數,可能會出現過擬合的情況,因爲這時候需要得到最小損失值,可能會將所有 θ 全部訓練爲0。可能最終得到的目標函數是 h θ ( x ) = θ 0 ,欠擬合的函數圖形如下所示,

欠擬合

4、線性迴歸模型梯度下降

  對正則化之後的損失函數進行梯度下降求解參數值的過程如下所示,

(11) r e p e a t   u n t i l   c o n v e r g e n c e { θ 0 := θ 0 α 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x 0 ( i ) θ j := θ j ( 1 α λ m ) α 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x j ( i ) }

  這裏更新 θ j 時乘以了一個係數 1 α λ m ,由於 α , λ , m 都是正數,所以該係數是一個大於零的分數,最終和之前不同的是在更新 θ 值時會逐漸縮小 θ 值。

5、邏輯迴歸模型正則化

  邏輯迴歸模型的正則化也是在損失函數最後增加正則項,如下所示,

J ( θ ) = 1 m i = 1 m [ y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 y ( i ) ) l o g ( 1 h θ ( x ( i ) ) ) ] + λ j = 1 n θ j 2

6、邏輯迴歸模型梯度下降

(12) r e p e a t   u n t i l   c o n v e r g e n c e { θ 0 := θ 0 α 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x 0 ( i ) θ j := θ j ( 1 α λ m ) α 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x j ( i ) }

7、L1正則

8、L2正則

四、神經網絡

1、神經網絡結構

  神經網絡模型是模擬生物神經元,神經網絡中每個節點可以理解成一個變量比如 x i ,不同層之間的連接線可以理解成參數比如 θ j 。神經網絡結構如下所示,

神經網絡模型

  上圖中,第一層中的 x 1 , x 2 , x 3 即前面迴歸模型中見到的樣本各指標值,第一層也被稱爲輸入層,最後一層的輸出就是我們前面介紹到的 h θ ( x ) 的輸出值,最後一層也被稱爲輸出層。並且在實現神經網絡模型時會爲除輸出層之外的每一層增加一個 x 0 或$a_0^{(2)}這麼一個偏置項。

  定義幾個概念:

  • a i ( j ) ,表示第 j 層的第 i 個節點
  • Θ ( j ) ,表示從第 j 層到第 j + 1 層的參數矩陣,圖中 Θ ( 1 ) 是一個 3 4 的矩陣,3表示下一層(即第2層)有3個節點,4表示本層(即第1層)有4個節點(包含 x 0 項)

      生物上的神經元之間傳遞的電信號,一般是高低電平,而非一個連續的值。所以在我們的神經網絡中一般會應用一個激活函數 g ( x ) ,以後未作特殊說明, g ( x ) 一般取Sigmoid函數。上圖中神經網絡結構對應的表達式如下

a 1 ( 2 ) = g ( Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 ) a 2 ( 2 ) = g ( Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 ) a 3 ( 2 ) = g ( Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 ) h Θ ( x ) = a 1 ( 3 ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + Θ 11 ( 2 ) a 1 ( 2 ) + Θ 12 ( 2 ) a 2 ( 2 ) + Θ 13 ( 2 ) a 3 ( 2 ) )

  需要注意的是神經網絡並不是如上面示例中只有一箇中間層,而是可以更多,並且每一層的激活函數 g ( x ) 也可以不相同。

2、神經網絡實現的邏輯功能

  這裏用簡單的神經網絡結構示例如何實現 X O R , X N O R , O R , A N D , O R 等邏輯操作。

(1)AND

  網絡結構如下所示

AND

  表達式爲

h Θ ( x ) = g ( 30 + 20 x 1 + 20 x 2 )

(2)OR

  網絡結構如下所示

OR

  表達式爲

h Θ ( x ) = g ( 10 + 20 x 1 + 20 x 2 )

(3)NOT

  網絡結構如下所示

NOT

  表達式爲

h Θ ( x ) = g ( 10 20 x 1 )

(4)XNOR

  網絡結構如下所示,要想實現 X N O R 功能,簡單的模型就不能實現了。下面同時使用了 A N D , O R , N O T 進行組合,並且構建多層網絡模型才得以實現。

XNOR

3、損失函數

  神經網絡的損失函數如下:

J(\Theta) = -\frac 1m \sum_{i=1}^m\sum_{k=1}^K[y_k^{(i)}log(h_\Theta(x^{(i)})_k) + (1-y_k^{(i)})log(1-(h_\Theta(x^{(i)})_k)] + \frac \lambda {2m}\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_l+1}(\Theta_{ji}^{(l)})^2\tag{1}\label{1}

  上式中, L 表示神經網絡的總層數, s l 表示第 l 層中神經元的個數(不包括偏置單元)。 h Θ ( x ) R K , h Θ ( x ) ) i = i t h   o u t p u t ,其中 K 表示第 K 個節點,那麼 y k ( i ) 表示對於樣本 i 的第 k 個輸出值。當分析的問題爲二分類問題時, k = 1 ,當分析的問題爲多分類問題時, k 爲對應的分類數。

4、BP算法(Backpropagation Algorithm)

  我們需要根據上一節中列舉的損失函數求出全部的 θ 值,得到 m i n Θ J ( Θ ) ,接下來用梯度下降求解的話,需要計算 Θ i j ( l ) J ( Θ )

  對於一個包含兩個隱含層的神經網絡結構,給定一組樣本 ( x , y ) ,可以依次得到每一層相關數據:

\begin{split}&a^{(1)}=x \\&z^{(2)}=\Theta^{(1)}a^{(1)} \\&a^{(2)}=g(z^{(2)}) \ (add a_0^{(2)})\\&z^{(3)}=\Theta^{(2)}a^{(2)}\\&a^{(3)}=g(z^{(3)})\ (add a_0^{(3)})\\&z^{(4)}=\Theta^{(3)}a^{(3)}\\&a^{(4)}=h_\Theta(x)=g(z^{(4)})\end{split}\tag{2}\label{2}

  根據公式 (1) ,對於二分類的單個樣本,損失函數如下

J(\Theta) = - [ylog(h_\Theta(x)) + (1-y)log(1-(h_\Theta(x))] + \lambda\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_l+1}(\Theta_{ji}^{(l)})^2 \tag{3}\label{3}

  以下爲該公式的推導過程

計算 Θ ( 3 ) 的梯度,結合公式 (2)

\frac {\partial J(\Theta)}{\partial \Theta^{(3)}}=\frac {\partial J(\Theta)}{\partial a^{(4)}}*\frac {\partial a^{(4)}}{\partial z^{(4)}} * \frac {\partial z^{(4)}}{\partial \Theta^{(3)}} \tag{4}\label{4}

如果將式 (4) 中等號右邊前兩項定義爲 δ ( 4 ) ,則有
\delta^{(4)}=\frac {\partial}{\partial z^{(4)}}J(\Theta)=\frac {\partial J(\Theta)}{\partial a^{(4)}}*\frac {\partial a^{(4)}}{\partial z^{(4)}}\tag{5}\label{5}

結合 (3) (5) 並且 a ( 4 ) = h Θ ( x ) = g ( z ( 4 ) ) 得到如下推導過程:
相關文章
相關標籤/搜索