ng-深度學習-課程筆記-2: 神經網絡中的邏輯回歸(Week2)


1 二分類( Binary Classification )

邏輯回歸是一個二分類算法。下面是一個二分類的例子,輸入一張圖片,判斷是不是貓。

輸入x是64*64*3的像素矩陣,n或者nx代表特征x的數量,y代表標簽0/1,m代表訓練集的樣本總數。

本門課中:X代表所有的輸入x,x按列排列,每個x是一個列向量,X的shape是( n, m )。

同理Y也按列排序,shape為( 1, m )。

 

2 邏輯回歸( Logistic Regression )

給定一個輸入x ( 比如圖像),你想得到一個$ \;\hat{y}\; $ ,這個$ \;\hat{y}\; $為給定x的情況下y為1的概率,正如上一節的例子中圖像為貓的概率。

參數w和x的維度相同,參數b是一個實數,所以給出輸入和這些參數,如果你做$ w^{T}+b $,這往往用在線性回歸模型。

這里你想要輸出一個概率,所以我們加上一個sigmoid函數,它可以把所有實數壓縮在0到1之間。

這里讓$ z =  w^{T}+b $,有$ \;\hat{y}\; = \sigma (z) $,z無窮大的時候概率約等於1,z無窮小的時候概率約等於0。

所以我們要實現的就是找一組參數w和b使得$ \;\hat{y}\; $能夠做出好的預測(預測y等於1的概率)。

有另一種寫法,如下圖右上角所示,把b變成w0,然后x0為1,這樣w和x就多了一維,這里用θ來表示n+1維的w。注意一下本門課不這么用。

 

3 代價函數( Cost Function )

ps: 約定用上標表示訓練集數據的編號,用下標表示特征編號。

代價函數表示模型預測結果和真實結果的差距度量,代價函數是所有樣本的損失函數加起來。

損失函數( loss function)代表的是單個樣本的損失,loss函數用L( loss )表示,通常均方損失( mean square error )用於線性回歸。

在邏輯回歸中我們不用均方損失,如果使用均方損失,損失函數是非凸的,在之后的梯度下降時會得到多個局部最小( local minimum )。

為了使loss為凸函數(利於優化),我們使用如圖所示loss(下面那個L,帶log的)。然后講講這個loss的合理性(這里沒有按圖中的解釋)。

y等於1時候,對於該loss函數,當$ \;\hat{y}\; $越接近1時,loss越接近0,損失越小。

y等於0的時候,對於該loss函數,$ \;\hat{y}\; $越接近0時,loss越接近0,損失越小。

我們就是要讓loss越小越好,所以對loss做梯度下降找最小值,恰恰對應了我們讓$ \hat{y} $接近y的這個過程。

上面給的L是單個訓練樣本的損失函數,最后一行我們給出了整個訓練集的代價函數J,就是把這些所有數據的損失累加起來。

所以我們要做的就是找到W和B,使得損失函數J最小。這里用大寫W和B是因為考慮所有的數據,正如X和Y對應x和y一樣。

 

4 梯度下降( gradient descent )

我們用梯度下降來找到w和b,使得代價函數J最小。下圖給出了J(w, b)的曲線圖,是一個凸函數。實際上w可以是高維向量,為了畫圖理解,這里w和b都用的實數。

當我們初始化w和b時,可能處在曲線上的某一個點,梯度下降要做的就是逐漸往谷底方向走一小步接近最小值,一般會迭代一定次數或者cost小於某個值的時候停止。

 

看看具體的計算公式,我們先只看w,不考慮b。

J(w)曲線如圖所示,梯度下降就是一直重復$w = w - \alpha * J^{\;'} (w)$的過程。

α為學習率,控制着下降的步伐有多大,$J^{\;'} (w)$是導數( derivative )。

如圖中的例子,假如從右邊的初始點出發,$J^{\;'} (w)$為正,導數在這里也就是切線的斜率,我們讓$w = w - \alpha * J^{\;'} (w)$就是讓w向左減小,就是讓初始點朝着最小點靠近。

假設從左邊的初始點出發,$J^{\;'} (w)$為負,我們讓$w = w - \alpha * J^{\;'} (w)$就是讓w向右增加,也是讓初始點朝着最小點靠近。

當把b考慮進來,J是含有兩個變量的函數,原來的導數就變成了偏導數( partial derivative ),求導符號有所變化。

 

5 計算圖的導數計算( derivatives with a computation graph )

當一個函數含有多個變量且內嵌了很多個函數時,求導比較麻煩,變量又多,又要用好多次鏈式法則,比如在利用bp算法訓練神經網絡的時候。

可以使用計算圖來理解求導的過程,先列出前向計算公式,然后根據公式反向求導,這樣去看思路就會比較清晰。

 

 

6 邏輯回歸中的梯度下降( Logistic Regression Gradient Descent )

為了便於理解,ng使用計算圖來講解邏輯回歸中的梯度下降(雖然在邏輯回歸中沒什么必要用計算圖)。

這里假設有兩個特征,第一張圖用計算圖展示了單個樣本的求導過程,第二張圖把所有樣本的加起來做求導和梯度下降。

這里給出的算法用了兩個for循環,實際上我們會利用向量化代替for循環來加速運算,向量化的內容見下一節課。

 

 

7 logistic代價函數的解釋( Explanation of logistic regression cost function)

線性回歸中的平方損失是很天然的想法就想到用這種損失來度量預測和真實之間的差距。

邏輯回歸中的代價函數給人感覺很突然,怎么突然就有這么個東西。

雖然它符合了我們優化的思想(在最小化這個代價函數的過程對應了我們讓預測值逼近真實值的過程),但是還是不知道它是怎么產生的。

這里ng給出了簡潔的證明,解釋了我們的代價函數為什么是這種形式。

 

7.1 單個樣本的損失函數解釋

$ \hat{y} $是給定x時y等於1的概率,$ \hat{y}  = P(\;y = 1\;|\;x\;) $,這是我們給出的預測概率。

那么當y的真實值為1時,在給定x下預測y正確的概率為$ \hat{y} $。

當y的真實值為0時,在給定x下預測y正確的概率為1 - $ \hat{y} $,也就是預測為0的概率。

$ If \quad y=1, \quad P(\;y\;|\;x\;) = \hat{y} $

$ If \quad y=0, \quad P(\;y\;|\;x\;) = 1 - \hat{y} $

合並后得到 $ P(\;y\;|\;x\;) = \hat{y}\;^{y}\;*(1-\hat{y})^{(1-y)} $

我們要使給定x下預測y正確的概率P ( y | x ) 最大,也就是使log P( y | x )最大,展開后得到的是:

$ log\;[\;\hat{y}\;^{y}\;*(1-\hat{y})^{(1-y)}\;]=y\;log\;\hat{y}\; + (1-y)\;log\;(1-\hat{y}) $

這個東西就是負的損失函數 $ - L( \hat{y}, y) $,損失函數之前講過。

所以我們最大化這個$ log P(\;y\;|\;x\;) $,就是最小化損失函數,這樣就和前面講的損失函數串起來了。

事實上這個損失函數叫做交叉熵cross-entropy,是從信息論中引進來的。

關於交叉熵的相關知識我總結在另一篇博文:http://www.cnblogs.com/liaohuiqiang/p/7673681.html

 

以下是推導過程:

預測$ \quad\hat{y} = \sigma(w^{T}+b), \quad where \quad \sigma(z)= \frac{1}{1+e^{-z}} $

有 $ \hat{y} = P(\;y\;=1\;|\;x\;) $

可以推出:

  $ \left.\begin{matrix}If \quad y=1, \quad P(\;y\;|\;x\;) = \hat{y} &  & \\If \quad y=0, \quad P(\;y\;|\;x\;) = 1 - \hat{y}&  & \end{matrix}\right\} \Rightarrow P(\;y\;|\;x\;) = \hat{y}\;^{y}\;*(1-\hat{y})^{(1-y)} $

最大化預測概率:

  $max\left\{\;P(y|x)\;\right\} \Leftrightarrow max\left\{\;log\;P(y|x)\;\right\}$ 

  $log\;P(\;y\;|\;x\;) = log\;[\;\hat{y}\;^{y}\;*(1-\hat{y})^{(1-y)}\;]$

  $=y\;log\;\hat{y}\; + (1-y)\;log\;(1-\hat{y})$

  $=- L( \hat{y}, y) $

顯然有:$max\left\{\;log\;P(\;y\;|\;x\;)\;\right\}\Leftrightarrow min\left\{\;L( \hat{y}, y) \;\right\} $

 

7.2 m個樣本的代價函數解釋

先假設訓練樣本中所有的樣本服從同一分布且相互獨立,那么整個訓練集預測正確的概率P等於每個樣本預測正確的概率的乘積。

有$ P = \prod _{i=1}^{m} P ( \;y^i\; | \;x^i\; ) $,根據極大似然估計法,你想要訓練的模型能使得預測該分布下的所有數據的准確率最大,就是要使所有觀測樣本(也就是訓練樣本)預測正確的概率的乘積最大。

所以我們就是要最大化這個P,也就是最大化$ log P $,因為log是單調遞增的。

$ log\;P = \sum_{i=1}^{m} log\;P ( \;y^i\; | \;x^i\; ) $。

而我們在上一小節已經得到$ log\;P ( \;y^i\; | \;x^i\; ) = - L( \hat{y}, y) $,所以我們只要累加這個負的損失函數,使這個和最大。

累加(負的損失函數)得到的和,也就是(累加損失函數的和)的負,也就對應了代價函數的負值,因為代價函數就是多個樣本的損失函數的和,還需要除以m求平均。

要讓代價函數的負值最大,也就是讓代價函數J( w, b) 最小,這正對應了我們前面的優化目的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM