1. 程式人生 > >深度神經網路(DNN)模型與前向傳播演算法

深度神經網路(DNN)模型與前向傳播演算法

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

1. 從感知機到神經網路

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

    輸出和輸入之間學習到一個線性關係,得到中間輸出結果:$$z=\sum\limits_{i=1}^mw_ix_i + b$$

    接著是一個神經元啟用函式:

$$sign(z)=
\begin{cases}
-1& {z<0}\\
1& {z\geq 0}
\end{cases}$$

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

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

    而神經網路則在感知機的模型上做了擴充套件,總結下主要有三點:

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

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

    3) 對啟用函式做擴充套件,感知機的啟用函式是$sign(z)$,雖然簡單但是處理能力有限,因此神經網路中一般使用的其他的啟用函式,比如我們在邏輯迴歸裡面使用過的Sigmoid函式,即:$$f(z)=\frac{1}{1+e^{-z}}$$

    還有後來出現的tanx, softmax,和ReLU等。通過使用不同的啟用函式,神經網路的表達能力進一步增強。對於各種常用的啟用函式,我們在後面再專門講。

2. DNN的基本結構

    上一節我們瞭解了神經網路基於感知機的擴充套件,而DNN可以理解為有很多隱藏層的神經網路。這個很多其實也沒有什麼度量標準, 多層神經網路和深度神經網路DNN其實也是指的一個東西,當然,DNN有時也叫做多層感知機(Multi-Layer perceptron,MLP), 名字實在是多。後面我們講到的神經網路都預設為DNN。

    從DNN按不同層的位置劃分,DNN內部的神經網路層可以分為三類,輸入層,隱藏層和輸出層,如下圖示例,一般來說第一層是輸入層,最後一層是輸出層,而中間的層數都是隱藏層。

    層與層之間是全連線的,也就是說,第i層的任意一個神經元一定與第i+1層的任意一個神經元相連。雖然DNN看起來很複雜,但是從小的區域性模型來說,還是和感知機一樣,即一個線性關係$z=\sum\limits w_ix_i + b$加上一個啟用函式$\sigma(z)$。

    由於DNN層數多,則我們的線性關係係數$w$和偏倚$b$的數量也就是很多了。具體的引數在DNN是如何定義的呢?

    首先我們來看看線性關係係數$w$的定義。以下圖一個三層的DNN為例,第二層的第4個神經元到第三層的第2個神經元的線性係數定義為$w_{24}^3$。上標3代表線性係數$w$所在的層數,而下標對應的是輸出的第三層索引2和輸入的第二層索引4。你也許會問,為什麼不是$w_{42}^3$, 而是$w_{24}^3$呢?這主要是為了便於模型用於矩陣表示運算,如果是$w_{42}^3$而每次進行矩陣運算是$w^Tx+b$,需要進行轉置。將輸出的索引放在前面的話,則線性運算不用轉置,即直接為$wx+b$。總結下,第$l-1$層的第k個神經元到第$l$層的第j個神經元的線性係數定義為$w_{jk}^l$。注意,輸入層是沒有$w$引數的。

     再來看看偏倚$b$的定義。還是以這個三層的DNN為例,第二層的第三個神經元對應的偏倚定義為$b_3^{2}$。其中,上標2代表所在的層數,下標3代表偏倚所在的神經元的索引。同樣的道理,第三個的第一個神經元的偏倚應該表示為$b_1^{3}$。同樣的,輸入層是沒有偏倚引數$b$的。

3. DNN前向傳播演算法數學原理

    在上一節,我們已經介紹了DNN各層線性關係係數$w$,偏倚$b$的定義。假設我們選擇的啟用函式是$\sigma(z)$,隱藏層和輸出層的輸出值為$a$,則對於下圖的三層DNN,利用和感知機一樣的思路,我們可以利用上一層的輸出計算下一層的輸出,也就是所謂的DNN前向傳播演算法。

    對於第二層的的輸出$a_1^2,a_2^2,a_3^2$,我們有:$$a_1^2=\sigma(z_1^2) = \sigma(w_{11}^2x_1 + w_{12}^2x_2 + w_{13}^2x_3 + b_1^{2})$$$$a_2^2=\sigma(z_2^2) = \sigma(w_{21}^2x_1 + w_{22}^2x_2 + w_{23}^2x_3 + b_2^{2})$$$$a_3^2=\sigma(z_3^2) = \sigma(w_{31}^2x_1 + w_{32}^2x_2 + w_{33}^2x_3 + b_3^{2})$$

    對於第三層的的輸出$a_1^3$,我們有:$$a_1^3=\sigma(z_1^3) = \sigma(w_{11}^3a_1^2 + w_{12}^3a_2^2 + w_{13}^3a_3^2 + b_1^{3})$$

    將上面的例子一般化,假設第$l-1$層共有m個神經元,則對於第$l$層的第j個神經元的輸出$a_j^l$,我們有:$$a_j^l = \sigma(z_j^l) = \sigma(\sum\limits_{k=1}^mw_{jk}^la_k^{l-1} + b_j^l)$$

    其中,如果$l=2$,則對於的$a_k^1$即為輸入層的$x_k$。

    從上面可以看出,使用代數法一個個的表示輸出比較複雜,而如果使用矩陣法則比較的簡潔。假設第$l-1$層共有m個神經元,而第$l$層共有n個神經元,則第$l$層的線性係數$w$組成了一個$n \times m$的矩陣$W^l$, 第$l$層的偏倚$b$組成了一個$n \times 1$的向量$b^l$ , 第$l-1$層的的輸出$a$組成了一個$m \times 1$的向量$a^{l-1}$,第$l$層的的未啟用前線性輸出$z$組成了一個$n \times 1$的向量$z^{l}$, 第$l$層的的輸出$a$組成了一個$n \times 1$的向量$a^{l}$。則用矩陣法表示,第l層的輸出為:$$a^l = \sigma(z^l) = \sigma(W^la^{l-1} + b^l)$$ 

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

4. DNN前向傳播演算法

    有了上一節的數學推導,DNN的前向傳播演算法也就不難了。所謂的DNN的前向傳播演算法也就是利用我們的若干個權重係數矩陣$W$,偏倚向量$b$來和輸入值向量$x$進行一系列線性運算和啟用運算,從輸入層開始,一層層的向後計算,一直到運算到輸出層,得到輸出結果為值。

    輸入: 總層數L,所有隱藏層和輸出層對應的矩陣$W$,偏倚向量$b$,輸入值向量$x$

    輸出:輸出層的輸出$a^L$

    1) 初始化$a^1 = x $

    2)  for $l = 2$ to $L$, 計算:$$a^l = \sigma(z^l) = \sigma(W^la^{l-1} + b^l)$$

    最後的結果即為輸出$a^L$。

5. DNN前向傳播演算法小結

    單獨看DNN前向傳播演算法,似乎沒有什麼大用處,而且這一大堆的矩陣$W$,偏倚向量$b$對應的引數怎麼獲得呢?怎麼得到最優的矩陣$W$,偏倚向量$b$呢?這個我們在講DNN的反向傳播演算法時再講。而理解反向傳播演算法的前提就是理解DNN的模型與前向傳播演算法。這也是我們這一篇先講的原因。

(歡迎轉載,轉載請註明出處。歡迎溝通交流: [email protected]) 

參考資料:

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

相關推薦

深度神經網路DNN模型傳播演算法

    深度神經網路(Deep Neural Networks, 以下簡稱DNN)是深度學習的基礎,而要理解DNN,首先我們要理解DNN模型,下面我們就對DNN的模型與前向傳播演算法做一個總結。 1. 從感知機到神經網路     在感知機原理小結中,我們介紹過感知機的模型,它是一個有若干輸入和一個輸出的模型,

使用NetworkX模組繪製深度神經網路DNN結構圖

  本文將展示如何利用Python中的NetworkX模組來繪製深度神經網路(DNN)結構圖。   在文章Keras入門(一)搭建深度神經網路(DNN)解決多分類問題中,我們建立的DNN結構圖如下: 該DNN模型由輸入層、隱藏層、輸出層和softmax層組成,

深度神經網路DNN是否模擬了人類大腦皮層結構?

原文地址:https://www.zhihu.com/question/59800121/answer/184888043   神經元   在深度學習領域,神經元是最底層的單元,如果用感知機的模型, wx + b, 加上一個啟用函式構成了全部,輸入和輸出都是數字,研究的比較清楚。別

深度神經網路DNN反向傳播演算法(BP)

    在深度神經網路(DNN)模型與前向傳播演算法中,我們對DNN的模型和前向傳播演算法做了總結,這裡我們更進一步,對DNN的反向傳播演算法(Back Propagation,BP)做一個總結。 1. DNN反向傳播演算法要解決的問題     在瞭解DNN的反向傳播演算法前,我們先要知道DNN反向傳播演算法

搭建簡單圖片分類的卷積神經網路-- 模型的測試和運用

兩個功能都在同一個檔案中 一、新建Disimage.py檔案 import tensorflow as tf from PIL import Image import os import numpy as np import matplotlib.pyplot as plt from Get

搭建簡單圖片分類的卷積神經網路-- CNN模型訓練

一、首先,簡單來說CNN卷積神經網路與BP神經網路主要區別在於: 1、網路的層數的多少(我這裡的CNN是比較簡單的,層數較少,真正應用的話,層數是很多的)。 2、CNN名稱來說,具有卷積運算的特點,對於大型的圖片或者數量多的圖片,卷積運算可以大量提高計算效能,而BP神經網路大都為全連線層,計

深度學習之DNN深度神經網路

(DNN)深度神經網路 簡介 DNN是指深度神經網路。與RNN迴圈神經網路、CNN卷積神經網路的區別就是DNN特指全連線的神經元結構,並不包含卷積單元或是時間上的關聯。 神經網路簡史 神經網路技術起源於上世紀五、六十年代,當時叫感知機(perceptron),擁有輸入層

Deep Learning模型之:CNN卷積神經網路深度解析CNN

http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了網上幾位大牛的部落格,詳細地講解了CNN的基礎結構與核心思想,歡迎交流。 1. 概述    卷積神經網路是一種特殊的深層的神經網路模型,它的特殊性體現在兩個方面,一方面它的神經元

10分鐘看懂全卷積神經網路 FCN :語義分割深度模型先驅

大家好,我是為人造的智慧操碎了心的智慧禪師。今天是10月24日,既是程式設計師節,也是程式設計師

神經網路:神經元模型邏輯迴歸

一、仿生學 在經典的機器學習領域,有很多不同型別的模型,它們大致可以分為兩類:一類是比較注重模型可解釋性的傳統統計模型,比如線性迴歸和邏輯迴歸;另一類是側重於從結構上“模仿”資料的機器學習模型,比如監督式學習SVM和非監督式學習KMeans。 這些模型雖然在結

TensorFlow 深度學習框架 1-- 神經網路傳播

基本概念:計算圖,張量,會話計算圖是相互運算不影響的兩個計算模型,是定義計算的執行,且互不影響#在TensorFlow程式中,系統會自動維護一個預設的計算圖,也支援通過tf.Graph 生成新的計算圖 #不同計算圖上的張量和運算都不會共享 import tensorflow

搭建簡單圖片分類的卷積神經網路-- 訓練模型的圖片資料預處理

一、訓練之前資料的預處理主要包括兩個方面 1、將圖片資料統一格式,以標籤來命名並存到train資料夾中(假設原始圖片按類別存到資料夾中)。 2、對命名好的圖片進行訓練集和測試集的劃分以及圖片資料化。 先對整個專案檔案進行說明: 專案資料夾

序列模型5-----雙向神經網路BRNN和深層迴圈神經網路Deep RNN

一、雙向迴圈神經網路BRNN 採用BRNN原因: 雙向RNN,即可以從過去的時間點獲取記憶,又可以從未來的時間點獲取資訊。為什麼要獲取未來的資訊呢? 判斷下面句子中Teddy是否是人名,如果只從前面兩個詞是無法得知Teddy是否是人名,如果能有後面的資訊就很好判斷了,這就需要用的雙向迴圈神經網路。

吳恩達深度學習筆記deeplearning.ai之卷積神經網路CNN

1. Padding 在卷積操作中,過濾器(又稱核)的大小通常為奇數,如3x3,5x5。這樣的好處有兩點: 在特徵圖(二維卷積)中就會存在一箇中心畫素點。有一箇中心畫素點會十分方便,便於指出過濾器的位置。 在沒有padding的情況下,經過卷積操作,輸出的資

吳恩達序列模型學習筆記--迴圈神經網路RNN

1. 序列模型的應用 序列模型能解決哪些激動人心的問題呢? 語音識別:將輸入的語音訊號直接輸出相應的語音文字資訊。無論是語音訊號還是文字資訊均是序列資料。 音樂生成:生成音樂樂譜。只有輸出的音樂樂譜是序列資料,輸入可以是空或者一個整數。 情感分類:將輸入的評論句子轉換

神經網路:Softmax函式多元邏輯迴歸

一、 Softmax函式與多元邏輯迴歸 為了之後更深入地討論神經網路,本節將介紹在這個領域裡很重要的softmax函式,它常被用來定義神經網路的損失函式(針對分類問題)。 根據機器學習的理論,二元邏輯迴歸的模型公式可以寫為如下的形式: (1)P(y=1)=11

tf.estimator API技術手冊8——DNNClassifier深度神經網路分類器

(一)簡 介 繼承自Estimator,定義在tensorflow/python/estimator/canned/dnn.py中,用來建立深度神經網路模型。示例如下: categorical_fe

吳恩達深度學習系列課程筆記:卷積神經網路

本系列文章將對吳恩達在網易公開課“深度學習工程師”微專業內容進行筆記總結,這一部分介紹的是“卷積神經網路”部分。 1、計算機視覺 計算機視覺在我們還是生活中有非常廣泛的應用,以下幾個是最常見的例子: 影象分類: 可以對影象中的物體種類進行判斷,如確定影象中

深度學習基礎—— 從多層感知機MLP到卷積神經網路CNN

經典的多層感知機(Multi-Layer Perceptron)形式上是全連線(fully-connected)的鄰接網路(adjacent network)。 That is, every neuron in the network is connec

乾貨 | 深度學習之卷積神經網路CNN傳播演算法詳解

微信公眾號 關鍵字全網搜尋最新排名 【機器學習演算法】:排名第一 【機器學習】:排名第一 【Python】:排名第三 【演算法】:排名第四 前言 在(乾貨 | 深度學習之卷積神經網路(CNN)的模型結構)中,我們對CNN的模型結構做了總結,這裡我們就在CNN的模型基礎上,看看CNN的前向傳播演算法是什麼樣