jax可微分編程的筆記(8)
第八章 循環神經網絡
神經網絡是可微分編程中最為重要的模型構造形式,也是當代
深度學習的基本組成部分,深度學習中的“深度”一詞,便是對
神經網絡的層數的形容。
8.1 神經網絡的生物學基礎
通過層層近似,從復雜的生物學模型中抽象出一系列較為簡化
的數學結構。簡單了解計算神經科學后,讓我們對數學意義上
的“神經網絡”,有了更加豐富的物理直覺。
8.1.1 神經元的電化學性質
神經網絡的基本組成單元稱為神經元(neuron),又稱為神經細胞。
它是一個來自于生物學的術語。神經元可以被視作一個“裝有帶
電液體的漏水的袋子”。
在可微分編程的語境之下,對膜電位和細胞溶質輸運過程的討論
之所以顯得重要,是因為相連接的神經元為我們提供了一個絕好的
物理圖像,使得數學意義下“神經網絡”較為抽象的訓練過程,開始
變得更加真實而具體可感。
各種門控離子通道的存在,使得不同的神經元之間的相互“交流”
成為了可能。
8.1.2 神經元輸出過程的建模
由于不同種類的膜蛋白具有不同的動力學性質,我們需要對它們
分別進行建模。膜電位與時間的非線性關系,用非線性函數來描述。
在深度學習中,這樣的非線性函數稱為激活函數。激活函數的選取
方式極為多樣。例如,當我們需要對函數的輸出范圍進行限制(比如
某一事件發生的概率只能在范圍[0,1]包含于R之內)則可以選取
sigmoid函數。常用的sigmoid函數有邏輯斯蒂函數和雙曲正切函數。
delta(x)=1/(1+exp(-x))??? tanh(x)=(exp(x)-exp(-x))/(exp(x)+exp(-x))
為了解決sigmoid函數帶來的梯度消失的問題,ReLU函數(rectified linear unit
修正線性單元)成為最受歡迎的激活函數之一。
ReLU(x)=max(x,0)
ReLU函數在原點處并不連續,為此可以使用softplus函數作為對ReLU函數的近似。
softplus(x)=ln(1+exp(x)) 對于多分類問題,我們還可以采用softmax等激活函數。
8.1.3 神經元構成網絡的建模
根據推導,得到公式 tr dv(t)/dt =-v(t)+f(Wu(t))
這個公式是對神經網絡討論的起點,其中的函數f對應著單個神經元的激活函數。
在平衡狀態下,表達式v=f(Wu)刻畫了一層前饋神經網絡中所蘊含的數據結構。
例如4.2.4節中表達式h(x;0)=softmax(wx+b)就相當于給出了神經網絡的
一個全連接層。同一層神經元間存在通過突觸的相互連接,這樣的網絡結構被
稱為循環神經網絡。
8.2 循環神經網絡
對于音樂,股票,文字等存在順序的樣本輸入,獨立同分布假設一般將不再成立。
此時我們期待循環神經網絡,表現出色。
8.2.1 簡單循環神經網絡
設計循環神經網絡的要點,在于為單向傳播的網絡引入反饋的結構。
從遞推關系導出微分方程的過程利用了將離散變量連續化的思想。
同樣,依照第7章關于動量法的討論,在時間尺度上離散化,可以把
8.24的微分方程,相當自然地推導得到8.27的遞推關系,在這樣的
視角下,循環神經網絡的訓練過程,不過是對生物學意義上神經網絡
系統的一次物理模擬,令其“學習”到最優的參數.
8.2.2 循環神經網絡的梯度回傳
在自然語言處理的語境中,我們通常會選取交叉熵作為詞向量之間的
損失函數,并選擇softmax作為輸出函數G中的激活函數。
對于存在上界Mc<1的情形,梯度在實際傳遞的過程中容易出現梯度消失
的現象,從而給計算效率帶來相當的損失。為了緩解由梯度消失帶來的
計算資源的浪費,人們通常會對時間步進行截斷。
當序列|Cn|的上確界Mc>=1時,盡管在實踐中時間步永遠為有限值,但不
穩定的級數,暗示著類似于蝴蝶效應,梯度爆炸等一系列病態數值現象存在。
梯度裁剪的本質,是在梯度矢量的范數過大時動態地調整學習率的大小。
盡管它實際上并未完全解決梯度爆炸的問題,但至少為該問題提供了一個
快速的修復方式。
簡單循環神經網絡在時間尺度上的收斂性,取決于隱藏層節點間權重矩陣
M的最大本征值λmax;而一般循環神經網絡中隱藏層參數的梯度,其理論上界
的存在性,則取決于序列{|Cn|}{n=1,T}的上確界Mc。