本文總結自《Neural Networks and Deep Learning》第1章的部份內容。 編程
感知器是一種人工神經元。網絡
一個感知器接受幾個二進制輸入:x1,x2,...,併產一個二進制輸出:架構
數學模型以下:編程語言
能夠將感知器看做依據權重來做出決定的設備。模塊化
輸入:取值爲0或者1。
輸出:取值爲0或者1。函數
S型神經元和感知器相似,但S型神經元中有一個很好的特性:對權重和偏置的微小改動只引發輸出的微小變化。這個特性對於神經網絡的自我學習過程很重要。學習
由於對於一個由多個感知器構成的網絡而言,存在以下問題:編碼
這個網絡中單個感知器上一個權重或偏置的微小改動有時會引發那個感知器的輸出徹底翻轉,如0變到1。那樣的翻轉可能接下來引發其他網絡絡的行爲以極其複雜的方式徹底改變。spa
而S型神經元能夠克服上述問題。設計
輸入:能夠取0到1之間的任意值,而不一樣於感知器中只能取0或者1。
輸出:輸出不是0或1,而是0到1之間的任意值,該輸出由σ(wx+b)決定,σ被稱爲S型函數。
輸入層、輸出層、隱藏層
因爲歷史的緣由,儘管是由S 型神經元而不是感知器構成,這種多層網絡有時被稱爲多層感知器或者MLP。
例如,假設咱們嘗試肯定一張手寫數字的圖像上是否寫的是「9」。很天然地,咱們能夠將圖像像素的強度進行編碼做爲輸入神經元來設計網絡。
若是圖像是一個64 64 的灰度圖像,那麼咱們會須要4096 = 64*64 個輸入神經元,每一個強度取0 和1 之間合適的值。輸出層只須要包含1個神經元,當輸出值小於0.5 時表示「輸入圖像不是一個9」,大於0.5 的值表示「輸入圖像是一個9」。
用如下神經網絡識別:
輸入層: 28x28 = 784個神經元。每一個神經元表明一個像素的值:0.0全白,1.0全黑。
隱藏層:一層,n個神經元,例子中 n=15
輸出層: 10個神經元,分別表明手寫數字識別可能的0~9十個數字。例如: 第一個神經元(表明0)的輸出值=1, 其餘的<1, 數字被識別爲0。
一種可能的解釋:假設隱藏層的第1個神經元只是用於檢測以下的圖像是否存在:
包含多層結構—— 兩層或更多隱藏層—— 的網絡被稱爲深度神經網絡。
對於一個很是複雜的問題(好比這張圖像是否有一張臉),深度神經網絡能夠經過一系列多層結構來解決,將原始問題分解爲各個子問題,最終分解成在單像素層面上就可回答的很是簡單的問題。
在前面的網絡層,它回答關於輸入圖像很是簡單明確的問題,在後面的網絡層,它創建了一個更加複雜和抽象的層級結構。
深度神經網絡有點像傳統編程語言使用模塊化的設計和抽象的思想來建立複雜的計算機程序。
深度神經網絡與淺層網絡的對比有點像將一個可以進行函數調用的程序語言與一個不能進行函數調用的精簡語言進行對比。