Machine Learning學習日記 — Coursera篇 (Week 5.1):Cost Function, BackPropagation algorithm, BackPropagation Intuition

Cost Function and BackPropagation



大綱

  1. Cost Function
  2. BackPropagation Algorithm
  3. BackPropagation Intuition

1. Cost Function

由於現在所做的是classification的問題

因此Cost Function將會沿襲logistic regression。

但會作一些小更動。

這邊要注意Neural Network的Cost Function通常會忽略bias unit,意味著不會有x0,a0,θ0...

這個 Cost Function可將其視為兩個部分
1. 前項
前項跟原本logistic regression相比的話,會發現多了個Σ跟k的符號,這是因為這裏Neural Network的hypothesis是multiclass的假設,會輸出多個結果。
(原logistic regression的cost function)
因此要求預估誤差的話,就需要針對每個hypothesis的輸出單位k跟正確答案y的每個輸出單位k(綠色箭頭所指)
你可能會想知道:如果今天不是multiclass而是binary的話,還需要加上那些Σ跟k嗎?
我認為是不需要的。但是下項的regularization還是需要。
2. regularization的項目
regularization就跟前面提到的概念是一樣的:我們要加總所有θ的平方項。
這邊表示方式稍微複雜了點,但是其所做的事情跟上述所提如出一徹,最外面的Σ是為了要從layer 1一直算到layer n,第二個Σ跟第三個 layer是為了求兩個 layer之間的theta值(請將其想像成是連接不同單位、unit的線)
(θji代表後一層輸入單位j與前一層輸出單位i的處理權重、連接線),由於通常會忽略bias unit,也就是我們通常不會去把θj0:從某個layer的bias uni連出去的線列入考量,因此 j從1開始。
而Neural Netwok一開始就沒有輸出至bias unit的權重(線),因此 i也不會等於0,而是從1開始。

隨堂練習


Ans:

請參考Advanced Optimization裡的cost Function函數內容

2. BackPropagation Algorithm

For trying to minimize the cost function above

跟之前第一週、第二週提到的Gradient Descent原理一樣,我們要先求出各個參數的偏導項(partial derivative),之後再用迭代地方式扣去這些偏導項。

簡單的說,這一章節的目標就是求出每個參數θ的偏導項。

而要求出偏導項就是針對各個θ來做偏微分啦!Andrew說因為推導過程過於複雜,因此我們先知道結論就好。

θ的偏導項:

Δ(大寫delta)是用來求出偏導向的誤差和,在本節最後面會提到如何計算

而Δ需要由δ(小寫delta)跟a的乘積來求得。

這個函式乍看之下很複雜,實際不然。
要將δ(小寫delta)跟a分開來看:
(1) a是由 forward propagation求得的activation(見前面的Model Representation),就是前面在計算cost function時會得到的各個unit的數值
(2) δ則需由以下的函式來計算,δ可以將之理解為各個節點上的數值誤差
除了最後一層(output layer,這邊是4)外,其他層的運算函式都一樣
而第一層(input layer)無須計算,因為用來輸入的數值不存在誤差的現象。

說了那麼多,那麼實際上要怎麼算出偏導項呢?

一開始我們有m筆的輸入數值x跟正確答案y,並初始化Δ數值為0
先將第一組的輸入數值x進行運算:
(1) 第一層的a設為 x
(2) 開始算第二、三、四...一直到輸出層的a
(3) 計算δ,從輸出層...一路算到第二層的δ(第一層不用算)
(4) 將a跟δ相乘的結果累加至Δ
再將第二組、第三組、第四組...到第m組的輸入數值x重複進行上述計算
而Δ也會不斷的增加。
最後再根據條件來求出各個參數θ的偏導項

隨堂練習

sequence:順序 / operations:運算 / followed by:接下來

Ans:

先做第一組的forward propagation,之後利用backward propagation累加至Δ
再做第二組的forward propagation,之後利用backward propagation累加至Δ

3. BackPropagation Intuition

For those who can't figure out WTF is going on above.

首先,先來弄懂到底forward propagation的運作流程吧

1. 我們在第一層輸入了x向量

2. 在經過計算後(第一層x與第一層θ的乘積)得到第二層的z

3. 第二層的z再透過sigmoid函數運算後得到第二層的a

4. 重複上述動作直到求得輸出層的a

其實每一個節點、unit的數值都是由上一層的unit透過不同的比重後重新組成得出的

那麼back propagation是在做什麼呢?

1.首先,我們直接計算最後一層的輸出與正確答案間的誤差δ

2. 然後透過不同的第三層θ將最後一層的δ分配給第三層的δ

3. 再分配到第二層的δ

4. 因為第一層不存在誤差,因此不用計算。

bias unit(+1)無需推導其誤差
小結就是,下一層的誤差δ可以藉由上一層的θ來將之分配給上一層的誤差δ
以生活上的例子來舉例:
小明很醜,有一天小明決定去思考為甚麼他這麼醜,他這麼醜又是誰的錯
他發現他爸跟他媽可能要各付一半的責任,因為他爸媽都長得差不多醜
好,要追究責任要往上追,那爸爸為什麼這麼醜呢?
他爺爺比他奶奶長得再醜一點,因此他爺爺對他爸爸的醜可能要付70%的責任,他奶奶要付30%的責任
那媽媽為什麼這麼醜呢?
他外公超帥,宛如潘安再世,因此他外公對他媽媽的醜完全不用負起責任,他外婆由此可知要付100%的責任。
因此小明得到一個結論:
他的醜,他爸跟他媽各需負責50%
他爺爺需要負責他爸的50%中的70%,也就是爺爺對小明的醜要負責35%,他奶奶要負責15%
他外婆需要負責他媽的50%中的100%,也就是外婆對小明的醜要負責50%
所以小明的醜 = 爺爺的醜(35%)+奶奶的醜(15%)+外婆的醜(50%)
Back propagation,在我的理解當中就是一個不斷的向源頭找出戰犯的演算法xD

隨堂練習


Ans:

δ1³是由δ1²跟δ2²所構成的,而目前只知道θ11為0卻不知道θ12是否為0,因此無法判斷δ2²是否可以對δ1³造成影響,故資訊不足無法判定