神經網絡是一種受生物神經元啟發設計的機器學習模型,能夠通過多層非線性變換學習復雜的輸入-輸出關系。它是深度學習的基礎,廣泛應用于圖像識別、自然語言處理、游戲AI等領域。
1. 核心思想
- 生物類比:模仿人腦神經元的工作方式,通過“激活”和“連接”處理信息。
- 數學本質:多層嵌套的函數組合,通過調整權重和偏置擬合數據。
2. 基本結構
(1) 神經元(Neuron)
(2) 網絡層級
- 輸入層(Input Layer):接收原始數據(如圖像像素、文本詞向量)。
- 隱藏層(Hidden Layers):進行特征變換(層數和神經元數可調)。
- 輸出層(Output Layer):生成最終預測(如分類概率、回歸值)。
3. 前向傳播(Forward Propagation)
數據從輸入層逐層傳遞到輸出層的過程:
4. 激活函數(Activation Functions)
函數 | 公式 | 特點 | 適用場景 |
---|---|---|---|
Sigmoid | ( \frac{1}{1+e^{-z}} ) | 輸出(0,1),適合概率 | 二分類輸出層 |
ReLU | ( \max(0, z) ) | 計算快,解決梯度消失 | 隱藏層(最常用) |
Leaky ReLU | ( \max(0.01z, z) ) | 避免神經元“死亡” | 替代ReLU |
Softmax | ( \frac{e^{z_i}}{\sum e^{z_j}}} ) | 多分類概率歸一化 | 多分類輸出層 |
5. 反向傳播(Backpropagation)
通過鏈式法則計算損失函數對每個參數的梯度,從輸出層反向傳遞誤差并更新權重:
- 計算損失(如交叉熵、均方誤差)。
6. 代碼實現(Python)
(1) 使用TensorFlow/Keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense# 創建模型
model = Sequential([Dense(128, activation='relu', input_shape=(784,)), # 隱藏層(128個神經元)Dense(64, activation='relu'), # 隱藏層Dense(10, activation='softmax') # 輸出層(10分類)
])# 編譯模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])# 訓練
model.fit(X_train, y_train, epochs=10, batch_size=32)
(2) 手動實現(NumPy)
import numpy as npdef relu(z):return np.maximum(0, z)def softmax(z):exp_z = np.exp(z - np.max(z, axis=1, keepdims=True))return exp_z / np.sum(exp_z, axis=1, keepdims=True)# 初始化參數
W1 = np.random.randn(input_size, hidden_size) * 0.01
b1 = np.zeros((1, hidden_size))
# ...(其他層初始化)# 前向傳播
z1 = X.dot(W1) + b1
a1 = relu(z1)
z2 = a1.dot(W2) + b2
y_pred = softmax(z2)# 反向傳播(略)
7. 神經網絡類型
類型 | 特點 | 應用場景 |
---|---|---|
前饋神經網絡(FNN) | 信息單向傳播(輸入→輸出) | 圖像分類、回歸 |
卷積神經網絡(CNN) | 局部連接、權重共享 | 計算機視覺 |
循環神經網絡(RNN) | 處理序列數據(時間/文本) | 語音識別、機器翻譯 |
Transformer | 自注意力機制(并行處理長序列) | GPT、BERT等大模型 |
8. 關鍵挑戰與解決方案
問題 | 原因 | 解決方案 |
---|---|---|
梯度消失/爆炸 | 深層網絡鏈式求導的連乘效應 | ReLU、BatchNorm、殘差連接 |
過擬合 | 模型復雜度過高 | Dropout、L2正則化、早停 |
計算成本高 | 參數量大 | GPU加速、模型剪枝 |
9. 總結
- 神經網絡 = 多層非線性變換 + 梯度下降優化。
- 核心步驟:前向傳播 → 計算損失 → 反向傳播 → 更新參數。
- 設計要點:
- 選擇網絡深度和寬度(如層數、每層神經元數)。
- 選擇激活函數(隱藏層用ReLU,輸出層按任務定)。
- 優化器(如Adam)、損失函數(如交叉熵)、正則化。
神經網絡通過堆疊簡單的神經元實現了強大的表達能力,是解決復雜模式識別任務的利器!