神經網路求導 computational graph 中涉及向量的求導問題 ?(cs231n作業為例)

時間 2021-06-02 23:19:51

1樓:

我當時做Assignment2的時候也有相同的疑惑,雖然從維數上和直覺上來看確實是這樣,通過簡單的特例推理也確實是要sum一下,但是始終沒找到更好的理論解釋來說服自己。

下面是我看過的兩個不錯的部落格

2樓:午後陽光

和相加,其實是乙個broadcast(NumPy refresher)操作,對於的每一行,都進行了加的操作,所以在backpropagation的過程中,dout的每一行都要加到dbeta上。更細一點,你可以把broadcasting這種操作看成computational graph中的一種操作,首先把1*D的beta「複製」m份,變成乙個broadcast過的矩陣,然後和逐行相加:

這樣就會發現,backpropagation的過程中,broadcasting這個節點其實有多個輸出,那麼自然回流的誤差(梯度)就需要求和了。

對於你的第二個問題,其實broadcasting在backpropagation的過程不難,關鍵就是「找責任」。在forward的過程中,找準變數a參與了哪些操作,通過這些操作影響到了哪些變數b,c,d...,那麼根據這個操作和影響到的變數b,c,d...

的梯度,就可以得到變數a的梯度了。

推薦幾個backpropagation的部落格:

1. Neural networks and deep learning

2. 我有寫關於computational graph的blog:Using Computation Graph to Understand and Implement Backpropagation 「 SUNSHINEATNOON 「 Madness between pain and boredom.

卷積神經網路和BP神經網路的關係?

乙個維度的BP神經網路就相當於CNN中的全連線了,無非是多幾個全連線,CNN是二維,二維如果搞成全連線就導致運算量巨大,所以有了權重共享,大大減少了運算量,CNN卷積的思想肯定也源於BP神經網路就,在影象上做二維卷積的CNN發出炫目的光芒下,BP神經網路就已經快被人們遺忘了,但是不管CNN再怎麼發展...

卷積神經網路(CNN)和迴圈神經網路 RNN 有什麼區別?

不存在的1990 從字面區分 cnn 裡面的 c指 convolutional operation,是一種提取影象特徵方法。把這一operation加入到layer裡面構成了convolutional layer。rnn裡的r 指recurrent,中文是重複的意思。rnn構造的結構也是recurr...

如何看待人工神經網路ANN和脈衝神經網路SNN的發展?

十萬個為什麼 SNN起源於人類對生物神經網路的解剖,是一種機理模型 ANN是一種工程模型,架構上源於生物學基礎,但是又採用了數值優化的方法進行求解。當前的科技發展水平下,ANN更實用,可以解決很多實際問題,而SNN在功能性角度方面遠遠弱於ANN。從發展前景方面,ANN顯然不及SNN,因為生物神經網路...