Machine Learning學習日記 — Coursera篇 (Week 5.3):Random Initialization, Putting It Together

Pandora123
5 min readJun 7, 2016

--

BackPropagation in Practice(下)

大綱

  1. Random Initialization
  2. Putting It Together

1. Random Initialization

To break up the symmetry problem(all the feature seem same)

事情總有個開端,這意味著在我們還不知道θ是什麼時,我們必須自行設定初始的θ進入函式然後開始第一次的運算:

那一開始的θ都設定為0會是個好選擇嗎?

這會發生一個嚴重的問題:同一層的unit,可能其activation值與δ(小寫delta)的值都會是一樣的:來源的輸入數值(x)通過比例重分配後重新產生下一層各個unit的不同activation值,而同樣的比例代表產生的activation值也會是一樣的,也因此誤差也會是一樣的....

這代表我們實際再運用的θ只有一個,其他θ、feature全部都是多餘的(redundant),這樣會嚴重影想模型的預測成效

那要怎麼解決呢?

我們透過隨機產生數值的方式來破除這種對稱性(symmetry)的問題,並將數值限制在我們制定的+-ε(這裏的ε跟前一篇文章的ε完全沒有關係,請將其視為一個變數)

隨堂練習

Procedure:流程 / chose:被選擇

Ans:

第一行的確隨機地產生了一個數值

但是卻將其指定給所有的θ,這意味著比例重分配根本就不會生效

設定為0不好並不是因為它是0,而是因為它讓所有的θ看起來都是一樣的

2. Putting It Together

To put all the concepts together

剛開始所提到的Neural Network的模型:

最左邊的layer為input layer,最右邊的layer為output layer,中間的layer一律通稱為hidden layer(橘色)

unit 指的是每個layer裡的圓圈數量,實際運算時通常會多出一個bias unit

預測的表達方式:

會以向量的方式,將所有對應的預測結果呈現出來,並將預測的結果標示為1,其他為0

開始訓練模型:

1.先產生隨機的θ變數,以避免參數冗餘化(本文第一節)

2.實作hypothesis的模型

3.實作cost function:J(θ)的模型

4.實作BackPropagation來推回偏導項

運行流程會像是:先透過forward propagation與hypothesis得出預測結果,算出J(θ),利用back propagation得出δ以求得偏導項

上述的流程為輸入一組資料(x)後的流程,實際上會執行m次(假設資料有m組)

5.利用Gradient Checking來確認我們利用Back propagation求得的偏導項是否合理(檢查完記得關掉,不然會嚴重拖緩效率)

6.選擇Gradient Descent或是其他advanced optimization的方式來進行實際運算

將上述動作變成一個3D模型來呈現的話(假設函式可以用3D呈現)

隨堂練習

Ans:

--

--