學習多層感知機MLP的心得

2021-10-02 19:56:13 字數 1899 閱讀 8475

神經網路中一種模擬神經元(neuron)的結構,有輸入(input)、輸出(output)、權重(weight)、前饋運算(feed forward)、啟用函式(activation function)等部分。單層感知器能模擬邏輯與、邏輯或、邏輯非和邏輯與非等操作,但不能實現邏輯異或!

啟用函式可以表示為:

​其中 x 作為輸入, w 是對應輸入 x 的權重向量,b 為偏置,y是預期計算結果;通常把偏置b作為 w 中乙個值,增加乙個對應的模擬輸入 x ,使 x 恆等於1來模擬該表示式,方便矩陣運算。

括號中的數值加和稱作感知器的前饋運算,即還沒有進入啟用函式進行計算的結果,寫作logit或者logits。

表達公式

具體來說,給定乙個小批量樣本 x∈rn×d ,其批量大小為 n ,輸入個數為 d 。假設多層感知機只有乙個隱藏層,其中隱藏單元個數為 h 。記隱藏層的輸出(也稱為隱藏層變數或隱藏變數)為 h ,有 h∈rn×h 。因為隱藏層和輸出層均是全連線層,可以設隱藏層的權重引數和偏差引數分別為 wh∈rd×h 和 bh∈r1×h ,輸出層的權重和偏差引數分別為 wo∈rh×q 和 bo∈r1×q 。

我們先來看一種含單隱藏層的多層感知機的設計。其輸出 o∈rn×q 的計算為

ho=xwh+bh,=hwo+bo,

也就是將隱藏層的輸出直接作為輸出層的輸入。如果將以上兩個式子聯立起來,可以得到

o=(xwh+bh)wo+bo=xwhwo+bhwo+bo.

從聯立後的式子可以看出,雖然神經網路引入了隱藏層,卻依然等價於乙個單層神經網路:其中輸出層權重引數為 whwo ,偏差引數為 bhwo+bo 。不難發現,即便再新增更多的隱藏層,以上設計依然只能與僅含輸出層的單層神經網路等價。

感知機接收多個輸入訊號,輸出乙個訊號,上圖是乙個接收兩個輸入訊號的感知機的例子。 x1、 x2是輸入訊號,y是輸出訊號, w1、 w2是權重(w是weight的首字母)。圖中的○稱為「神經元」或者「節點」。輸入訊號被送往神經元時,會被分別乘以固定的權重(w1x1、 w2x2)。神經元會計算傳送過來的訊號的總和,只有當這個總和超過了某個界限值時,才會輸出1。這也稱為「神經元被啟用」 。這裡將這個界限值稱為閾值,用符號 θ表示。
相比於感知器,引入了隱層(hidden layer)概念;

隱層, 不包括輸入層和輸出層,在輸入層和輸出層中間的所有n層神經元就稱作隱層!通常輸入層不算作神經網路的一部分,

a) l層的每乙個神經元與 l-1 層的每乙個神經元的輸出相連;

b) l層的每乙個神經元互相沒有連線;

引入了新的非線性啟用函式(sigmoid/tanh等)

反向傳播演算法(back propagation)

優化演算法(梯度下降,隨機梯度下降,mini-batch)

關於啟用函式的選擇

relu函式是乙個通用的啟用函式,目前在大多數情況下使用。但是,relu函式只能在隱藏層中使用。

用於分類器時,sigmoid函式及其組合通常效果更好。由於梯度消失問題,有時要避免使用sigmoid和tanh函式。

在神經網路層數較多的時候,最好使用relu函式,relu函式比較簡單計算量少,而sigmoid和tanh函式計算量大很多。

在選擇啟用函式的時候可以先選用relu函式如果效果不理想可以嘗試其他啟用函式。

多層感知機

多層感知機就是含有至少乙個隱藏層的由全連線層組成的神經網路,且每個隱藏層的輸出通過啟用函式進行變換。多層感知機的層數和各隱藏層中隱藏單元個數都是超引數。以單隱藏層為例並沿用本節之前定義的符號,多層感知機按以下方式計算輸出:

ho=ϕ(xwh+bh),=hwo+bo,

多層感知機MLP

關於感知機 1.什麼是感知機 perceptron 感知機是最簡單的神經網路,具備神經網路的必備要素。感知機也稱為感知器,是一種雙層神經網路,即只有輸入層和輸出層而沒有隱層的神經網路。感知機是一種二類分類的線性分類器,其輸入為例項的特徵向量,輸出為例項的類別,感知機屬於判別模型,旨在求出將訓練資料進...

MLP 多層感知機網路

反向傳播神經網路是對非線性可微分函式進行權值訓練的多層網路,是前向神經網路的一種。比如,乙個三層bpn結構如下 由輸入層 隱含層和輸出層三層組成。其中每一層的單元與之相鄰層的所有單元連線,同一層的單元之間沒有連線。當一對學習樣本提供給網路後,神經元的啟用值從輸入層經各中間層向輸出層傳播,在輸出層的各...

keras多層感知機MLP

肯定有人要說什麼多層感知機,不就是幾個隱藏層連線在一起的嗎。話是這麼說,但是我覺得我們首先要自己承認自己高階,不然怎麼去說服 hu nong 別人呢 from keras.models import sequential from keras.layers import dense import n...