Machine Learning學習日記 — Coursera篇 (Week 5.3):Random Initialization, Putting It Together
BackPropagation in Practice(下)
大綱
- Random Initialization
- 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)的問題,並將數值限制在我們制定的+-ε(這裏的ε跟前一篇文章的ε完全沒有關係,請將其視為一個變數)
隨堂練習
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: