code

2017年10月21日 星期六

Deep Learning 筆記2 - Logistic Regression

Logistic Regression for Binary Classification

LR是用來做二元分類的,例如判斷一張影像中的動物是貓或不是貓。假設有一張影像64x64大小,則以RGB 3個channel來說的話,總共有64x64x3 = 12288個數值,如果把這12288個數值當成feature vector的話(1D),定義 feature vector維度 = n = nx = 12288 :



Notation

ML的課很容易被數學符號搞混,先說明以下符號是本課程使用:
首先對classification來說,input x一定是一個nx維度的vector,而output y不是1就是0:


training sample 會是一個pair (x, y),每個data set總共有m個training samples

如果把所有m個training samples x(1) x(2) 依照column順序放入matrix X的話,會形成一個 m by nx matrix:


記住為了之後programming方便起見,不要把xi 弄成row vector放入X。
所以所有的training samples中的label y(1) y(2) ... 也可以變成一個1 by m的matrix Y:


Logistic Regression

這個之前的筆記都有了,簡單來說,就是一個input vector x,LR希望能吐出一個對class的預測y hat,但是是一個機率:


logistic regression簡單來說就是linear regression經過sigmoid function mapping之後,會落在[0,1]區間內,符合機率定義:


sigmoid function的圖如上,所以可以知道z在趨近無限大和無限小時候,會趨近於1和0:




這門課Andrew Ng不使用把bias b編寫成W0=1的notation,因為他說在programming的時候,最方便還是把bias和W分開來最好。


Logistic Regression Loss (Error) Function L

要train出w vector和bias b,我們需要知道LR對training example的預測y hat成效如何?
定義loss (error) function為單一sample x的預測值y hat和label值y 的預測誤差

一個可能的error function為squared difference:


不過由於之後要用gradient descent的演算法來找出cost function J的global minimum,而error function 使用squared difference的話會造成J形成曲折的幾何型態,會有多個local minimums,所以在LR中不予採用。

LR採用的error function如下:


採用上面這個function算是不難理解其效用,因為當:

label y = 1,則後項為零,前項要最小化的話,則log(y hat)必須要最大化,意即y hat要最大化,而y hat最大化為1,因為sigmoid function的關係,所以這邊的直覺就是當y = 1,我們希望y hat也趨近於1。

同理label y = 0的時候,上面的error function希望最小化-log(1 - y_hat),這會簡化成要最小化y hat,也就是希望y hat趨近於0。


Logistic Regression Cost Function J

Cost function定義為整個training set要找出最佳weight vector w和bias b所需要minimize的 function,合理的定義就是整個training set的平均loss:



LR 可以視為很簡單的一種NN。

沒有留言:

張貼留言