譯者 | 朱先忠
審校 | 重樓

簡介
多層感知機(MLP)——有時也稱為人工神經網絡(ANN)或前饋神經網絡(FNN)——是深度學習中最基礎、最強大的架構之一。其靈活的設計和卓越的性能使其成為解決各領域各種問題的首選算法。
此外,MLP是所有現代深度學習架構的核心構建塊——無論是CNN、RNN、LSTM還是Transformer。所有這些模型都可以被認為是MLP的專門版本,它們通過在其之上添加結構和約束來處理不同的問題。
在本文中,我們將深入探索MLP的迷人世界。我們將探討其開發背后的動機、架構、工作原理、局限性以及現代替代方案。本文的目標是幫助你建立強大的直覺和概念基礎,而不會讓你陷入繁重的數學知識中。
概括地講,我們將在本文探討如下內容:
- 為什么會有MLP?
- MLP到底是什么?它是如何從感知器演變而來的?
- MLP架構的核心組件是什么?
- MLP中的可訓練參數是什么(權重和偏差)?
- MLP如何通過前向和后向傳播進行工作?
- MLP的主要優勢是什么?
- MLP的局限性是什么?
- MLP何時有效,何時失效?讓我們開始吧!
先決條件
多層感知機(MLP)本質上是感知器的擴展,而感知器是第一個神經網絡。因此,在深入研究MLP之前,必須對感知器的架構和工作原理有深入的了解。
不過別擔心,我已經幫你搞定了!我寫了一篇專門的博客,詳細解釋了感知器,包括它的核心組件、功能和局限性:
(了解感知器是什么、它的組成部分、直覺、如何訓練以及它的局限性,為……鋪平了道路。)
閱讀此博客將為你提供堅實的基礎,并使你更容易理解如何構建MLP來處理復雜問題。
為什么MLP會出現?
1958年,一位名叫弗蘭克·羅森布拉特(Frank Rosenblatt)的研究人員受人腦神經元功能啟發,開發了一個數學模型。這是一個革命性的發展,因為它使我們能夠在機器中模擬人腦的智能,并標志著構建智能機器的第一步。該模型被命名為“感知器”。

圖片來源:Arion Das
感知器具有簡單的架構(如上圖所示):
- 輸入層充當門,將數據或輸入特征輸入系統。
- 權重表示每個輸入在確定最終決策時的重要性。
- 輸出層通過執行以下兩個操作來處理輸入以生成最終輸出:1)首先,通過對輸入進行加權和形成線性決策邊界來整理存儲在輸入中的信息;2)其次,將加權和通過步進激活函數,將其轉換為有意義的輸出。感知器也被稱為單層感知器,因為它僅由一個計算層(輸出層)組成,而輸入層僅將特征傳遞到系統中而不進行任何處理。
感知器最初引起了極大的轟動。但隨著研究人員開始將其應用于實際問題,他們發現了一些嚴重的局限性,阻礙了它發揮其潛力。盡管取得了突破性的進展,感知器在一些關鍵領域仍舉步維艱。其主要問題如下: - 由于它只能將數據點分為兩類,因此它只能處理二分類問題。這使得它限制性太強,無法在多類分類或回歸問題中使用。
- 它僅包含一個計算層(輸出層),用于處理輸入并產生輸出。這種過于簡單的架構不足以捕捉數據中復雜的非線性關系或層次模式。
- 它只能處理線性可分數據——即可以用直線或平面分離的數據。但它在處理非線性可分數據(即數據點無法通過線性邊界分離)時卻慘敗。在這種情況下,感知器永遠不會收斂,導致權重無休止地更新而無法得到解。
- 感知器生成的決策邊界并不能保證是最優的。不同的訓練運行可能會根據權重初始化和數據點的順序生成不同的邊界。此外,也沒有可靠的方法來衡量所選邊界的實際效果。盡管這種感知技術堪稱革命性理念,但它仍然受到自身局限性的影響。但研究人員并沒有止步于此。他們決心克服這些缺陷,不斷前行,最終在20世紀80年代中期,隨著多層感知機(MLP)的出現,他們的堅持終于得到了回報。
什么是MLP、它如何從感知器演變而來?
20世紀80年代中期,多層感知機(MLP)作為感知器的擴展被引入,其設計初衷是為了克服感知器的缺點。為了將感知器轉變為更強大的多層感知機(MLP),研究人員通過解決其局限性引入了以下關鍵增強功能:
增強功能1:捕捉非線性決策邊界
感知器的簡單架構只能產生單一的線性決策邊界,限制了其捕捉復雜非線性模式的能力。
為了克服這一限制,研究人員開始另辟蹊徑:與其依賴單一的直線決策邊界,不如生成多個線性邊界,并將它們智能地組合起來,形成一個平滑的曲面決策面,結果會怎樣呢?這種曲面邊界能夠捕捉非線性數據的本質,解決簡單感知器無法解決的問題。
步驟1:為了實現這個想法,研究人員首先將多個感知器堆疊在一起,以創建多個線性邊界。例如,對于僅包含兩個輸入特征的數據集,他們使用兩個感知器而不是一個。每個感知器都形成自己的線性決策邊界——每個邊界捕捉數據集的不同方面,如下圖所示:

圖片來源:湯姆·阿爾康
步驟2:下一個挑戰是如何將這些單獨的邊界合并成一個彎曲的邊界?這個問題通過添加另一個感知器來解決,該感知器將前兩個感知器的輸出作為其輸入。
但由于線性函數的線性組合仍然是線性的,我們必須首先將非線性激活函數(例如Sigmoid、ReLU或tanh)應用于這些感知器的輸出。
經過這種轉換后,下一層感知器可以組合它們的信息來產生合并的輸出,從而產生更復雜的決策邊界,準確捕捉數據中的底層模式(如下圖所示的彎曲邊界)。

圖片來源:湯姆·阿爾康
這種堆疊設計后來被稱為多層感知機(MLP)。顧名思義,MLP通過將多個感知器排列成多層來擴展基本感知器,其中每層的輸出成為下一層的輸入。低級感知器充當特征提取器,學習不同的線性邊界,而高級感知器則將這些輸出整合起來,形成可以模擬復雜非線性關系的曲線決策邊界。
增強功能2:擴展到多類分類和回歸
原始感知器的另一個主要限制是其對二分類問題的適用性有限。由于它依賴階躍函數作為激活函數,因此只能將數據分成兩類。
研究人員很快意識到,為輸出層選擇合適的激活函數可以使MLP解決各種各樣的任務,例如用于二元分類的S型激活、用于多類分類的SoftMax或用于回歸的線性激活。
增強功能3:使用優化器進行損失函數優化
原始感知器的另一個關鍵限制是,它每次訓練時都會創建不同的決策方案。這是因為它從隨機權重開始,而它查看訓練樣本的順序會影響它調整權重的方式。此外,沒有明確的方法來衡量它找到的邊界是否真的是最佳邊界。它只能知道每個點是否被正確分類,但無法評估分離的整體質量。
通過定義一個損失函數來量化預測誤差,以衡量網絡的整體性能,解決了這一限制。然后,網絡使用梯度下降等優化器,逐步調整所有權重,以減少誤差。通過這種方式,網絡能夠持續找到最佳的決策邊界,從而使MLP能夠更可靠地捕捉數據中的底層模式。
MLP架構——構建模塊

圖片來源:AIML.com
激活函數的演變,結合分層架構和損失函數的優化,將單層感知器轉變為多層感知機——一種能夠捕捉非線性模式并解決分類和回歸問題的模型。最終的MLP架構的核心組件包括:
輸入層
輸入層充當原始數據的入口。此層不執行任何計算,只是將數據饋送到網絡。例如,在信用卡欺詐檢測系統中,交易金額、地點和時間等特征通過此層輸入模型。
隱藏單元
堆疊在輸入層和輸出層之間的感知器被稱為隱藏單元、節點或神經元。每個隱藏單元都是一個感知器,包含兩個關鍵組件,用于執行兩個主要操作:
- 求和:使用形成線性方程的求和函數計算輸入的加權和。
- 激活:將加權和通過激活函數(例如ReLU、sigmoid、tanh等)引入系統非線性。
隱藏層(一個或多個)
堆疊多個隱藏單元后形成的層稱為隱藏層,它們位于輸入層和輸出層之間。隱藏層是真正的游戲規則改變者,因為它們負責處理MLP中的所有處理。它們使網絡能夠超越簡單的線性數據模式,學習數據中高度復雜的非線性模式。
輸出層
輸出層是MLP架構的最后一層。它由感知器組成,這些感知器將最后一個隱藏層的結果組合起來,產生最終的預測。該層中的每個感知器還包含兩個關鍵組件:
- 求和:計算最后一個隱藏層節點的輸出的加權和,形成非線性決策邊界。
- 激活:將加權和通過激活函數(例如ReLU、sigmoid或tanh)來產生最終輸出或預測。輸出層的節點數以及激活函數取決于問題類型:
- 二元分類:具有S形激活的單個節點。
- 多類分類:具有SoftMax激活函數的多個節點,其中節點數等于數據中的類別數。
- 回歸:具有線性激活的單個節點。
請注意,在計算MLP系統的層數時,我們僅包含隱藏層和輸出層。輸入層不計算在內,因為它不執行任何計算,它只是將數據輸入網絡。例如,如果一個模型有一個隱藏層和一個輸出層,則無論每層有多少個神經元,它都被稱為2層MLP。
MLP的可訓練參數:權重和偏差
在感知器中,每個輸入都會乘以一個權重,該權重表示該輸入對最終預測的重要性。較大的權重會使輸入更具影響力,而較小的權重或負權重則會降低甚至抵消其影響。此外,每個感知器還有一個偏置項,通過移動決策邊界來提高模型的靈活性。
多層感知機(MLP)本質上是多層堆疊的感知器的集合。網絡中的每個感知器都有各自的權重和偏差。與單個感知器一樣,這些權重和偏差無需手動設置,而是由網絡在訓練過程中學習而來。由于這些值會在整個訓練過程中更新,因此它們統稱為可訓練參數。
MLP架構中可訓練參數的總數是通過對網絡中所有感知器的權重和偏差進行求和來計算的——計算每一層的權重和偏差并將它們相加。
對于MLP網絡中的每個感知器
對于單個感知器,權重的數量等于輸入的數量,因為每個輸入都有由感知器分配的權重。此外,每個感知器都附加一個偏差,以增加決策邊界的靈活性。

示例:具有兩個輸入的感知器有3個可訓練參數——2個權重和1個偏差。
對于MLP網絡中的每一層
在具有多個感知器的層中,可訓練參數取決于該層的輸入數量和該層中感知器的數量。
對于整個MLP網絡
網絡中總的可訓練參數是通過對所有層的參數求和得到的:

例子
考慮一個具有2個輸入、1個帶有2個節點的隱藏層和1個帶有1個節點的輸出層的MLP。
- (從輸入到隱藏層)由于隱藏層有兩個輸入和兩個感知器,因此該層的總可訓練參數為:2(輸入)×2(隱藏節點)+2(偏差)=6
- (從隱藏層到輸出層)由于這一層有一個感知器,并且有2個輸入(來自隱藏層的兩個感知器的輸出),因此這一層的總可訓練參數為:2(隱藏輸出)×1(輸出節點)+1(偏差)=3
- (總可訓練參數)該MLP架構的總可訓練參數是其各層參數的總和:6(隱藏層)+3(輸出層)=9
MLP的工作原理
為了理解多層感知機(MLP)的內部功能,我們需要將其分為兩個關鍵方面:
- 模型如何生成預測
- 模型如何學習或訓練通過將輸入數據傳遞到網絡來產生預測的過程稱為前向傳播。另一方面,調整模型參數以最小化誤差(或損失)的過程稱為反向傳播。
在本節中,我們將深入研究前向傳播和反向傳播,以了解MLP的實際工作原理。
示例設置:學生入學預測
讓我們考慮一個簡單的二元分類任務,根據兩個輸入(CGPA和IQ)預測學生是否會被安置,我們選擇的MLP架構是:
- 具有2個節點的輸入層(x?=CGPA和x?=IQ)
- 具有2個節點的隱藏層
- 具有1個節點和S形激活的輸出層(輸出放置概率)
前向傳播:MLP如何進行預測

圖片來源:AIML.com
以下內容將描述數據如何流經網絡以產生最終的預測(如上圖所示):
步驟1:輸入進入網絡
網絡通過輸入層接收輸入。在我們的示例中,輸入為:x?= CGPA & x?= IQ。
步驟2:輸入層到隱藏層
然后,輸入(x?和x?)被傳遞到隱藏層的每個神經元。每個神經元接受這些輸入,應用其自身的重要性權重并計算加權和:

一旦每個神經元都有了綜合分數,它就會通過激活函數將這些輸出轉換為引入非線性。

兩個隱藏神經元獨立形成兩個“決策邊界”(z?和z?),并根據輸入的組合方式生成兩個輸出(a?和a?)。
步驟3:隱藏層到輸出層
隱藏層神經元(a?和a?)的輸出成為輸出層神經元的輸入。輸出層神經元計算這些輸入的加權和,然后應用S型激活函數產生最終輸出。

步驟4:最終預測
輸出層給出的最終輸出是最終預測,在這種情況下是一個概率(0到1),因為我們使用了S型激活函數,它將任何實數轉換為0到1之間的值。

總而言之,在正向傳播過程中,輸入逐層流經網絡。每個神經元應用其權重和激活函數來轉換數據,并將結果傳遞到下一層。這個循序漸進的過程使網絡能夠組合和解釋輸入,最終以概率形式生成最終預測——這說明了MLP如何進行決策。
反向傳播:MLP如何從錯誤中學習


圖片來源:AIML.com
訓練多層感知機(MLP)的目標是找到其可訓練參數(權重和偏差)的最優值,以使模型的預測盡可能接近實際結果。該過程可以分為以下步驟:
步驟1:隨機參數初始化和前向傳播
訓練從為所有權重和偏差分配隨機值開始。這些初始值允許網絡通過前向傳播生成預測,其中輸入使用當前參數和激活函數逐層轉換。
步驟2:將預測與實際結果進行比較
一旦生成預測,網絡就會通過將預測值與真實值進行比較來計算損失(或預測誤差)。損失函數量化了預測與實際結果的偏差。
步驟3:測量每個參數對預測誤差的貢獻
網絡分析每個權重和偏差對損失的影響程度。利用梯度(損失函數相對于每個參數的斜率),網絡確定減少誤差所需的調整方向和幅度。
步驟4:更新參數
優化器(例如梯度下降)會根據確定的方向略微調整權重和偏差。此更新旨在降低損失,逐步改善網絡的預測。
步驟5:迭代多個時期
從正向傳播到損失計算,再到反向傳播,最后到參數更新,這個循環會在許多訓練樣本和多個迭代周期中重復進行。隨著每次迭代,網絡逐漸學習數據中的潛在模式,并持續訓練直至模型收斂。
總而言之,前向傳播是關于進行預測,而反向傳播是關于從錯誤中學習。理解這個循環可以讓你更清晰地理解MLP的訓練,并為探索高級神經網絡奠定基礎。
MLP的主要優勢是什么?
MLP的分層架構具有以下主要優勢,使其成為解決實際挑戰的可靠選擇:
- 捕捉復雜模式:與感知器或其他線性模型不同,多層感知機(MLP)可以捕捉并建模輸入和輸出之間復雜的非線性關系。它們能夠有效地處理數據非線性可分的問題,使其更加強大,更適用于現實世界的情況。
- 復雜任務的高精度:由于能夠捕捉非線性模式,MLP通常比邏輯回歸或單層感知器等簡單模型實現更高的預測精度。
- 處理多個輸入和輸出:MLP的優勢之一是它能夠同時處理多個輸入,并在需要時產生多個輸出。這種靈活性使得MLP在現實世界中非常有用,因為決策通常取決于多種因素的組合,而不僅僅是單一因素。
- 自動特征提取:MLP可以通過隱藏層高效地學習數據的分層表示。這意味著它們可以自動提取有意義的特征,從而減少大量手動特征工程的需要。
- 廣泛適用性:MLP極其靈活,可應用于各種各樣的問題。它們在分類和回歸任務、模式識別甚至時間序列預測方面都表現出色。這種適應各種不同場景的能力使MLP成為機器學習中的首選模型,尤其是在你需要一種能夠應對各種挑戰的技術時。總而言之,MLP提供了強大的功能組合。它們可以捕捉復雜的非線性模式,在高難度任務中提供高精度,處理多個輸入和輸出,甚至可以自動提取有用的特征。它們廣泛適用于不同類型的問題,使其成為機器學習中最通用、最實用的模型之一。
MLP的局限性是什么?
雖然MLP功能強大,但它們也存在一些局限性。在決定MLP是否適合特定問題時,了解這些局限性至關重要。以下是使用MLP時經常遇到的一些關鍵限制:
- 大數據需求:由于其分層架構,MLP通常包含大量可訓練參數(權重和偏差)。為了有效地調整這些參數并避免性能不佳,它們需要大量帶標簽的訓練數據。如果數據有限,網絡可能難以學習到有意義的模式。
- 計算成本高昂:訓練MLP可能速度緩慢且耗費資源,尤其是在層數和神經元數量增加的情況下。優化如此多的參數通常需要GPU或TPU等專用硬件,才能在合理的時間內完成訓練。
- 黑箱特性:與線性或基于樹的模型不同,多層感知機(MLP)常常被批評難以解釋。理解模型做出特定預測的原因并非易事,這在醫療保健或金融等可解釋性至關重要的領域可能是一個挑戰。
- 容易過度擬合:由于數據有限,MLP很容易在訓練示例上過度擬合,導致在看不見的示例上表現不佳。
- 對于非結構化或順序數據來說并不理想:盡管MLP在技術上可以處理任何輸入數據類型,但對于非結構化數據(如圖像、文本)或順序數據(如時間序列)來說,它們并不是最有效的選擇。了解這些限制可以幫助你決定何時使用MLP以及何時探索更合適的替代方案。
何時使用MLP,何時不應使用MLP?
現在,我們已經探討了MLP的優缺點,那么最大的問題是:你真的應該用它來解決你的問題嗎?在投入時間構建和訓練MLP之前,一些簡單的經驗法則可以幫助你判斷它是否是合適的工具。
如果出現以下情況,請使用MLP:
- 你正在使用大型表格數據集。
- 你的數據中的關系是高度非線性的。
- 你擁有訓練深度MLP所需的計算架構。
- 你的目標是做出準確的預測而不是解釋模型結果。
如果出現以下情況,請避免使用MLP:
- 你正在使用容易過度擬合的小型數據集。
- 數據中的關系大多是線性的,簡單的模型就足夠了。
- 可解釋性——做出決定的原因與決定本身一樣重要——對你來說至關重要。
- 你正在處理有限的計算資源。
- 你的數據非常稀疏或包含多個分類特征。
- 你的數據具有很強的序列或空間模式,如圖像、文本或時間序列數據。
簡而言之,當你擁有龐大、復雜、非線性的數據集,并且準確性比可解釋性更重要時,MLP會大放異彩。但當數據規模較小、關系簡單,或者可解釋性和效率更重要時,更簡單或更專業的模型通常會表現得更好。
結論
總之,MLP彌合了簡單感知器與現代深度學習之間的差距,使我們能夠建模復雜的非線性關系。然而,MLP并非沒有缺點,尤其是與更高級的模型相比時。因此,關鍵在于了解MLP何時是合適的工具,以及何時應該超越它們。構建這個基礎不僅有助于實際應用,還能讓我們更容易理解更高級的神經網絡。
譯者介紹
朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。
原文標題:Deep Learning Specialization: Understanding Multi-Layer Perceptron (MLP) Inside Out,作者:Damini Saini



























