模型層 開放閱讀

交叉熵

Cross Entropy

概念 ID
cross-entropy
更新時間
2026-05-29
來源數量
待補

交叉熵

3 秒看懂

交叉熵是衡量兩個機率分佈之間差異的資訊論標尺,在深度學習中幾乎“統治”了分類與生成任務的損失函式設計。一句話:它告訴你模型預測的分佈離真實分佈還差多遠。值越小,分佈越接近;值越大,說明模型預測與真相背離嚴重。從邏輯迴歸到百億引數的大語言模型,交叉熵都是推動引數更新的核心“裁判”。

3 分鐘產業解釋

在 AI 工業界,交叉熵是預設的“誤差尺度”。每當模型執行一次分類(貓/狗)、一次下一個 token 預測(GPT 系列)、一次影像重建(VAE)時,輸出的機率向量與真實標籤的多熱/類別分佈之間,都會計算交叉熵。最佳化器據此算出梯度並反向傳播,驅動萬億次矩陣乘法背後的晶片運轉。產業鏈上,所有訓練架構(PyTorch、TensorFlow、JAX)的損失函式庫都以交叉熵及其變體(如二元交叉熵 BCE、稀疏分類交叉熵)為核心 API。其計算涉及對數、求和與 softmax 歸一化,是 GPU/NPU 上數值穩定性最佳化(如 logits 直接送入 cross_entropy 而非先 softmax 再 log)的重點物件。可以說,每一個 AI 模型的賬單,很大一部分消耗在交叉熵相關的計算與通訊上。

15 分鐘專家深入

交叉熵源於 1948 年 Shannon 的資訊論。在 ML 中,通常將模型輸出的機率分佈 q 與真實分佈 p 之間的交叉熵定義為 H(p, q) = -\sum_{i} p(i) \log q(i)。由於真實標籤通常是 one‑hot 編碼,即 p 在正確類別處為 1,其餘為 0,則此時交叉熵退化為負對數似然 -\log q(y)。這就把資訊論概念與最大似然估計統一:最小化交叉熵等價於最大化正確標籤的對數似然。在分類任務中,為了輸出合法的機率分佈,網路末層常接 softmax,於是梯度回傳形式優雅簡潔,避免了早期均方誤差帶來的梯度飽和問題。

在生成式預訓練大型模型(LLaMA、Gemini 等)中,每一個位置的詞表上計算的都是逐 token 的交叉熵,全序列取平均或求和即為語言模型的預訓練目標(next‑token prediction)。這裡交叉熵是模型“困惑度(perplexity)”的對數級基礎,\text{PPL} = \exp(H(p,q))。工業訓練中,通常將 logits 直接傳給 torch.nn.functional.cross_entropy,其內部融合了 log‑softmax 與 NLL,避免了單獨計算 softmax 可能引發的數值溢位(如 log(0))。這也意味著,交叉熵計算不是一個孤立的運算元,而是一個融合了歸一化與損失統計的數值敏感核心,需要晶片架構與 AI 編譯器在運算元融合上做專門最佳化。

此外,在文本生成、語音合成等任務中,交叉熵也被用作序列蒸餾(Distillation)的監督訊號,如 SeqKD 中教師模型與學生模型的 token 級交叉熵。而在自監督對比學習(SimCLR, MoCo)中,InfoNCE 損失其實也是交叉熵的變體——在正樣本與大量負樣本的多類分類器上施加交叉熵,推動表徵空間中正對對準、負對發散。

技術原理

資訊論定義

對於離散隨機變數 X,假設真實分佈為 p,模型預測分佈為 q,交叉熵定義:

H(p, q) = -\sum_{x \in \mathcal{X}} p(x) \log q(x)

q 為某個引數化函式(如神經網路),用 \theta 表示,則損失函式 \mathcal{L}(\theta) = H(p, q_\theta)。當 p 為 one‑hot 時,設正確類別為 c,則 \mathcal{L} = -\log q_\theta(c)

與 softmax 的配合

設 logits 向量 \mathbf{z},則 softmax 輸出 q_i = \frac{e^{z_i}}{\sum_j e^{z_j}}。代入交叉熵損失:

\mathcal{L} = -\log \frac{e^{z_c}}{\sum_j e^{z_j}} = -z_c + \log\sum_j e^{z_j}

這是數值穩定實現的核心公式,通常由 logsumexp 操作統一計算。梯度對 logits 的回傳形式優美:

\frac{\partial \mathcal{L}}{\partial z_i} = q_i - p_i

即輸出機率與標籤分佈的差值。這避免了 sigmoid/softmax 的二次飽和區,訓練初期梯度訊號更強。

多標籤與加權變體

  • 二元交叉熵 (BCE):適用於多標籤分類或二分類,每個類別獨立計算,使用 sigmoid 而非 softmax:\mathcal{L} = -\sum_{i} [y_i\log \hat{y}_i + (1-y_i)\log(1-\hat{y}_i)]
  • 加權交叉熵:引入類別權重 w_c 以緩解不平衡:\mathcal{L} = -w_c \log q_c
  • Focal Loss:用於密集目標檢測,在交叉熵中加入調變因子 (1-q_c)^\gamma,降低易分類樣本的權值,是交叉熵族的擴充套件。

大型模型訓練中的平行計算模式

在模型並行訓練中,交叉熵計算的最後階段往往需要大矩陣乘法(logits 產生於詞表大小維度,可達數萬甚至數十萬)。張量並行中,詞表維度被切分,每個裝置持有部分 logits,此時需要 All‑reduce 收集全域性的 logsumexp 歸一化因子,這通常通過 all_reducereduce_scatter 實現。MoE 架構中,token 路由後每個 token 僅在少量專家上計算交叉熵,但路由本身的負載均衡損失也是基於機率分佈設計的,與交叉熵同源。

技術演進史

  • 1948 年:Claude Shannon 創立資訊論,提出熵與交叉熵概念,用以度量編碼最優長度。
  • 1950s–1960s:Kullback 與 Leibler 提出 KL 散度,交叉熵可表達為熵 + KL 散度,統計推斷中引入。
  • 1970s–1980s:最大熵模型、條件隨機場(CRF)中交叉熵成為引數估計的準則,NLP 中廣泛應用。
  • 1986 年:Rumelhart、Hinton 等反向傳播論文中,以平方和損失為主,但交叉熵隨後被引入作為分類目標,克服 sigmoid 飽和。
  • 1990s:神經網路中 softmax + 交叉熵組合成為標準,Bishop 等人強調其對機率輸出的合理性。
  • 2000s:深度學習復興,交叉熵在影像分類(AlexNet)、語音識別(DNN‑HMM)中成為標準損失。
  • 2010s 中期:Seq2Seq 模型、注意力機制中逐 token 交叉熵推動機器翻譯、影像描述。
  • 2018 年:GPT、BERT 等預訓練模型以交叉熵(語言模型 loss)為核心預訓練目標,將交叉熵與大規模自監督學習深度繫結。
  • 2020s:多模態、強化學習與人類反饋(RLHF)中,交叉熵作為策略評估或蒸餾損失一再出現,並在晶片級運算元融合中不斷最佳化。

技術路線對比

維度交叉熵 (Cross‑Entropy)均方誤差損失 (MSE)對比損失 (Contrastive Loss)
機率詮釋資訊論距離,最大似然高斯分佈誤差距離度量,無歸一化機率要求
輸出層配合softmax / sigmoid恆等或線性直接向量距離(餘弦/歐氏)
梯度特性與 softmax 聯合後梯度線性配合 sigmoid 易進入飽和區梯度依賴正負樣本的距離
典型應用分類、語言模型迴歸,傳統語義表徵學習表徵學習,自監督(SimCLR)
數值最佳化需要 logsumexp 融合,防止溢位相對穩定通常需難例挖掘
硬體加速關鍵點大詞表 softmax 的並行歸約簡單逐元素差平方正負對索引取樣

注:本表格中引數、效率對比為定性描述,具體數值因任務規模、詞表大小、批次大小而異。

上下游

  • 上游:神經網路輸出層(logits)提供原始分數,上游可能是卷積特徵、Transformer 解碼器隱藏狀態等。
  • 中游:損失函式庫實現交叉熵運算元,包含 log‑softmax 或 sigmoid 融合,常見於 CUDA‑kernel 層面的高效歸約。
  • 下游:最佳化器(Adam, SGD)接收到標量損失值,自動求解梯度,傳遞給各引數張量。
  • 相關工具鏈:PyTorch torch.nn.CrossEntropyLoss、TensorFlow tf.keras.losses.SparseCategoricalCrossentropy、JAX 的 optax.softmax_cross_entropy 等,這些是 AI 架構最核心的損失函式 API。

在全球 AI 晶片供應鏈中,交叉熵雖不直接對應某硬體部件,但其計算密集度決定了它常常與矩陣乘、softmax 融合成一個運算元交給 GPU/NPU 執行,尤其在大詞表的 logsumexp 操作中需要多處理器協同,會牽扯 HBM 頻寬和跨晶片通訊效率。

關鍵指標

  • 對數似然(或 Perplexity):語言模型常用,通過交叉熵的指數得到。此指標直接反映模型對測試資料的認知質量,但不會給出類似於時脈頻率那樣的絕對數字,其範圍高度依賴於詞表大小和任務難度。
  • 損失值 magnitude:訓練過程中交叉熵損失的下降速度,可表徵學習曲率。過高的初始損失通常意味詞表均勻分佈,-\log(1/V)
  • 訓練吞吐 (tokens/s):在工業測中,交叉熵計算常與詞片(token)產生速率耦合,晶片廠商關注的效能指標包含每焦耳能處理的交叉熵運算量。
  • 數值精度 (FP16/BF16/FP8):低精度訓練中,交叉熵的 sum 容易溢位,因此架構常使用縮放、截斷或 high‑precision 累加。指標如 loss scale 的使用頻率,反映了數值穩定性。

供需與市場資料

交叉熵本身作為數學概念不存在供需市場,但其作為損失函式的普適性使其與整個生成式 AI 訓練和推論市場深度繫結。根據第三方行業估算,2024‑2025 年大型模型預訓練計算中有超過 90% 的浮點運算用於 Transformer 前向/反向,其中交叉熵相關運算(softmax + log + 求和)大約佔整個訓練 FLOPs 的個位數百分比,但其對記憶體頻寬的需求卻不成比例地高,因為大詞表 logits 產生時需瞬時讀寫巨大張量。全球 AI 訓練的電力消耗與交叉熵運算量成間接正比。

在架構市場,交叉熵的最佳化是各 AI 晶片廠商必爭之地。NVIDIA 的 cuDNN、TensorRT,AMD 的 MIGraphX 以及各種 NPU 架構的自定義運算元庫,都包含高度調優的融合交叉熵核。例如,在 MLPerf 訓練基準中,BERT 和 GPT‑3 類模型的訓練速度瓶頸中,融合交叉熵運算元往往是最佳化重點之一。

代表公司與資本對映

  • NVIDIA:在其 GPU 庫(cuDNN, cuBLAS)提供融合交叉熵實現,效能直接影響 AI 訓練市佔率。
  • AMD:通過 ROCm 生態提供類似實現,不斷追趕,並在 Instinct 系列加速器上展示大語言模型訓練效能。
  • Intel:Gaudi 加速器、oneAPI 庫針對交叉熵和其他損失函式做圖級別融合。
  • 雲端廠商:Google (TPU)、Amazon (Trainium) 等自研晶片,將交叉熵與 softmax、解碼步驟融合為專用硬體 Op,形成差異化。
  • 架構層:Meta (PyTorch) 建置生態,微軟 (ONNX Runtime)、Apple CoreML 等均包含交叉熵運算元,其實現的質量與效能直接影響下游模型部署。
  • 大型模型公司:OpenAI、Anthropic、DeepSeek 等,其訓練成本效率與交叉熵計算最佳化直接相關,屬於該技術的關鍵應用者與推動者。

資本對映上,交叉熵並不產生獨立投資標的,但 AI 晶片和架構方的價值與交叉熵等基礎運算元的演進緊密相連。任何一個想在大型模型算力市場分一杯羹的硬體公司,都必須解決包括交叉熵在內的損失函式運算元高效能實現。

投資邏輯

  1. 護城河來自運算元融合與編譯最佳化:交叉熵與其前後運算元(transpose, softmax, log, sparse lookup)融合成單個 GPU kernel 的能力,可以極大節省頻寬和延遲。擁有自研編譯器(如 Triton, XLA)並能自動生成高效融合交叉熵核的架構與晶片團隊,將在訓練/推論成本上獲得結構性優勢。

  2. 大詞表趨勢強化需求:隨著多語言模型、程式碼模型詞表擴增到 100k–300k 以上,交叉熵計算中 logits 矩陣維度膨脹,成為效能瓶頸,對高速 HBM、晶片間互聯頻寬提出更高要求。能在大詞表場景下提供線性可擴充套件交叉熵效能的晶片互聯方案(如 NVSwitch、Infinity Fabric)更具投資價值。

  3. 能效成為區分點:推論場景中,每生成一個 token 就需計算一次詞表級交叉熵。能以更少功耗完成該計算的硬體,會在雲端端和端側推論中搶佔份額,因此監控晶片的交叉熵吞吐/Watt 的指標,是評估推論晶片競爭力的一個側面。

  4. 軟體生態鎖定:主流架構中交叉熵 API 的預設行為與效能表現,高度依賴底層庫,形成事實標準。新進入者必須無縫相容 PyTorch 的 cross_entropy 及其梯度行為,否則遷移成本巨大。

常見誤讀糾偏

  • 誤讀 1:交叉熵損失為零時,模型就完美擬合了。
    交叉熵最小值是真實分佈自身的熵 H(p) \geq 0,而不是 0。對於 one‑hot 標籤,熵為 0,因此理論上交叉熵可以達到 0,但實際中由於正則化、資料噪聲和模型容量限制,無法達到 0。更多時候,收斂後的交叉熵會穩定在資料集熵 + 模型瓶頸附近的一個正值,並非越接近 0 越好(過擬合風險)。

  • 誤讀 2:二元交叉熵 (BCE) 和分類交叉熵 (CCE) 可以隨意互換。
    若任務是多類單標籤分類,必須使用 softmax + 交叉熵,因為各類別互斥;使用 sigmoid + BCE 會導致類別間缺乏競爭歸一化,最終機率之和不為 1,訓練不穩定。反之,在多標籤分類中,如果強行使用 softmax,每個樣本只能有一個高機率類別,不符合任務設定。選擇錯誤會導致模型無法收斂或表徵嚴重失真。

  • 誤讀 3:交叉熵只是“損失函式”,和推論部署關係不大。
    不僅訓練,自迴歸生成推論的每步解碼都涉及 logits 到機率的轉換,為了與訓練一致,同樣經過 softmax + 交叉熵(取樣或 beam search 時通常轉為負對數似然),因此在推論最佳化中,融合交叉熵的核也是熱點。

學習路徑

  1. 基礎階段:閱讀資訊論入門,理解熵、KL 散度、交叉熵的數學關係。過一遍《Deep Learning》(Goodfellow et al.) 第 6.2.2 節,掌握交叉熵作為分類損失函式的推導。
  2. 程式碼實踐:用 PyTorch 手寫一個 softmax + cross‑entropy,然後對比 F.cross_entropy 的輸出,感受數值穩定性技巧(logsumexp)。在小資料集上分別用 MSE 和交叉熵訓練同一個分類網路,觀察收斂速度與準確率差異。
  3. 進階:學習語言模型的損失計算,閱讀《Attention is All You Need》中訓練目標的定義;在 nanoGPT 等小型程式碼中檢視交叉熵的呼叫位置。擴充套件到強化學習中策略梯度裡的交叉熵。
  4. 系統最佳化:閱讀 NVIDIA 的 fused_softmax 或 FlashAttention 相關原始碼,瞭解 kernel 融合如何減少交叉熵的 HBM 讀寫。嘗試用 Triton 實現一個簡單的帶損失融合的 cross‑entropy 核心。
  5. 前沿:追蹤大型模型詞表擴充套件對交叉熵計算的影響,瞭解 Nvidia TensorRT‑LLM 或 vLLM 中推論階段的 logit 處理器,以及自定義詞表、懲罰項等如何與交叉熵相互作用。

一句話總結

交叉熵是深度學習的機率性翻譯官——將模型輸出的原始分數轉化為資訊差距,成為指導億級引數更新的唯一真值,其數值形式與實現效率貫穿從軟硬體設計到千億次訓練的始終。

延伸閱讀與來源

  • Shannon, C. E. (1948). A Mathematical Theory of Communication.
  • Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press. (第 6.2.2 節)
  • Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer. (第 4.3 節)
  • PyTorch 文件:torch.nn.CrossEntropyLosstorch.nn.functional.cross_entropy
  • Vaswani et al. (2017). Attention Is All You Need. 訓練目標定義部分。
  • NVIDIA Deep Learning Performance Documentation on fused softmax and logsumexp optimization.
  • Hoffmann et al. (2022). Training Compute-Optimal Large Language Models. (Chinchilla) 中交叉熵損失曲線分析。

注:搜尋資料不可用,本文基於經典教材和公開架構文件撰寫,未引用特定財報或第三方估算資料;涉及效能對比部分均為定性描述。

source: 公開揭露與公開資料整理 本頁僅用於產業鏈學習、資訊檢索和研究輔助;不構成投資建議,不預測漲跌,不提供買賣、部位或目標價建議。
完整概念頁 複盤 13 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型