林軒田機器學習基石筆記 - 第九講、第十講

  • 本文為一系列課程之筆記,建議從" 機器學習基石筆記-1 "開始閱讀 >

  • 本文討論內容請參考: 機器學習基石第九講 : Linear Regression 機器學習基石第十講 : Logistic Regression

  • 本篇所有圖片部分由筆者製作,其它均為機器學習基石課程內容講義


在開始接下來的課程前,我想先緩一緩腳步。

從前面的課程一路到現在,我們學到了這麼多的想法、概念、工具,究竟這些東西的關聯性是什麼 ? 它們跟機器學習的關係又是什麼 ?

當我們手中有一堆資料 ( D ),我們會先問自己,我們想要從這些資料裡面知道什麼 ? 預測什麼 ? ( Classification or Regression ) 在這樣的問題下,我們最終會希望有一個模型 ( g ) 可以盡量準確地預測出我們想要知道的事情。( gf )

想要得到這樣的模型,我們就得從許多可能性中 ( h ),找出跟我們手中資料真實狀況誤差最小的 ( minEin(h)=minerr(y,y^) ) 來作為我們的模型。而這樣找出最小值的過程,就是我們所謂演算法 ( algorithm )。

PS: 當我們決定了想要什麼樣子型態的模型 ( PLA , Pocket , Linear regression , Logistic regression...) ,那麼找出最小值的演算法也同時被確定下來。

當我們理清楚其中的關係後,很清楚地可以知道,所有演算法就是針對某一個error measure 尋找最小值的方法,也就是說,當我們要決定模型的型態,也要先決定出來我們要用什麼樣子的 error measure 。( 回想一下,當我們決定了 error measure 後,機器學習的可行性便也可以確定1)

Linear Regression

( 紅線部分我們稱為 剩餘residuals )

Linear regression : 找出 line / hyperplane 有最小的 residuals

Linear Regression Algorithm

在線性回歸中,最常用的 error measure 就是 square error

err(y,y^)=(yy^)2 Ein(h)=1Nn=1N(h(Xn)yn)2 and Eout(h)=E(X,y)P(WTXy)2

Step 1 : 先將資料整理成矩陣型態,找出以每一筆資料為列向量的 X 矩陣及 Y 矩陣

Step 2 : 計算出 pseudo-inverse23 X={(XTX)1XT,if XTX is invertibledefined by other way,if XTX is'nt invertible

Step 3 : 最佳解 Wlin=XY


Proof

  1. Existence:

Ein(W)=1Nn=1N(WTXnyn)2=1Nn=1N(XnTWyn)2

=1NX1TWy1X2TWy2XNTWyN2=1N[X1TX2TXNT]W[y1y2yN]2=1NXWY2

Ein(W) is a conti , diff ,convex function

Wlin s.t. Ein(Wlin)=[Einw0(Wlin)Einw1(Wlin)Einwd(Wlin)]=[000]

Ein(W)=1NXWY2=1N(WTXTXW2WTXTY+YTY)

=let1N(WTAW2WTB+C)

Ein(W)=1N(2AW2B)=2N(XTXWXTY)=let0

W=Wlin=XY where X={(XTX)1XT,if XTX is invertibledefined by other way,if XTX is'nt invertible

Linear Regression 的可行性

由上述我們可以找出有最小誤差的預測模型 Y^=XWlin=X(XTX)1XTY=letHY

我們可以把這個 H 看作是一種線性變換,將 Y 轉換到 Y^ ,再更白話一點說,H 就是 YY^ 的一個線性關係。而這樣的一個關係它有一些特別的特性 : 1. H is symmetric 2. Hk=H 3. (IH)k=IH 4. tr(H)=d+1

我們可以利用這些特性推導出 Ein=EDi.i.dP[Ein(Wlin w.r.t D)]=noise level(1d+1N)4 Eout=noise level(1+d+1N) ( 此式在僅用於Linear Regression,因此證明僅放在註釋中 )

這兩式指出,只要是從 P 這個分佈出來的,且尺寸為 N ,那麼 EinEout 的平均都會跟 Noise 的平均有上述關係。

所以我們可以得出下圖 :

NEinEoutσ2

Eout 會被限制住

Linear Regression 是可行的 !

Linear Regression for Binary Classification

err0/1=([[sign(WTX)yn]])errsqr=(WTXyn)2

 classification Eout classification Ein+Ω(N,H,δ) regression Ein+Ω(N,H,δ)

Linear regression 的誤差上界的確比 classification 的誤差上界來的大,但是其為解析解,非常容易可以求出解,所以用一些準確度來換得效率也是一個可以接受的選項,誘惑者可先用regression求出解析解後,再拿這個解作為初始值放入PLA去求得更好的解,這樣也可以避免PLA花太多時間再做迭代。

Logistic Regression

在現實生活中,我們有時候會想知道的事情不是單純的、絕對的、硬性的是非問題 ( 病人是否活著? ),或許我們會希望能夠有比較 soft 的分類 ( 病人活著的機率? ),或許,我們可以把這樣的 soft binary classification 視為是帶有 Noise 的 classification ( 機器學習基石筆記-5 內談到的 "翻轉"機率 flipping noise level )。

Xi.i.dP , Yi.i.dP(YX)

{Binary classification f(X)=Sign(P(+1X)12){+1,1}Soft binary classification f(X)=P(+1X)[0,1]

上圖白話翻譯就是 : 對於每一個特徵,我們一樣可以給予不同的權重,計算出一個分數,再將這分數經由一個 連續(conti) , 可微(diff) , 單調(monotonic) θ 函數轉換成機率 ( θ:R[0,1]),這樣的 θ 函數最常用的是 Sigmoid function=θ(s)=11+es

Logistic Regression Algorithm

這樣機率型態的 error measure 我們使用 cross-entropy ( 交叉熵 ) error

Ein(W)=crossentropy=1Nn=1Nln(1+eynWTXn)5

挑選一個初始值 W0 Step 1 : 計算當下 Wt 的梯度 Ein(Wt)=1Nn=1Nθ(ynWTX)(ynXn)

Step 2 : 進行權重迭代更新 Wt+1=WtηEin(Wt)

停止條件 : (1) Ein(Wt+1)=0 (2) 迭代次數夠多


Proof

我們要找出 min(crossentropy error)=min(1Nn=1Nln(1+e(ynWTX)) 以求出 g

Ein(W)=let0

Einwi(W)=1Nln(A)AABBwi , where A=1+e(ynWTX) , B=ynWTX =1N1AeB(ynxni) =1NeB1+eB(ynxni) =1Nθ(B)(ynxni) Ein(W)=1Nθ(ynWTX)(ynxni)=let0

在這裡有兩種可能性 :

Case 1 : θ(ynWTX)=0 , WynWTX+D is linear separable ( i , yiWTX 同號 )

Case 2 : 1Nθ(ynWTX)(ynxni)=0 非線性方程求解困難不可行

這邊我們可以發現想要找到類似 Linear Regression 的解析解會非常窒礙難行,所以我們要利用類似PLA的方式做迭代優化 :

Wt+1=Wt+ην

Gradient Descent 梯度下降6

How to choose η & ν ?

Assume ν=1 and η>0 is small enough

Ein(Wt+1)=Ein(Wt+ην)Ein(Wt+1)+ηνTEin(Wt)

( η : 大小 , ν : 方向 , Ein(Wt):)

方向 ν :

最好的方向是 Ein(Wt)ν=1

ν=Ein(Wt)Ein(Wt)

大小 η :

η 太小,迭代次數會很多且容易落在相對極小值 ( 而非絕對最小值 ) 若 η 太大,迭代結果震盪大,不夠穩定 因此最好的方式是 η 隨著每一次迭代做調整

ηEin(Wt)η=ηEin(Wt)

PS:η 隨著迭代不斷更動,但更動"固定"比例為 η

綜合上述 :

Wt+1Wt+ηνWt+1Wt+ηEin(Wt)Ein(Wt)Wt+1WtηEin(Wt)

註釋

HY=Y^H transform Y to Y^ YY^=(IH)Y(IH) transform Y to YY^ Suppose that f(X)Y^=XWlin (IH) transform Noise to YY^ ( Y=f(X)+Noise ) 3. Ein(Wlin)=1NYY^2=1N(IH)Noise2=1N(N(d+1))Noise2 ( IH2=tr(IH)=tr(I)tr(H)=N(d+1) ) Ein=EDi.i.dP[Ein(Wlin w.r.t D)]=noise level(1d+1N) 同理可證 : Eout=noise level(1+d+1N)

g=argmaxh(likelyhood(h)) g=argmaxW(n=1Nθ(ynWTX)) g=argmaxW(lnn=1Nθ(ynWTX)) g=argminW(1Nn=1Nlnθ(ynWTX)) =argminW(1Nn=1Nln(1+e(ynWTX))1) =argminW(1Nn=1Nln(1+e(ynWTX)))crossentropy error


  1. 可參閱 機器學習基石筆記-4↩︎

  2. 擬反矩陣pseudo-inverse 又稱廣義反矩陣 ACm×n , !A s.t. :
    1.AAA=A 2.AAA=A 3.(AA)T=AA 4.(AA)T=AA↩︎

  3. 廣義反矩陣在數學上的應用之一便是用來求出最小平方法之解 Assume minAXY2 , then X=AY+(IAA)w , where w is arbitrary vector↩︎

  4. 此證明為簡易證明,雖不夠嚴謹,但仍可有不錯的解釋力 Proof 1. Ein(Wlin)=1NYY^2=1NYXXY2=1N(IXX)Y2=1N(IH)Y2↩︎

  5. Cross-Entropy f(X)=P(+1X)P(YX)={f(X)y=+11f(X)y=1 n=1NP(Xn)P(ynXn) yn=+1P(Xn)f(Xn)ym=1P(Xm)(1f(Xm)) ---(1) 我們希望我們的預測 h 可以有 f 的表現 yn=+1P(Xn)h(Xn)ym=1P(Xm)(1h(Xm)) --- (2) * 若 hf,則上述(1)(2)兩式理應接近 且 (1)式應該會非常接近1 * 我們將(2)式定義成一個函數 稱為 likelyhood(h),則我們想要的 g=argmaxh(likelyhood(h)) likelyhood(h) =yn=+1P(Xn)h(Xn)ym=1P(Xm)(1h(Xm)) =yn=+1P(Xn)h(Xn)ym=1P(Xm)(h(Xm)) (h(X)=θ(WTX) and 1θ(s)=θ(s)) n=1Nh(ynXn)=n=1Nθ(ynWTX)↩︎

  6. 有關於梯度下降法的更詳細討論可以參閱 Gradient descent 梯度下降 一文↩︎