在學習 Transformers 之前,打好神經網絡和自然語言處理的基礎至關重要。本文整理了需要掌握的核心前置知識,用通俗的例子幫你快速理解復雜概念,為后續學習鋪平道路。?
一、神經網絡基礎?
1. 多層感知機(MLP):信息處理的流水線?
多層感知機可以想象成一條多層級的信息處理流水線。比如我們要判斷一個人是否適合某項運動,需要處理年齡、身高、體重等原始數據:?
- 第一層(輸入層):收集原始數據,就像前臺接待員匯總信息?
- 中間層(隱藏層):對數據做初步處理,比如計算 BMI 指數、評估關節負荷等?
- 最后一層(輸出層):綜合所有分析,給出 “適合” 或 “不適合” 的結論?
用 PyTorch 實現 MLP 時,核心是定義各層的神經元數量和連接方式:?
?
import torch.nn as nn?
#簡單MLP:輸入3個特征→10個中間處理器→1個輸出結果?
model = nn.Sequential(?nn.Linear(3, 10), # 第一層:3→10?nn.ReLU(), # 激活函數(增加非線性)?nn.Linear(10, 1) # 輸出層:10→1?
)?
?
訓練過程就像給流水線 “調試參數”,通過大量數據讓模型逐漸學會準確判斷。?
2. 反向傳播:模型的 “錯題訂正” 機制?
反向傳播是神經網絡學習的核心,原理類似我們訂正作業的過程:?
- 當模型預測結果(如 “適合運動”)與實際情況不符時,就像老師批改出了錯題?
- 從輸出層往回計算每一層的 “責任”(誤差),相當于從錯誤答案倒推哪一步計算出錯?
- 按比例調整各層參數(權重),讓下次預測更準確?
這個過程由 PyTorch 自動完成,我們只需定義損失函數(衡量錯誤程度),框架會幫我們完成從結果到原因的追溯和修正。?
3. 循環神經網絡(RNN)及其變體:處理序列數據的利器?
RNN 專為處理 “序列數據” 設計,比如文本、時間序列等。它的核心特點是:當前的判斷會受前面信息的影響。?
普通 RNN:有記憶但會 "忘事"?
就像我們讀句子時,前面的內容會影響對后面的理解。例如:?
"他昨天去了公園,____玩得很開心"?
根據前文的 “他”,我們能推斷空格處填 "他"?
?
但普通 RNN 處理長文本時會 “健忘”—— 距離太遠的信息會逐漸淡化,就像我們記不住上周三早餐吃了什么。?
LSTM 和 GRU:帶 “筆記本” 的 RNN?
為解決健忘問題,LSTM(長短期記憶網絡)和 GRU(門控循環單元)應運而生:?
- 它們相當于給 RNN 加了個 “筆記本”,重要信息(如人名、時間)會被特意記錄?
- 需要時可以隨時查閱,避免長序列中的關鍵信息丟失?
推薦閱讀《深度學習入門:基于 Python 的理論與實現》第 8 章,書中用生動的圖示解釋了 LSTM 的門控機制,比公式推導更容易理解。?
二、詞嵌入原理:讓計算機 “讀懂” 詞語?
Word2Vec:給詞語拍 "集體照"?
計算機只能處理數字,如何把 “蘋果”" 香蕉 " 這樣的詞語轉換成數字呢?
?
傳統方法的局限?
One-hot 編碼(獨熱編碼)就像給每個詞發唯一身份證:?
- 每個詞是一個超長向量,只有對應位置為 1,其他全為 0?
- 但 “蘋果” 和 “香蕉” 的向量毫無關聯,計算機無法知道它們都是水果?
Word2Vec 的創新思路?
Word2Vec 根據詞語的 “朋友圈”(上下文)分配數字:?
-
經常出現在類似語境中的詞,向量會更相似(如 “國王” 和 “女王”)?
-
就像拍集體照時,關系好的人會站得近,通過距離體現親密程度
用 gensim 庫實踐時,你會發現有趣現象:?
from gensim.models import Word2Vec?
?
#訓練模型(語料為大量文本)?
model = Word2Vec(sentences=corpus, vector_size=100, window=5, min_count=1)?
?
#查看詞向量相似度?
print(model.wv.similarity("蘋果", "香蕉")) # 相似度較高?
print(model.wv.similarity("蘋果", "汽車")) # 相似度較低?
這種特性讓計算機能理解詞語的 “語義關系”,為后續的文本分類、機器翻譯等任務奠定基礎。?
總結?
學習的多層感知機、反向傳播、RNN/LSTM 和 Word2Vec,是理解 Transformers 的重要基石:?
- MLP 是神經網絡的基礎結構?
- 反向傳播是模型學習的核心機制
- RNN 系列揭示了處理序列數據的思路?
- Word2Vec 解決了詞語的數字化難題?
掌握這些知識后,我們就能更輕松地理解 Transformers 的創新點 —— 為什么注意力機制能超越 RNN,成為處理長文本的新寵。