色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 智能計算 > 設計應用 > 深度神經(jīng)網(wǎng)絡(DNN)模型與前向傳播算法

          深度神經(jīng)網(wǎng)絡(DNN)模型與前向傳播算法

          作者: 時間:2022-07-04 來源:博客園 收藏

            (Deep Neural Networks,以下簡稱)是的基礎,而要理解,首先我們要理解模型,下面我們就對DNN的模型與前向傳播算法做一個總結。

          本文引用地址:http://cafeforensic.com/article/202207/435868.htm

            1.從感知機到神經(jīng)網(wǎng)絡

            在感知機原理小結中,我們介紹過感知機的模型,它是一個有若干輸入和一個輸出的模型,如下圖:

          1656904869460695.png

            輸出和輸入之間學習到一個線性關系,得到中間輸出結果:

            z=∑i=1mwixi+bz=∑i=1mwixi+b

            接著是一個神經(jīng)元激活函數(shù):

            sign(z)={?11z<0z≥0sign(z)={?1z<01z≥0

            從而得到我們想要的輸出結果1或者-1。

            這個模型只能用于二元分類,且無法學習比較復雜的非線性模型,因此在工業(yè)界無法使用。

            而神經(jīng)網(wǎng)絡則在感知機的模型上做了擴展,總結下主要有三點:

            1)加入了隱藏層,隱藏層可以有多層,增強模型的表達能力,如下圖實例,當然增加了這么多隱藏層模型的復雜度也增加了好多。

          1656904925749205.png

            2)輸出層的神經(jīng)元也可以不止一個輸出,可以有多個輸出,這樣模型可以靈活的應用于分類回歸,以及其他的機器學習領域比如降維和聚類等。多個神經(jīng)元輸出的輸出層對應的一個實例如下圖,輸出層現(xiàn)在有4個神經(jīng)元了。

          1656905017572823.png

            3)對激活函數(shù)做擴展,感知機的激活函數(shù)是sign(z)sign(z),雖然簡單但是處理能力有限,因此神經(jīng)網(wǎng)絡中一般使用的其他的激活函數(shù),比如我們在邏輯回歸里面使用過的Sigmoid函數(shù),即:

            f(z)=11+e?zf(z)=11+e?z

            還有后來出現(xiàn)的tanx,softmax,和ReLU等。通過使用不同的激活函數(shù),神經(jīng)網(wǎng)絡的表達能力進一步增強。對于各種常用的激活函數(shù),我們在后面再專門講。

            2.DNN的基本結構

            上一節(jié)我們了解了神經(jīng)網(wǎng)絡基于感知機的擴展,而DNN可以理解為有很多隱藏層的神經(jīng)網(wǎng)絡。這個很多其實也沒有什么度量標準,多層神經(jīng)網(wǎng)絡和DNN其實也是指的一個東西,當然,DNN有時也叫做多層感知機(Multi-Layer perceptron,MLP),名字實在是多。后面我們講到的神經(jīng)網(wǎng)絡都默認為DNN。

            從DNN按不同層的位置劃分,DNN內部的神經(jīng)網(wǎng)絡層可以分為三類,輸入層,隱藏層和輸出層,如下圖示例,一般來說第一層是輸入層,最后一層是輸出層,而中間的層數(shù)都是隱藏層。

          1656905039650552.png

            層與層之間是全連接的,也就是說,第i層的任意一個神經(jīng)元一定與第i+1層的任意一個神經(jīng)元相連。雖然DNN看起來很復雜,但是從小的局部模型來說,還是和感知機一樣,即一個線性關系z=∑wixi+bz=∑wixi+b加上一個激活函數(shù)σ(z)σ(z)。

            由于DNN層數(shù)多,則我們的線性關系系數(shù)ww和偏倚bb的數(shù)量也就是很多了。具體的參數(shù)在DNN是如何定義的呢?

            首先我們來看看線性關系系數(shù)ww的定義。以下圖一個三層的DNN為例,第二層的第4個神經(jīng)元到第三層的第2個神經(jīng)元的線性系數(shù)定義為w324w243。上標3代表線性系數(shù)ww所在的層數(shù),而下標對應的是輸出的第三層索引2和輸入的第二層索引4。你也許會問,為什么不是w342w423,而是w324w243呢?這主要是為了便于模型用于矩陣表示運算,如果是w342w423而每次進行矩陣運算是wTx+bwTx+b,需要進行轉置。將輸出的索引放在前面的話,則線性運算不用轉置,即直接為wx+bwx+b??偨Y下,第l?1l?1層的第k個神經(jīng)元到第ll層的第j個神經(jīng)元的線性系數(shù)定義為wljkwjkl。注意,輸入層是沒有ww參數(shù)的。

          1656905059123035.png

            再來看看偏倚bb的定義。還是以這個三層的DNN為例,第二層的第三個神經(jīng)元對應的偏倚定義為b23b32。其中,上標2代表所在的層數(shù),下標3代表偏倚所在的神經(jīng)元的索引。同樣的道理,第三個的第一個神經(jīng)元的偏倚應該表示為b31b13。同樣的,輸入層是沒有偏倚參數(shù)bb的。

          1656905076123558.png

            3.DNN前向傳播算法數(shù)學原理

            在上一節(jié),我們已經(jīng)介紹了DNN各層線性關系系數(shù)ww,偏倚bb的定義。假設我們選擇的激活函數(shù)是σ(z)σ(z),隱藏層和輸出層的輸出值為aa,則對于下圖的三層DNN,利用和感知機一樣的思路,我們可以利用上一層的輸出計算下一層的輸出,也就是所謂的DNN前向傳播算法。

          1656905096964644.png

            對于第二層的的輸出a21,a22,a23a12,a22,a32,我們有:

            a21=σ(z21)=σ(w211x1+w212x2+w213x3+b21)a12=σ(z12)=σ(w112x1+w122x2+w132x3+b12)

            a22=σ(z22)=σ(w221x1+w222x2+w223x3+b22)a22=σ(z22)=σ(w212x1+w222x2+w232x3+b22)

            a23=σ(z23)=σ(w231x1+w232x2+w233x3+b23)a32=σ(z32)=σ(w312x1+w322x2+w332x3+b32)

            對于第三層的的輸出a31a13,我們有:

            a31=σ(z31)=σ(w311a21+w312a22+w313a23+b31)a13=σ(z13)=σ(w113a12+w123a22+w133a32+b13)

            將上面的例子一般化,假設第l?1l?1層共有m個神經(jīng)元,則對于第ll層的第j個神經(jīng)元的輸出aljajl,我們有:

            alj=σ(zlj)=σ(∑k=1mwljkal?1k+blj)ajl=σ(zjl)=σ(∑k=1mwjklakl?1+bjl)

            其中,如果l=2l=2,則對于的a1kak1即為輸入層的xkxk。

            從上面可以看出,使用代數(shù)法一個個的表示輸出比較復雜,而如果使用矩陣法則比較的簡潔。假設第l?1l?1層共有m個神經(jīng)元,而第ll層共有n個神經(jīng)元,則第ll層的線性系數(shù)ww組成了一個n×mn×m的矩陣WlWl,第ll層的偏倚bb組成了一個n×1n×1的向量blbl,第l?1l?1層的的輸出aa組成了一個m×1m×1的向量al?1al?1,第ll層的的未激活前線性輸出zz組成了一個n×1n×1的向量zlzl,第ll層的的輸出aa組成了一個n×1n×1的向量alal。則用矩陣法表示,第l層的輸出為:

            al=σ(zl)=σ(Wlal?1+bl)al=σ(zl)=σ(Wlal?1+bl)

            這個表示方法簡潔漂亮,后面我們的討論都會基于上面的這個矩陣法表示來。

            4.DNN前向傳播算法

            有了上一節(jié)的數(shù)學推導,DNN的前向傳播算法也就不難了。所謂的DNN的前向傳播算法也就是利用我們的若干個權重系數(shù)矩陣WW,偏倚向量bb來和輸入值向量xx進行一系列線性運算和激活運算,從輸入層開始,一層層的向后計算,一直到運算到輸出層,得到輸出結果為值。

            輸入:總層數(shù)L,所有隱藏層和輸出層對應的矩陣WW,偏倚向量bb,輸入值向量xx

            輸出:輸出層的輸出aLaL

            1)初始化a1=xa1=x

            2)for l=2l=2 to LL,計算:

            al=σ(zl)=σ(Wlal?1+bl)al=σ(zl)=σ(Wlal?1+bl)

            最后的結果即為輸出aLaL。

            5.DNN前向傳播算法小結

            單獨看DNN前向傳播算法,似乎沒有什么大用處,而且這一大堆的矩陣WW,偏倚向量bb對應的參數(shù)怎么獲得呢?怎么得到最優(yōu)的矩陣WW,偏倚向量bb呢?這個我們在講DNN的反向傳播算法時再講。而理解反向傳播算法的前提就是理解DNN的模型與前向傳播算法。這也是我們這一篇先講的原因。

           ?。g迎轉載,轉載請注明出處。歡迎溝通交流:liujianping-ok 163.com)

            參考資料:

            1)Neural Networks and Deep Learning by By Michael Nielsen

            2)Deep Learning,book by Ian Goodfellow,Yoshua Bengio,and Aaron Courville

            3)UFLDL Tutorial



          評論


          相關推薦

          技術專區(qū)

          關閉