Processing math: 100%

史丹佛大學機器學習(Machine Learning)上課筆記(二)

史丹佛大學 Logo
本篇為史丹佛大學機器學習(Machine Learning)課程 Lecture 2 的後半段筆記,其接續上半段的內容。

The Normal Equations

要找 J 的最小值除了 gradient descent 演算法之外,還有許多方式,這裡介紹另一個方法,使用這個方法直接使用 explict 的方式算出最小值,這樣可以不需要使用遞迴的方式。

在這個方法中,我們直接把 J 對每個 θj 做微分,然後將其設定為零,為了簡化代數的推導,我們先介紹一些微積分的矩陣表示法。


矩陣的微分

假設 f 是一個從 Rm×n 映射到 R(也就是從 m×n 的矩陣映射到實數)的函數,則 f 對矩陣 A 的微分定義為:
Af(A)=(fA11fA1nfAm1fAmn)

所以事實上這個 gradient Af(A) 本身也是一個 m×n 的矩陣,其中第 (i, j) 個元素為 f/Aij,例如假設
A=(A11A12A21A22)

f:R2×2R 定義為
f(A)=32A11+5A212+A21A22

其中 Aij 代表矩陣 A 中的第 (i, j) 個元素。則我們可以得到
Af(A)=(3210A12A22A21)


矩陣的 trace

接著我們介紹矩陣的 trace 運算子(表示成「tr」),對於一個 n×n 的方陣 A,它的 trace 定義為對角線上元素的總和
tr(A)=ni=1Aii

如果 a 是一個實數(也就是 1×1 的矩陣),則 tr(a)=a
trace 運算子有一些特性,例如如果有有兩個方陣 AB,則我們可以推導出 tr(AB)=tr(BA),進而得到
tr(ABC)=tr(CAB)=tr(BCA)tr(ABCD)=tr(DABC)=tr(CDAB)=tr(BCDA)

另外還有一些簡單的性質也可以很容易推導出來,如果 AB 為方陣,而 a 為實數,則
tr(A)=tr(AT)tr(A+B)=tr(A)+tr(B)tr(aA)=atr(A)


經過一推推導後,可以得到下面這些矩陣微分的等式
Atr(AB)=BTATf(A)=(Af(A))TAtr(ABATC)=CAB+CTABTA|A|=|A|(A1)T

最後的第 (4) 條方程式只適用於 A 是 non-singular 方陣的情況,其中 |A| 是代表 A 矩陣的行列式(determinant)。

假設我們有一個固定的矩陣 BRn×m,我們可以定義一個函數 f:Rm×nR
f(A)=tr(AB)

這樣的定義是有意義的,因為對所有的 ARm×nAB 就會是一個方陣,就樣就可以適用於 trace 運算子,也就是把 Rm×n 映射到 R,接著我們對其進行微分,就可以得到 Af(A) 這個 m×n 的矩陣,上面第 (1) 條等式告訴我們這個矩陣的第 (i, j) 個元素會等於 BT 的第 (i, j) 個元素,也就是 Bji

詳細的證明這裡就跳過了,若要找詳細的證明在一般線性代數的書中應該都會有。

Least Squares

接著我們可以開始使用矩陣的表示法來推導 θJ(θ) 達到最小時的解析解,首先我們把 J 改用矩陣的形式表示。若給定一組 training set,我們定義它的 design matrix X 為一個 m×n 的矩陣(如果將截距項也算進去,就是 m×(n+1) 的矩陣):
X=((x(1))T(x(2))T(x(m))T)

其中每一個 (x(i))T 都是一個列向量(row vector),代表第 i 筆 training example。而 y 定義為一個 m 維的向量,其中包含所有 training set 的目標變數:
y=(y(1)y(2)y(m))

因為 hθ(x(i))=(x(i))Tθ,所以可以得到
Xθy=((x(1))Tθ(x(m))Tθ)(y(1)y(m))=(hθ(x(1))y(1)hθ(x(m))y(m))

因為對任何的 z 我們可以得到 zTz=iz2i,因此
12(Xθy)T(Xθy)=12mi=1(hθ(x(i))y(i))2=J(θ)

最後配合前面矩陣微分公式的第 (2) 條與第 (3) 條,我們可以得到
ATtr(ABATC)=BTATCT+BATC

因此
θJ(θ)=θ12(Xθy)T(Xθy)=12θ(θTXTXθθTXTyyTXθ+yTy)=12θtr(θTXTXθθTXTyyTXθ+yTy)=12θ(tr(θTXTXθ)1tr(yTXθ)+yTy)=12(XTXθ+XTXθ1XTy)=XTXθXTy

在第三行我們使用實數的 trace 就是他自己本身這個性質。第四行是使用 tr(A)=tr(AT) 這個性質。第五行則是令 AT=θB=BT=XTXC=I 然後使用第 (5) 條與第 (1) 條等式推導得到的(其中因為 yTyθ 沒有關係,所以微分之後就不見了)。

因為我們要要求 J 的極小值,所以令其微分等於零,即可得到這個 normal equation:
XTXθ=XTy

所以就可以得到 J 的極小值就發生在
θ=(XTX)1XTy

的時候。

這裡如果 XTX 是一個 singular 矩陣的話(也是說某些資料可能有重複的問題),那它的反矩陣 (XTX)1 就會不存在,這時候可以使用 pseudo inverse 的方式處理。

繼續閱讀:史丹佛大學機器學習(Machine Learning)上課筆記(三)
本站已經搬家了,欲查看最新的文章,請至 G. T. Wang 新網站

沒有留言:

張貼留言