天天看點

前饋神經網絡_神經網絡 - 前饋神經網絡概要簡述

神經網絡 - 前饋神經網絡

人工神經網絡是由大量處理單元互聯組成的非線性、自适應資訊處理系統。它是在現代神經科學研究成果的基礎上提出的,試圖通過模拟大腦神經網絡處理、記憶資訊的方式進行資訊處理。神經網絡是個非常大的科目。今天我們就介紹下最簡單的模型前饋神經網絡。

從神經元細胞說起

人的大腦擁有數以億計的神經元細胞。他們彼此互相相連,來給大腦傳遞資訊,幫助人類做出決策,分類事物,以及各種運算等。

神經元細胞的結構,由中間一個細胞體,一頭長出許多的用來接收其他的神經元傳遞過來的信号的樹突,以及另一頭長出的一根長長的用來給别的神經元傳遞信号的軸突。軸突的末端又分叉處許多樹杈,連接配接到其他的神經元的樹突或者軸突上。

前饋神經網絡_神經網絡 - 前饋神經網絡概要簡述

當大腦在運作思考的時候,神經元上的各個樹突接收到其他的神經元發出的刺激脈沖,這些脈沖會持續的在神經元内疊加,一旦脈沖的強度達到一個臨界數值以後,這個神經元就會産生動作電位,沿着軸突發送電信号,并且傳遞給别的神經元細胞。

而我們所說的神經網絡中的最小的神經元單元也是以類似的方法工作。在了解神經網絡之前我們先來了解下什麼是感覺機

感覺機

感覺機在上世紀50年代末和60年代初由科學家Frank Rosenblatt取得了進展,靈感來自早期又Warren McCulloch與沃爾特·皮茲的神經研究工作。先看下感覺機是如何工作的:

前饋神經網絡_神經網絡 - 前饋神經網絡概要簡述

感覺機的模型非常類似我們大腦的神經元細胞,$x_1$, $x_2$, $x_3$為信号輸入,$output$為信号輸出,中間的圓形表示神經細胞體。在上圖,我們隻表示了3個輸入信号,也可以用更多的輸入信号。

Rosenblatt提出了一個簡單的規則來計算輸出,他給每一個輸入$x$引入了一個權重(weight)。然後将他們累加求和,計算的方法為 :

前饋神經網絡_神經網絡 - 前饋神經網絡概要簡述

這個非常像我們大腦的神經元細胞對來自其他神經元細胞的傳遞的刺激脈沖的累加。然後對于這個結果的$output$,給予了一個門檻值,門檻值是一個實數,是神經元的一個參數。當大于這個門檻值的時候,這個$output$就輸出1,小于這個門檻值的時候,這個$output$就輸出0(可以參考激活函數小節的函數圖像)。公式表示為:

前饋神經網絡_神經網絡 - 前饋神經網絡概要簡述

這個就是我們知道的激活函數的最初形态,0表示抑制,1表示激活。感覺機的工作原理可以了解為,将輸入信号,通過一系列的權值,權重求和以後,通過中間圓形的某個激活函數得出的結果來跟某個門檻值進行比較,來決定是否要繼續輸出。這種工作機制非常的類似我們的大腦的神經元細胞。

從上面我們可以看出,單個感覺機的用做非常的小,就像我們大腦的神經元細胞一樣,單個神經元細胞并不能完成我們日常生活的種種的任務,但是如果我們加入非常多的神經元細胞,并且将它們組成一個網絡。它們就能完成很多高難度,複雜的事情。

從感覺機的模型來看,單個感覺機的功能非常的單一,但是它展示了每個感覺單元是如何接收信号,并且,決定輸出的過程。

但是如果我們将幾千,幾百,甚至上萬個感覺的模型,組成像我們的大腦的神經網絡一樣的網絡模型,他就可以完成跟大腦一樣,複雜的任務。這個就是我們所說的神經網絡模型。

一個簡單的四層神經網絡模型

現實工作中我們所使用的神經網絡模型,往往層次很深,很複雜。為了了解友善,我們從一個簡單的四層神經網絡來了解。能夠更加容易的友善我們了解神經網絡。

我們來看一個簡單的四層網絡模型:

前饋神經網絡_神經網絡 - 前饋神經網絡概要簡述

在這個神經網絡模型中我們有四層網絡。

其中每個小圓圈代表一個感覺機模型。

1. 第一層稱之為輸入層,因為它直接跟輸入資料相連。

2. 第二和第三層稱之為隐藏層

3. 第四層為輸出層。

第一層網絡的各個神經元接收了輸入信号,然後通過自身的神經體權重求和以後,輸出給下一層神經元。第二層的神經網落的神經單元的輸入來自前一層的神經網絡的輸出。以此類推。最後的經過中間的神經網絡的計算以後,将結果輸出到輸出層。得出最後的結果。這裡的輸出層我們隻讓結果輸出為一個結果,也可以輸出多個結果。一般的分類用途的神經網絡,最後會輸出跟label相對應個數的輸出次元。

在這裡還有個地方沒有說,就是激活函數。下面我們來講一下激活函數

激活函數

所謂激活函數(Activation Function),就是在人工神經網絡的神經元上運作的函數,負責将神經元的輸入映射到輸出端。

為什麼要使用激活函數

在說激活函數之前,我們先要搞明白的一件事,為什麼要使用激活函數,不用有什麼問題。在之前的感覺機模型中,我們可以看到,神經元對待輸入參數是以權重求和的方式來進行運算的。如果我們不使用激活函數,那麼我們輸出的結果,應該是輸入參數的線性疊加的結果。一個神經元的結果又作為下一層神經網絡中神經元的輸入參數,他也進行同樣的操作,是以最後的整個網絡的輸出也是線性的。但是我們的生活中的實際問題往往是非線性的,是以,為了能夠适應非線性的空間,我們在輸出的結果之前,在最後的輸出層加了個一個非線性的函數,我們稱之為激活函數,将網絡的線性結果,映射到非線性的空間内。

前饋神經網絡_神經網絡 - 前饋神經網絡概要簡述

激活函數也像大腦的神經元細胞一包一樣,會有激活跟抑制。當輸入激活函數的值到達一定的區間内,激活函數,會進行輸出,否則,會抑制這些值的輸出。這個概念比較抽象,下面我們舉例一些常用的激活函數,就可以看到,這些激活函數在哪些部分是對輸入進行了抑制,哪些部分進行了激活。

常用的激活函數

我們來看一下常用的激活函數,以及他們的特點

Sigmoid

Sigmoid 是常用的非線性的激活函數,它的數學形式如下

前饋神經網絡_神經網絡 - 前饋神經網絡概要簡述

幾何圖形如下:

前饋神經網絡_神經網絡 - 前饋神經網絡概要簡述

這個函數有如下特點:

它能夠把輸入的連續實值變換為0和1之間的輸出,特别的,如果是非常大的負數,那麼輸出就是0;如果是非常大的正數,輸出就是1

但是這個函數也有如下的缺點:

1. 梯度消失

2. 不是以0值為中心

3. 運算比較耗時,因為需要用到幂運算

tanh

函數解析式:

前饋神經網絡_神經網絡 - 前饋神經網絡概要簡述

tanh函數及其導數的幾何圖像如下圖:

前饋神經網絡_神經網絡 - 前饋神經網絡概要簡述

與Sigmoid比較:

解決了輸出不是0中心的問題,但是梯度消失跟幂運算還是存在

Relu

Relu函數的解析式

前饋神經網絡_神經網絡 - 前饋神經網絡概要簡述

Relu函數及其導數的圖像如下圖所示:

前饋神經網絡_神經網絡 - 前饋神經網絡概要簡述

Relu函數有如下幾個優點:

1. 解決了gradient vanishing問題 (在正區間)

2. 計算速度非常快,隻需要判斷輸入是否大于0

3. 收斂速度遠快于sigmoid和tanh

同時他的缺點是:

1. ReLU的輸出不是zero-centered

2. Dead ReLU Problem,指的是某些神經元可能永遠不會被激活,導緻相應的參數永遠不能被更新。

激活函數是神經網絡裡一個比較大的主題,這裡隻是簡單的介紹了下。在後續的專題中我們會在更加詳細的介紹。 這裡涉及到的梯度彌散的問題,我們會在下一次的回報神經網絡中給大家介紹。

總結

------------------------------------------------------------------------------------------------

至此一個完整的簡單的前饋神經網絡就完成了。前饋神經網絡是最簡單的網絡,因為他沒有回報,回報是用來自我學習,也就是參數的自我修正,如果神經網絡網絡沒有這個自我學習的過程。那麼這個也就不能稱之為人工智能。

在下一次的篇幅裡,我們來說一說,回報神經網絡,包含一下内容:

1. 反向傳播的細節和簡單的推導

2. loss函數的簡單介紹

3. 梯度爆炸跟彌散

繼續閱讀