Machine Learning學習日記 — Coursera篇 (Week 5.2):Unrolling Parameters, Gradient Checking

Pandora123
4 min readJun 7, 2016

--

BackPropagation in Practice(上)

大綱

  1. Unrolling Parameters
  2. Gradient Checking

1. Unrolling Parameters

將matrix展開成為一個n*1的vector,為了方便參數θ的傳遞

舉Neural Network的例子,會將每層不同的θ展開並合併為一個向量

而在需要的時候再將其重新塑形(reshape)

reshape(VEC(x,y),a,b)

reshape是一個用來將向量中的元素取出並重新排列成matrix的函式

VEC(x,y)指的是從向量VEC中取出從x至y的所有資料

後面的(a,b)代表又重新塑造成一個a*b的matrix

隨堂練習

Ans:

2. Gradient Checking

To check whether the partial derivative is correct or not

在開始前,首先要先知道什麼是partial derivative,我的理解是該參數的瞬間變動速率,可以參考:什麼是多變數函數的偏微分

這一個章節要做的事情就是確信我們透過Back Propagation求得的偏導項是正確的,那我們要怎麼用別的方法算出一個近似偏導項的值呢?

以下用二維圖形來說明:

所謂斜率就是(y2-y1)/(x2-x1),求的會是兩個點間的一段斜率

但是微分所做的事情就是求得某個點的切線斜率,所以根據上述式子,我們可以得到:當x2跟x1間的距離無限縮小時(比方說可能只差個一奈米之類的),我們就能得到近似於x1或是x2的切線大小!

所以上圖所做的事情其實就是:

為了求得某點的切線斜率,我們分別往上(+ε)跟往下(-ε),ε可以想像為一個個極小的變數(小寫epsilon,ε)取兩個極近的點,並透過取這兩點的斜率來得到近似於切線斜率的數值k

最後再透過確認原本偏導項的數值與k是否相近來確信back propagation是否運作正確。

當然你也可以只取往上的一點x,然後取x點與原點間的斜率,但Andrew不推薦這種做法

當然你可能會問:這只是個二維圖形啊,所以我們可以透過這種國中數學很簡單的求出近似於斜率的數值。但是如果是更高次項、更為複雜的函式的話要怎麼計算呢?

基本上就是變動部分的參數θ,代入函式後得到結果:J(θ),再透過結果相減來得出此參數的瞬間變動速率,即偏導項

隨堂練習

Furthermore:此外 / formula:公式

Ans:

--

--