一、感知機
對于分類問題,我們設定一個映射,將x通過函數f(x)映射到y
1. 感知機的基本結構
感知機(Perceptron)是最早期的神經網絡模型,由 Rosenblatt 在 1958 年提出,是現代神經網絡和深度學習模型的雛形。
其模擬的是人腦內的神經元。神經元會接受到一些信號(我們給到模型的輸入),之后神經元會決定是否激活這個信號,如果需要激活,就會產生一些神經沖動(Nerve Impulses),將信息傳播到下一個鏈接。從而完成了信息端到端的傳遞。
在深度學習中,其定義如下
基本結構如下:
- 輸入向量 x = [ x 1 , x 2 , . . . , x d ] \mathbf{x} = [x_1, x_2, ..., x_d] x=[x1?,x2?,...,xd?]
- 權重向量 w = [ w 1 , w 2 , . . . , w d ] \mathbf{w} = [w_1, w_2, ..., w_d] w=[w1?,w2?,...,wd?]
- 偏置項 b b b
- 輸出函數: o = sign ( w ? x + b ) o = \text{sign}(\mathbf{w}^\top \mathbf{x} + b) o=sign(w?x+b)
sign ( s ) = { + 1 , s ≥ 0 ? 1 , s < 0 \text{sign}(s) = \begin{cases} +1, & s \geq 0 \\\\ -1, & s < 0 \end{cases} sign(s)=? ? ??+1,?1,?s≥0s<0?
這是一個線性分類器,決策邊界是一個超平面。
2. 感知機的數學定義與決策規則
感知機的核心是對輸入的加權求和,并加上一個偏置項 b b b,用于輸出一個實值:
y ^ = ∑ i = 1 d w i x i + b = w ? x + b \hat{y} = \sum_{i=1}^{d} w_i x_i + b = \mathbf{w}^\top \mathbf{x} + b y^?=i=1∑d?wi?xi?+b=w?x+b
其中:
- y ^ \hat{y} y^?:神經元對期望輸出的估計(輸出值)
- w \mathbf{w} w:權重向量(weight vector)
- x \mathbf{x} x:輸入向量(input vector)
- b b b:偏置項(bias)
決策規則(Decision Rule)
感知機的最終分類結果是通過符號函數決定的:
o = sign ( y ^ ) = { + 1 , y ^ ≥ 0 ? 1 , y ^ < 0 o = \text{sign}(\hat{y}) = \begin{cases} +1, & \hat{y} \geq 0 \\\\ -1, & \hat{y} < 0 \end{cases} o=sign(y^?)=? ? ??+1,?1,?y^?≥0y^?<0?
這個函數將連續輸出 y ^ \hat{y} y^? 映射到離散類別 { + 1 , ? 1 } \{+1, -1\} {+1,?1}。
分類條件判斷
感知機判斷一個樣本是否被正確分類,依據如下公式:
- 如果樣本分類正確,則:
y ( w ? x + b ) ≥ 0 y(\mathbf{w}^\top \mathbf{x} + b) \geq 0 y(w?x+b)≥0
- 否則(分類錯誤):
y ( w ? x + b ) < 0 y(\mathbf{w}^\top \mathbf{x} + b) < 0 y(w?x+b)<0
這里的 y y y 是樣本的真實標簽(取值為 +1 或 -1)。這個不等式體現了分類面的位置是否與樣本標簽方向一致。
對于一個訓練樣本 ( x i , y i ) (\mathbf{x}_i, y_i) (xi?,yi?):
- 如果分類正確: y i ( w ? x i + b ) ≥ 0 y_i(\mathbf{w}^\top \mathbf{x}_i + b) \geq 0 yi?(w?xi?+b)≥0
- 否則分類錯誤。
直觀理解:
y 表示 ground truth 真實標簽
( w ? x i + b ) (\mathbf{w}^\top \mathbf{x}_i + b) (w?xi?+b) 表示 y ^ \hat{y} y^? 即模型預測標簽
而sign函數,把預測值分為了兩個:+1,-1
因此預測正確的情況有兩種:(+1, +1) 或者 (-1, -1) 這兩種情況二者的乘積都是 >0
預測錯誤的情況: (+1, -1) 或者 (-1, +1) 這兩種情況的乘積 < 0
感知機的損失函數僅考慮錯誤分類的樣本:
m i n L ( w , b ) = ? ∑ i ∈ M y i ( w ? x i + b ) min L(\mathbf{w}, b) = -\sum_{i \in \mathcal{M}} y_i (\mathbf{w}^\top \mathbf{x}_i + b) minL(w,b)=?i∈M∑?yi?(w?xi?+b)
其中 M \mathcal{M} M 是錯誤分類樣本的集合。
為什么有個負號? 按照原始的公式定義, ∑ i ∈ M y i ( w ? x i + b ) \sum_{i \in \mathcal{M}} y_i (\mathbf{w}^\top \mathbf{x}_i + b) ∑i∈M?yi?(w?xi?+b) 的最大值才是我們的優化目標。
此時的乘積是一種分類邊界距離的粗略估計,但并不適用于衡量回歸或概率分布的“誤差大小”。 (因此不能用誤差大小的思路來想。)
說回負號,在機器學習中,我們習慣用**最小化(minimization)**問題來構造損失函數,也方便求導。
優化器SGD、Adam等是梯度下降,適配最小化的loss函數
3. 優化算法:梯度下降
通過求偏導得到:
- 權重更新: ? w L = ? ∑ i ∈ M y i x i \nabla_\mathbf{w} L = - \sum_{i \in \mathcal{M}} y_i \mathbf{x}_i ?w?L=?∑i∈M?yi?xi?
- 偏置更新: ? b L = ? ∑ i ∈ M y i \nabla_b L = - \sum_{i \in \mathcal{M}} y_i ?b?L=?∑i∈M?yi?
偏導后得到的是梯度,同時包含“變化的方向”與“變化的速率”
每次迭代更新:
w ← w + η y i x i , b ← b + η y i \mathbf{w} \leftarrow \mathbf{w} + \eta y_i \mathbf{x}_i, \quad b \leftarrow b + \eta y_i w←w+ηyi?xi?,b←b+ηyi?
具體而言 ? w L = ? ∑ i ∈ M y i x i \nabla_\mathbf{w} L = - \sum_{i \in \mathcal{M}} y_i \mathbf{x}_i ?w?L=?∑i∈M?yi?xi? 告訴我們:朝著這個方向,損失上升最快
所以我們應該:
w ← w ? η ? w L \mathbf{w} \leftarrow \mathbf{w} - \eta \nabla_\mathbf{w}L w←w?η?w?L
來減小損失
4. 激活函數:Sign 函數
g ( x ) = sign ( w ? x + b ) g(\mathbf{x}) = \text{sign}(\mathbf{w}^\top \mathbf{x} + b) g(x)=sign(w?x+b)
定義如下:
sign ( s ) = { + 1 , s ≥ 0 ? 1 , s < 0 \text{sign}(s) = \begin{cases} +1, & s \geq 0 \\\\ -1, & s < 0 \end{cases} sign(s)=? ? ??+1,?1,?s≥0s<0?
5. 感知機的局限性
- 感知機無法處理非線性可分問題。
- 經典反例:XOR 任務。
x1 | x2 | y (XOR) |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
線性模型無法分割這兩類。
6. AI 寒冬與轉折點
- Minsky 與 Papert 在《Perceptrons》中指出感知機的局限,引發“AI寒冬”。
二、多層感知機(MLP)與非線性建模
1. 多層網絡結構
1986年,Hinton 等人提出反向傳播算法(Backpropagation):
- 支持隱藏層訓練
- 支持非線性組合
組成: 輸入層 → 隱藏層 → 輸出層
2. 網絡表示為函數復合
y = f ( L ) ( … f ( 2 ) ( f ( 1 ) ( x ) ) ) y = f^{(L)}(\dots f^{(2)}(f^{(1)}(x))) y=f(L)(…f(2)(f(1)(x)))
對應結構是一個有向無環圖(DAG),每層將上一層的輸出作為輸入。
3. 非線性激活函數
激活函數必須非線性,否則多層仍等效于單層。
常見激活函數:
-
Sigmoid: f ( s ) = 1 1 + e ? s f(s) = \frac{1}{1 + e^{-s}} f(s)=1+e?s1?
-
Tanh: f ( s ) = e s ? e ? s e s + e ? s f(s) = \frac{e^s - e^{-s}}{e^s + e^{-s}} f(s)=es+e?ses?e?s?
-
ReLU: f ( s ) = max ? ( 0 , s ) f(s) = \max(0, s) f(s)=max(0,s)
-
Leaky ReLU:
f ( s ) = { s , s ≥ 0 α s , s < 0 f(s) = \begin{cases} s, & s \geq 0 \\\\ \alpha s, & s < 0 \end{cases} f(s)=? ? ??s,αs,?s≥0s<0? -
GELU: 使用高斯誤差函數的平滑激活
4. 通用逼近定理(Universal Approximation Theorem)
通用逼近定理是神經網絡理論的核心之一。它說明:
只要一個前饋神經網絡具有單隱藏層,且隱藏單元數量足夠多,它就能以任意精度逼近任何連續函數。
數學表述
設激活函數 f ( ? ) f(\cdot) f(?) 是一個非常數、有界、單調遞增的連續函數。
定義 I m = [ 0 , 1 ] m I_m = [0,1]^m Im?=[0,1]m 表示 m m m 維單位超立方體, C ( I m ) C(I_m) C(Im?) 表示定義在 I m I_m Im? 上的所有連續函數的集合。
則對于任意 ε > 0 \varepsilon > 0 ε>0 和任意函數 F ∈ C ( I m ) F \in C(I_m) F∈C(Im?),總存在整數 N N N、實數 v i , b i ∈ R v_i, b_i \in \mathbb{R} vi?,bi?∈R 和向量 w i ∈ R m \mathbf{w}_i \in \mathbb{R}^m wi?∈Rm,使得:
F ^ ( x ) = ∑ i = 1 N v i f ( w i ? x + b i ) \hat{F}(x) = \sum_{i=1}^{N} v_i f(\mathbf{w}_i^\top \mathbf{x} + b_i) F^(x)=i=1∑N?vi?f(wi??x+bi?)
滿足:
∣ F ^ ( x ) ? F ( x ) ∣ < ε , ? x ∈ I m \left| \hat{F}(x) - F(x) \right| < \varepsilon, \quad \forall x \in I_m ?F^(x)?F(x) ?<ε,?x∈Im?
即函數 F ^ ( x ) \hat{F}(x) F^(x) 可以任意逼近 F ( x ) F(x) F(x)。
直觀解釋
- 神經網絡可以通過一個隱藏層 + 足夠多的神經元來逼近任何連續函數
- 每個隱藏神經元做一個線性變換 + 激活函數(如 Sigmoid 或 Tanh)
- 輸出層再對它們加權求和,實現對復雜函數的擬合
實際意義
項目 | 說明 |
---|---|
所需層數 | 僅需單隱藏層(前饋) |
所需神經元 | 足夠多即可,不一定很深 |
所逼近的函數 | 任何連續函數(理論上) |
激活函數要求 | 非常數、有界、單調遞增、連續 |
引用
Universality Theorem (Hecht-Nielsen, 1989):
“Neural networks with a single hidden layer can be used to approximate any continuous function to any desired precision.”
5. 可視化解釋(單輸入 → 單輸出)
- 增加權重 → 激活函數更陡峭
- 改變偏置 → 平移激活區域(會移動圖形,但不會改變圖形的形狀。)
- 組合多個隱藏神經元 → 構造階躍、凸包、塔型結構等更復雜函數
在二維輸入時,通過構建多個線性超平面與組合,網絡可以學習更復雜的輸入空間劃分。
6. 激活函數的作用與常見形式
激活函數是神經元中引入非線性的關鍵部分,它決定了每個神經元的響應形式。
必須是非線性的:否則就等同于線性分類器
幾乎處處連續且可微 ; 單調性:否則會在誤差面引入額外的局部極值
比如 sin 函數就不可以作為激活函數,因為有多個局部極值,不符合單調性。
激活函數的基本結構
一個神經元的輸出形式如下:
a = f ( w ? x + b ) a = f(w^\top x + b) a=f(w?x+b)
其中:
- f f f 是激活函數
- w ? x + b w^\top x + b w?x+b 是線性部分,決定輸入的加權求和和偏移
激活函數 f ( ? ) f(\cdot) f(?) 的引入,使得神經網絡具備學習非線性關系的能力。
常見激活函數
1. Sigmoid(S型函數)
f ( x ) = 1 1 + e ? x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+e?x1?
-
輸出范圍: ( 0 , 1 ) (0, 1) (0,1)
-
常用于早期網絡、概率建模
-
缺點:梯度容易消失、飽和區間較大
2. Tanh(雙曲正切)
f ( x ) = e x ? e ? x e x + e ? x = 2 ? sigmoid ( 2 x ) ? 1 f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} = 2 \cdot \text{sigmoid}(2x) - 1 f(x)=ex+e?xex?e?x?=2?sigmoid(2x)?1
- 輸出范圍: ( ? 1 , 1 ) (-1, 1) (?1,1)
- 中心化特性優于 sigmoid,訓練更穩定
3. ReLU(Rectified Linear Unit)
f ( x ) = max ? ( 0 , x ) f(x) = \max(0, x) f(x)=max(0,x)
- 當前主流激活函數
- 計算簡單,不飽和區域梯度穩定
- 缺點:負區間完全為零(神經元死亡)
4. Leaky ReLU
f ( x ) = { x , x ≥ 0 α x , x < 0 f(x) = \begin{cases} x, & x \geq 0 \\ \alpha x, & x < 0 \end{cases} f(x)={x,αx,?x≥0x<0?
-
彌補 ReLU 在負區間完全為 0 的問題
-
α \alpha α 是一個很小的正數(如 0.01)
5. GELU(Gaussian Error Linear Unit)
f ( x ) = x ? Φ ( x ) f(x) = x \cdot \Phi(x) f(x)=x?Φ(x)
其中 Φ ( x ) \Phi(x) Φ(x) 是標準正態分布的累積分布函數。
- 更平滑的 ReLU 變體
- 被用于 BERT、GPT 等大模型中
激活函數的可視化與作用
- 權重 w w w 控制曲線的陡峭程度(斜率)
- 偏置 b b b 控制曲線在輸入空間的位置(左右平移)
- 激活函數本身決定了形狀(階躍、平滑、非線性)
舉例說明:
- f ( w x + b ) f(wx + b) f(wx+b) 中改變 w w w 會使 Sigmoid 更陡或更平緩
- 改變 b b b 會讓激活區間左移或右移
但注意:
偏置 b b b 不會改變激活函數的形狀,只是移動它的激活位置。
而組合多個神經元后,整個網絡的輸出函數形狀就可以被靈活控制,例如拼接成階梯函數、塔函數等復雜結構。
7. 反向傳播與激活函數的梯度問題
在神經網絡訓練中,我們通過最小化損失函數來更新權重和偏置,這一過程依賴于反向傳播算法(Backpropagation)。
反向傳播的核心思想是利用鏈式法則計算每一層參數對損失函數的梯度。
鏈式法則回顧
對于復合函數:
L = f ( g ( x ) ) ? d L d x = f ′ ( g ( x ) ) ? g ′ ( x ) L = f(g(x)) \Rightarrow \frac{dL}{dx} = f'(g(x)) \cdot g'(x) L=f(g(x))?dxdL?=f′(g(x))?g′(x)
在神經網絡中每一層都相當于一次嵌套函數變換,因而可以通過鏈式法則將梯度從輸出層反傳至輸入層。
激活函數對梯度的影響
梯度的傳播會經過每一層的激活函數:
- 若激活函數的導數為零或極小(如 sigmoid 飽和區),則梯度容易消失
- 若激活函數導數過大或不連續,可能造成不穩定訓練(如 ReLU 的斷點)
各類激活函數的導數
-
Sigmoid:
f ′ ( x ) = f ( x ) ( 1 ? f ( x ) ) f'(x) = f(x)(1 - f(x)) f′(x)=f(x)(1?f(x))
→ 導數最大為 0.25,容易出現梯度消失 -
Tanh:
f ′ ( x ) = 1 ? f ( x ) 2 f'(x) = 1 - f(x)^2 f′(x)=1?f(x)2
→ 比 sigmoid 好,但也有飽和區 -
ReLU:
f ′ ( x ) = { 1 , x > 0 0 , x ≤ 0 f'(x) = \begin{cases} 1, & x > 0 \\ 0, & x \leq 0 \end{cases} f′(x)={1,0,?x>0x≤0?
→ 在正區間梯度為 1,負區間為 0(死亡神經元) -
Leaky ReLU:
f ′ ( x ) = { 1 , x > 0 α , x < 0 f'(x) = \begin{cases} 1, & x > 0 \\ \alpha, & x < 0 \end{cases} f′(x)={1,α,?x>0x<0?
→ 解決了 ReLU 在負區間的“零梯度”問題 -
GELU:
f ′ ( x ) ≈ Φ ( x ) + x ? ? ( x ) f'(x) \approx \Phi(x) + x \cdot \phi(x) f′(x)≈Φ(x)+x??(x)
其中 ? ( x ) \phi(x) ?(x) 是標準正態分布密度函數→ 與ReLU相比平滑,使其能夠更好地保留小梯度信息,增強模型的表達能力。
GELU通常比ReLU和Leaky實現更好的收斂性.
激活函數選擇對訓練的影響
激活函數 | 優點 | 缺點 |
---|---|---|
Sigmoid | 平滑、輸出為概率 | 梯度消失嚴重 |
Tanh | 零中心、平滑 | 飽和區影響訓練 |
ReLU | 快速收斂、稀疏激活 | 死亡神經元問題 |
Leaky ReLU | 緩解死神經元 | 引入超參 α \alpha α |
GELU | 平滑 & 有理論支持 | 計算復雜 |
因此,在實際模型設計中,需要根據任務和模型深度選擇合適的激活函數,以保證訓練穩定和效率。