RNN應(yīng)該是目前用的比較多的技術(shù)框架 ,無論是NLP還是CV等領(lǐng)域,今天 我們就詳細(xì)的講解一下關(guān)于RNN的具體知識(shí)
1、RNN為什么不能直接反向傳播呢?
首先我們回顧一下普通的反向傳播,過程如下所示:

、、
我們?yōu)榱撕啽銜簳r(shí)不考慮激活函數(shù),我們可以用以下的鏈?zhǔn)椒▌t計(jì)算:

這個(gè)是非常簡單的,現(xiàn)在我們來看看RNN是什么樣子的:

這樣我們就不能直接求偏導(dǎo)了,如果我們還是按照上面那種方法求偏導(dǎo),試想以下,后面遞歸的w3變量將會(huì)是無窮多,因?yàn)閔也是遞歸的,如果要解決這個(gè)問題,必須將這個(gè)時(shí)間序列給拆開,如以下形式:

但是這種仍然存在一個(gè)毛病,我們需要求單個(gè)RNN的時(shí)候,就需要求所有先前時(shí)間步長的梯度和得到一個(gè)梯度,并且用梯度來更新RNN,素以這時(shí)間步數(shù)的增加,這種計(jì)算會(huì)變得非常的昂貴,于是提出來了截?cái)嗟幕谑录姆聪騻鞑ィ═BPTT),用來優(yōu)化遞歸的模型。這里可以參考以下文獻(xiàn),意思就是我們只計(jì)算倒數(shù)到t-T的時(shí)候就結(jié)束了。并沒有從一開始就計(jì)算導(dǎo)數(shù)。(簡而言之就是上面那個(gè)求和公式我不需要全部求和 我只求最近的一部分)