DNN的網絡結構
近兩年深度學習不管是在科研領域還是工業界都非常火,其實深度學習相比之前的神經網絡在理論上沒什么區別,唯一區別可能是加了一個pretraining的過程而已。DNN(Deep neural network)是一種前饋人工神經網絡,在輸入與輸出層之間包含了多於一層的隱含層。
廢話少說。先從前饋人工神經網絡開始講起吧......
先對變量符號進行約定。$z$表示標量,$\mathbf{z}$表示向量,$\mathbf{Z}$表示矩陣。
以多類分類問題為例,假設$L(L\geqslant 2)$層神經網絡,設$\mathbf{z}^l,1\leqslant l\leqslant L$表示第$l$層的變量,那么前后兩層之間的關系為:$$\begin{align*}\mathbf{a}^{l+1}&=\mathbf{W}^l\mathbf{z}^l+\mathbf{b}^l\\\mathbf{z}^{l+1}&=f^{l+1}(\mathbf{a}^{l+1})\end{align*}$$這里當$1<l<L$時,$f^l(\cdot)$表示激勵函數,當$l=L$的時候,$f^l(\cdot)$為softmax函數。我在這里為什么要搞一個中間變量$\mathbf{a}$出來呢?后續會有用的.Ok,上面的兩個函數就表示了網絡的前向傳播。
激勵函數常采用sigmoid函數:$$\mathbf{z}^l=f^l(\mathbf{a})\Leftrightarrow z_i^l=\frac{1}{1+\exp(-a_i^l)}$$
這個函數的導數比較有意思:$$\frac{\partial z_i^l}{\partial a_i^l}=(f^l(a_i^l))'=\frac{\exp(-a_i^l)}{(1+\exp(-a_i^l))^2}=z_i^{l}(1-z_i^{l})$$
softmax函數本質上是多類邏輯回歸:$$\mathbf{z}^L=f^{L}(\mathbf{a}^{L})\Leftrightarrow z_i^L=\frac{\exp(a_i^{L})}{\sum_j\exp(a_j^{L})},$$ softmax函數的導數為:$$\frac{\partial z_i^L}{\partial a_j^{L}}=z_i^L(I_{ij}-z_j^L),$$這里$I_{ij}$表示單位矩陣的元素。為什么要知道這些導數呢?后續對網絡參數求導時需要用到。
好了,DNN的網絡結構已經講完了,前向傳播的形式也非常簡單。附帶地給出了sigmoid和softmax函數的一些性質。下次的內容涉及到DNN最核心的部分。DNN的有監督訓練-后向傳播算法(BP算法)。