注意:
1.每次更新,都要進行一次完整的forward和backward,想要進行更新,需要梯度,所以你需要前饋樣本,馬上反向求導,得到梯度,然後根據求得的梯度進行權值微調,完成權值更新。
2.前饋得到損失,反饋得到梯度,對梯度的使用來完成權值更新。
3. 訓練的過程,前饋,反饋,更新;......
我們需要進行向量處理,網路中流動的資料並不是標量,全是向量,區域性梯度原本是標量,現在它們是雅可比矩陣(雅可比矩陣類似於多元函式的導數,函式的一階偏導數以一定方式排列成的矩陣),
雅可比矩陣是二維矩陣,表示x中每個元素對z中每個元素的影響,這些由雅可比矩陣儲存,梯度和以前一樣。
dL/dz是一個向量,dz/dx是雅可比矩陣(區域性梯度),最終得到了一個矩陣和向量的乘積,來表示梯度的反向傳播。
雅可比矩陣可不要求出:
雅可比矩陣是一個4096*4096的矩陣,但只有在對角線才有值,進行的是單個元素的操作(因為輸入和輸出的維度是相同的,然後是單個單個的做RELU操作,所以這個雅可比矩陣的對角線上才有值,相對應的那個維度組才會有梯度的貢獻,若輸入大於0,則輸入和輸出相等,梯度為1;若輸入小於0,則輸出值提升到0,梯度),對角線不全為1,小於0的資料要提升為0,所以對角線的1被取代(dy/dx=0, 導數為0),求出雅可比矩陣不可取,也不會真的矩陣和向量相乘。
因為矩陣有特殊結構,可以進行利用,因為你只需要觀察那些小於0的輸入,然後將這些維度上的梯度置0,你從這得到輸出梯度,對於小於0的數將梯度置0,繼續反向傳播。
最終輸出的是一個數求得損失函式,我們對分別計算梯度感興趣,如果我們有多重輸出,在反向傳播中,必須同時對所以梯度的流向進行跟蹤,最終的損失是一個標量。
在進行mini-batch時候,每個樣例都是獨立的,只是同時進行傳播。雅可比矩陣非常大,利用稀疏性。
。
層與層之間連線通過向量的傳遞完成,傳遞的n維陣列,陣列在各層之間傳遞。