個人認為,只要有足夠的程式設計基礎,並且徹底了解Part 1,那就夠了。至於Part 2和Part 3,有空再看。換言之,若沒有了解Part 1基礎原理,寫再多的Neural Network程式,對知識的長進,沒有多大幫助。
如何確定是否真的搞懂Part 1?一個方法就是,用數學公式當作程式語言,將3-Layer Neural Network重新推導一遍。
下圖是我們建立的,3-Layer Neural Network:
注意,我用程序員最常用的迴圈符號i, j, k,來表達第1層、第2層、第3層的Node、Input、Output、Training Data和Weight。有i, j, k符號做為結尾的,大部份是Matrix,如xi, wij, yk。
First Layer Node: ni
Input: xi
Output: xi
Function: f(x) = x
Second Layer Node: nj
Input: xi
Output: xj
Weight: wij
Function: f(x) = Sigmoid (x)
Third Layer Node: nk
Input: xj
Output: yk
Weight: wjk
Function: f(x) = Sigmoid (x)
Training Data: tk
將第3層Node的Error,套在Gradient Descent,算出第2層到第3層的weight的微調量:
為何Neural Network要用到線性代數?
將此微調量,套在Back-Propagating Errors,算出第2層的Error:
將第2層Node的Error,套在Gradient Descent,算出第1層到第2層的weight的微調量:
-Count
沒有留言:
張貼留言