wordpress掛下載鏈接正規(guī)seo排名外包
多層感知機(jī) (Multilayer Perceptron, MLP)
通俗易懂算法
多層感知機(jī)(Multilayer Perceptron,MLP)是一種前饋人工神經(jīng)網(wǎng)絡(luò)。它的主要特點(diǎn)是由多層神經(jīng)元(或節(jié)點(diǎn))組成,包括至少一個(gè)隱藏層。MLP 是監(jiān)督學(xué)習(xí)的模型,常用于分類和回歸問(wèn)題。
組成部分
-
輸入層(Input Layer):接收輸入數(shù)據(jù)的特征。例如,如果我們有一個(gè)特征向量 x = [ x 1 , x 2 , … , x n ] \mathbf{x} = [x_1, x_2, \ldots, x_n] x=[x1?,x2?,…,xn?],那么輸入層就有 n n n 個(gè)節(jié)點(diǎn)。
-
隱藏層(Hidden Layer):包含一個(gè)或多個(gè)層的神經(jīng)元,每個(gè)神經(jīng)元執(zhí)行某種計(jì)算。隱藏層的每個(gè)神經(jīng)元都接收來(lái)自前一層的輸出,加權(quán)求和后應(yīng)用一個(gè)非線性激活函數(shù),這使得網(wǎng)絡(luò)能夠?qū)W習(xí)復(fù)雜的模式。
-
輸出層(Output Layer):生成最終預(yù)測(cè)結(jié)果。如果是分類問(wèn)題,例如二分類,通常使用 sigmoid 激活函數(shù);對(duì)于多分類問(wèn)題,則使用 softmax 激活函數(shù)。
前向傳播(Forward Propagation)
前向傳播是 MLP 中的核心步驟,在這一過(guò)程中每一層的神經(jīng)元接收輸入并計(jì)算輸出。對(duì)于隱藏層的某個(gè)神經(jīng)元 j j j,其輸入為來(lái)自前一層的輸出向量 h ( l ? 1 ) \mathbf{h}^{(l-1)} h(l?1),其輸出為:
z j ( l ) = ∑ i w j i ( l ) h i ( l ? 1 ) + b j ( l ) z_j^{(l)} = \sum_{i} w_{ji}^{(l)} h_i^{(l-1)} + b_j^{(l)} zj(l)?=i∑?wji(l)?hi(l?1)?+bj(l)?
其中:
- w j i ( l ) w_{ji}^{(l)} wji(l)? 是第 l l l 層中連接第 i i i 個(gè)神經(jīng)元到本層第 j j j 個(gè)神經(jīng)元的權(quán)重。
- b j ( l ) b_j^{(l)} bj(l)? 是本層第 j j j 個(gè)節(jié)點(diǎn)的偏置。
- h i ( l ? 1 ) h_i^{(l-1)} hi(l?1)? 是前一層第 i i i 個(gè)節(jié)點(diǎn)的輸出。
隱藏神經(jīng)元的輸出通過(guò)激活函數(shù)計(jì)算,如 sigmoid,ReLU 等:
h j ( l ) = ? ( z j ( l ) ) h_j^{(l)} = \phi(z_j^{(l)}) hj(l)?=?(zj(l)?)
其中 ? \phi ? 是激活函數(shù),例如:
- Sigmoid: ? ( z ) = 1 1 + e ? z \phi(z) = \frac{1}{1 + e^{-z}} ?(z)=1+e?z1?
- ReLU: ? ( z ) = max ? ( 0 , z ) \phi(z) = \max(0, z) ?(z)=max(0,z)
反向傳播(Backpropagation)
MLP 使用反向傳播算法來(lái)優(yōu)化模型參數(shù)(權(quán)重和偏置)。反向傳播通過(guò)計(jì)算損失函數(shù)的梯度來(lái)更新參數(shù),使得模型在給定數(shù)據(jù)上的預(yù)測(cè)誤差最小化。
常用的損失函數(shù)有:
- 對(duì)于回歸問(wèn)題:均方誤差(Mean Squared Error, MSE)。
- 對(duì)于分類問(wèn)題:交叉熵(Cross-Entropy Loss)。
權(quán)重的更新使用梯度下降算法:
w j i ( l ) : = w j i ( l ) ? η ? L ? w j i ( l ) w_{ji}^{(l)} := w_{ji}^{(l)} - \eta \frac{\partial \mathcal{L}}{\partial w_{ji}^{(l)}} wji(l)?:=wji(l)??η?wji(l)??L?
其中 η \eta η 是學(xué)習(xí)率, L \mathcal{L} L 是損失函數(shù)。
通過(guò)以上過(guò)程,MLP 學(xué)習(xí)到如何從輸入數(shù)據(jù)預(yù)測(cè)輸出,適用于各種復(fù)雜的學(xué)習(xí)問(wèn)題。MLP 常被用作深度學(xué)習(xí)的基礎(chǔ)模型,提供了理解神經(jīng)網(wǎng)絡(luò)的一個(gè)重要方式。
底層原理
多層感知機(jī)(MLP)是一種前饋神經(jīng)網(wǎng)絡(luò),是最簡(jiǎn)單的人工神經(jīng)網(wǎng)絡(luò),已經(jīng)被廣泛用于分類和回歸問(wèn)題。多層感知機(jī)由多個(gè)層組成,主要包括輸入層、一個(gè)或多個(gè)隱藏層和輸出層。
基本組成部分
-
輸入層(Input Layer): 接受外部輸入的特征向量,設(shè)輸入特征向量為 x = [ x 1 , x 2 , … , x n ] \mathbf{x} = [x_1, x_2, \ldots, x_n] x=[x1?,x2?,…,xn?]。
-
權(quán)重(Weights)和偏置(Biases): 每條連接都有一個(gè)權(quán)重 w i j w_{ij} wij?,每個(gè)神經(jīng)元還有一個(gè)偏置 b i b_i bi?。
-
激活函數(shù)(Activation Function): 每個(gè)隱藏層和輸出層的神經(jīng)元(即感知器)在計(jì)算加權(quán)和之后,都會(huì)通過(guò)一個(gè)非線性激活函數(shù) g ( ? ) g(\cdot) g(?)。
-
隱藏層(Hidden Layer): 對(duì)輸入數(shù)據(jù)進(jìn)行特征變換,通過(guò)加權(quán)和計(jì)算和激活函數(shù)應(yīng)用獲得輸出。
-
輸出層(Output Layer): 最后一層輸出用于生成最終預(yù)測(cè)結(jié)果。
數(shù)學(xué)原理
多層感知機(jī)的基本計(jì)算過(guò)程如下:
前向傳播(Forward Propagation)
給定輸入 x \mathbf{x} x:
-
隱藏層計(jì)算:對(duì)于每一個(gè)隱藏層神經(jīng)元 j j j,計(jì)算其輸入作為上一層輸出的一個(gè)加權(quán)和:
z j ( l ) = ∑ i w i j ( l ? 1 ) a i ( l ? 1 ) + b j ( l ) z^{(l)}_j = \sum_{i} w_{ij}^{(l-1)} a^{(l-1)}_i + b^{(l)}_j zj(l)?=i∑?wij(l?1)?ai(l?1)?+bj(l)?
其中 l l l 表示層數(shù), a i ( l ? 1 ) a^{(l-1)}_i ai(l?1)? 為第 l ? 1 l-1 l?1 層的第 i i i 個(gè)神經(jīng)元的輸出。
-
激活:應(yīng)用激活函數(shù)獲得輸出:
a j ( l ) = g ( z j ( l ) ) a^{(l)}_j = g(z^{(l)}_j) aj(l)?=g(zj(l)?)
常用的激活函數(shù)包括Sigmoid、ReLU、Tanh等。
-
輸出層計(jì)算:對(duì)于輸出層的每個(gè)神經(jīng)元,重復(fù)上述計(jì)算過(guò)程:
z k ( L ) = ∑ j w j k ( L ? 1 ) a j ( L ? 1 ) + b k ( L ) z^{(L)}_k = \sum_{j} w_{jk}^{(L-1)} a^{(L-1)}_j + b^{(L)}_k zk(L)?=j∑?wjk(L?1)?aj(L?1)?+bk(L)?
輸出層的激活函數(shù)常選擇線性變換(用于回歸)或者softmax(用于分類)。
損失函數(shù)(Loss Function)
常用的損失函數(shù)包括均方誤差(MSE)和交叉熵?fù)p失。例如,對(duì)于分類問(wèn)題,用交叉熵?fù)p失:
L = ? ∑ k y k log ? ( y ^ k ) \mathcal{L} = -\sum_{k} y_k \log(\hat{y}_k) L=?k∑?yk?log(y^?k?)
其中 y k y_k yk? 是真實(shí)標(biāo)簽, y ^ k \hat{y}_k y^?k? 是預(yù)測(cè)概率。
反向傳播(Backpropagation)
通過(guò)鏈?zhǔn)椒▌t計(jì)算損失對(duì)各層參數(shù)的梯度,并更新權(quán)重和偏置:
-
輸出誤差: 計(jì)算輸出層的誤差 δ ( L ) \delta^{(L)} δ(L)。
-
反向傳播誤差: 逐層向后傳播誤差:
δ ( l ) = ( w ( l ) ) ? δ ( l + 1 ) ? g ′ ( z ( l ) ) \delta^{(l)} = \left(w^{(l)}\right)^\top \delta^{(l+1)} \cdot g'(z^{(l)}) δ(l)=(w(l))?δ(l+1)?g′(z(l))
-
更新權(quán)重和偏置:
w i j ( l ) = w i j ( l ) ? η ? L ? w i j ( l ) w_{ij}^{(l)} = w_{ij}^{(l)} - \eta \frac{\partial \mathcal{L}}{\partial w_{ij}^{(l)}} wij(l)?=wij(l)??η?wij(l)??L?
b j ( l ) = b j ( l ) ? η ? L ? b j ( l ) b_j^{(l)} = b_j^{(l)} - \eta \frac{\partial \mathcal{L}}{\partial b_j^{(l)}} bj(l)?=bj(l)??η?bj(l)??L?
其中 η \eta η 是學(xué)習(xí)率。
總結(jié)
通過(guò)將輸入逐層轉(zhuǎn)換,加權(quán)求和并非線性化,可以讓多層感知機(jī)學(xué)習(xí)到數(shù)據(jù)的復(fù)雜模式。反向傳播算法是優(yōu)化參數(shù)的核心,通過(guò)梯度下降調(diào)整權(quán)重以降低損失函數(shù)值。
常用面試考點(diǎn)
多層感知機(jī)(Multilayer Perceptron,簡(jiǎn)稱MLP)是神經(jīng)網(wǎng)絡(luò)中的一種基本結(jié)構(gòu)。它一般由一層輸入層、一個(gè)或多個(gè)隱藏層、以及一層輸出層構(gòu)成。MLP是用于分類和回歸任務(wù)的常用算法,也是許多復(fù)雜神經(jīng)網(wǎng)絡(luò)架構(gòu)的基礎(chǔ)。以下是從常用面試考點(diǎn)層面對(duì)MLP的解釋。
1. 結(jié)構(gòu)
- 輸入層:接收輸入數(shù)據(jù),每個(gè)神經(jīng)元代表一個(gè)特征。
- 隱藏層:對(duì)輸入數(shù)據(jù)進(jìn)行非線性變換,通常使用激活函數(shù)。隱藏層可以有多個(gè)。
- 輸出層:生成最終預(yù)測(cè)結(jié)果,輸出層的形狀和激活函數(shù)取決于具體任務(wù)(如回歸或分類)。
2. 前向傳播(Forward Propagation)
在前向傳播階段,每一層的輸出是上一層的輸出經(jīng)過(guò)線性變換和非線性激活函數(shù)得到的。對(duì)于某一隱藏層 l l l,其輸出可以表示為:
z ( l ) = W ( l ) a ( l ? 1 ) + b ( l ) z^{(l)} = W^{(l)}a^{(l-1)} + b^{(l)} z(l)=W(l)a(l?1)+b(l)
這里, W ( l ) W^{(l)} W(l)是權(quán)重矩陣, b ( l ) b^{(l)} b(l)是偏置向量, a ( l ? 1 ) a^{(l-1)} a(l?1)是上一層的激活輸出。
激活函數(shù)通常選用非線性函數(shù),比如ReLU(Rectified Linear Unit):
a ( l ) = ReLU ( z ( l ) ) = max ? ( 0 , z ( l ) ) a^{(l)} = \text{ReLU}(z^{(l)}) = \max(0, z^{(l)}) a(l)=ReLU(z(l))=max(0,z(l))
對(duì)于輸出層,激活函數(shù)應(yīng)根據(jù)具體任務(wù)選擇,例如分類任務(wù)中的softmax函數(shù):
a i ( L ) = e z i ( L ) ∑ j e z j ( L ) a^{(L)}_i = \frac{e^{z^{(L)}_i}}{\sum_{j} e^{z^{(L)}_j}} ai(L)?=∑j?ezj(L)?ezi(L)??
3. 損失函數(shù)
MLP的目標(biāo)是最小化損失函數(shù)。對(duì)于分類問(wèn)題,常見(jiàn)的損失函數(shù)是交叉熵?fù)p失:
L = ? ∑ i y i log ? ( y ^ i ) \mathcal{L} = -\sum_{i} y_i \log(\hat{y}_i) L=?i∑?yi?log(y^?i?)
這里, y i y_i yi?是真實(shí)標(biāo)簽, y ^ i \hat{y}_i y^?i?是預(yù)測(cè)概率。
4. 反向傳播(Backpropagation)
反向傳播用于計(jì)算損失函數(shù)相對(duì)于每個(gè)權(quán)重的梯度,以應(yīng)用于梯度下降算法。對(duì)于每一層 l l l,我們有兩步:
-
計(jì)算輸出誤差:
對(duì)于輸出層:δ ( L ) = a ( L ) ? y \delta^{(L)} = a^{(L)} - y δ(L)=a(L)?y
對(duì)于隱藏層:
δ ( l ) = ( W ( l + 1 ) ) T δ ( l + 1 ) ? f ′ ( z ( l ) ) \delta^{(l)} = (W^{(l+1)})^T \delta^{(l+1)} \cdot f'(z^{(l)}) δ(l)=(W(l+1))Tδ(l+1)?f′(z(l))
這里, f ′ ( z ( l ) ) f'(z^{(l)}) f′(z(l))是激活函數(shù)的導(dǎo)數(shù)。
-
更新權(quán)重和偏置:
使用梯度下降法更新權(quán)重和偏置:
W ( l ) = W ( l ) ? η ? Δ W ( l ) W^{(l)} = W^{(l)} - \eta \cdot \Delta W^{(l)} W(l)=W(l)?η?ΔW(l)
b ( l ) = b ( l ) ? η ? Δ b ( l ) b^{(l)} = b^{(l)} - \eta \cdot \Delta b^{(l)} b(l)=b(l)?η?Δb(l)
其中, Δ W ( l ) = δ ( l ) ( a ( l ? 1 ) ) T \Delta W^{(l)} = \delta^{(l)} (a^{(l-1)})^T ΔW(l)=δ(l)(a(l?1))T, Δ b ( l ) = δ ( l ) \Delta b^{(l)} = \delta^{(l)} Δb(l)=δ(l), η \eta η是學(xué)習(xí)率。
5. 常用技巧
- 激活函數(shù)的選擇:通常選擇ReLU以及其變種(如Leaky ReLU)作為隱藏層的激活函數(shù)。
- 初始化:建議使用Xavier初始化或He初始化。
- 正則化:使用L2正則化或dropout來(lái)防止過(guò)擬合。
- 批量歸一化:可以加速訓(xùn)練和提高模型穩(wěn)定性。