logo
Loading...

Back Propagation利用loss乘上sigmoid在輸出資料上斜率的數學意義是什麼? - Cupoy

專家你好,  可以煩請解釋在Back_Propagation_Advanced.ipynb中 以下這...

multiply, slope, update,ml100-2-d75,ml100-2

Back Propagation利用loss乘上sigmoid在輸出資料上斜率的數學意義是什麼?

2019/07/13 上午 11:51
機器學習共學討論版
Ray Xie
觀看數:134
回答數:3
收藏數:0
multiply
slope
update
ml100-2-d75
ml100-2

專家你好,  可以煩請解釋在Back_Propagation_Advanced.ipynb中 以下這兩行code嗎?


(1) l1_delta = l1_error * nonlin(l1,True)    


想請教利用loss乘上sigmoid在輸出資料上斜率的數學意義是什麼?

我的理解是, 當輸出結果更靠近0或是1時, 等於當下預測是有一個prefer的答案的

nonlin(l1,True)的輸出會較小, 乘上l1_error後不會顯著化這個l1_error

但當輸出結果是在0-1中間附近時, 斜率較大, 代表預測基本上等於是random亂猜

所以特意去顯著化這個l1_error

 

(2) syn0 += np.dot(l0.T,l1_delta)


想請教為何是利用 input 的資料乘上l1_delta去更新weighting

若按照gradient desent 的公式 w = w - lr * dw

代表np.dot(l0.T, l1_delta) 是 負方向梯度的意思嗎?


謝謝!

 

回答列表

  • 2019/07/13 下午 05:38
    Jeffrey
    贊同數:0
    不贊同數:0
    留言數:1

    (1) l1_delta = l1_error * nonlin(l1,True)    


        對於每一輸入,可知 l1 都有對應的一個“猜測”結果。那麼通過將真實的結果(y)與猜測結果(l1)作減,就可以對比得到網路預測的效果怎麼樣。 l1_error 是一個有正數和負數組成的向量,它可以反映出網路的誤差有多大


    (2)syn0 +=np.dot(l0.T,l1_delta)


    #該神經網路權重矩陣的初始化操作。


    #用 “syn0” 來代指 (即“輸入層-第一層隱層”間權重矩陣)


    首先讓網路基於給定輸入“試著”去預測輸出。


    以至於作出一些調整,使得在每次反覆運算過程中網路能夠表現地更好一點。


    (4 x 3) dot (3 x 1) = (4 x 1)


    本行代碼包含兩個步驟。首先,將 l0 與 syn0 進行矩陣相乘。


    然後,將計算結果傳遞給 sigmoid 函數。具體考慮到各個矩陣的維度:


    (4 x 3) dot (3 x 1) = (4 x 1)

  • 2019/07/21 下午 00:09
    Jeffrey
    贊同數:0
    不贊同數:0
    留言數:0

    Hi, 同ˊ學,您好, 

    問題(一), 說明如下:  

    1. l0也就是輸入層 

    2. l0 = X 


    3. l1 = nonlin(np.dot(l0,syn0)) 所以, 真實的結果(y)與猜測結果(l1)作減的損失 l1_error = y - l1  l1_delta 在l1中的sigmoid的斜率: 微分導數就是函數乘以 l1_error


    問題(二)為什麼是這樣更新weight ? 跟Gradient Descent更新參數做法似乎不同?

    回答: 這是針對神經網路隱藏層的激活函數輸出的點, 權重更新的變化, 說明, 反向傳回來的誤差;

    導入偏置項b加上學習率 α跟optimizer就是Gradient Descent;

  • 2019/08/06 下午 03:24
    陳明佑 (Ming You Chen)
    贊同數:0
    不贊同數:0
    留言數:0

    如同專家 Jeffery 的回答, 這邊做點小補充 :


    這邊的計算方式, 是 gradient desent 公式中 dw 的部分

    只是對每個不同的權重 wi, 微分細算後有不同的長度

    其中同一層連鎖率所產生的微分項, 會有類似/重複的地方

    這些地方我們就以一個向量 l1_delta 取代


    建議同學畫一個只有兩層隱藏層, 每層兩個神經元的模型

    對其中每個權重偏微分細算一次, 應該就能徹底了解了

    如果懶得自己算, 可以參考 這個連結 ,計算如下圖

    但誠心建議 : 如果要徹底搞懂還是自己算過一次, 會比只看圖好很多