<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Probability on Tarragon</title><link>https://tarrragon.github.io/blog/tags/probability/</link><description>Recent content in Probability on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Mon, 11 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/probability/index.xml" rel="self" type="application/rss+xml"/><item><title>2.1 機率與資訊論</title><link>https://tarrragon.github.io/blog/llm/02-math-foundations/probability-and-information/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/llm/02-math-foundations/probability-and-information/</guid><description>&lt;p>LLM 輸出的本質是「下一個 &lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/token/" data-link-title="Token" data-link-desc="LLM 處理文字時的最小單位：介於字元與單字之間">token&lt;/a> 的機率分佈」。模型 forward pass 結束後、會對詞彙表中每個 token 給出一個分數（&lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/logit/" data-link-title="Logit" data-link-desc="softmax 之前的原始實數分數、每個 vocab token 一個值、可正可負">logit&lt;/a>）；&lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/softmax/" data-link-title="Softmax" data-link-desc="把任意實數向量正規化成「總和為 1、每個分量 ∈ [0,1]」的機率分佈">softmax&lt;/a> 把分數轉成合法的機率分佈、之後用各種 sampling 策略挑下一個 token。訓練時用 cross-entropy loss 衡量「模型預測的機率分佈跟真實答案差多少」、最佳化方向就是讓兩者盡量靠近。&lt;/p>
&lt;p>本章整理這條鏈上的核心概念。每個概念給出定義、在 LLM 中的位置、實務上會在哪裡遇到。&lt;/p>
&lt;h2 id="本章目標">本章目標&lt;/h2>
&lt;p>讀完本章後、你應該能：&lt;/p>
&lt;ol>
&lt;li>解釋 LLM 輸出層為什麼用 softmax、不用其他正規化方式。&lt;/li>
&lt;li>看到 &lt;code>temperature=0.2&lt;/code> 設定時、知道它在調機率分佈的什麼。&lt;/li>
&lt;li>看到 benchmark 報告 perplexity 數字時、知道它衡量什麼。&lt;/li>
&lt;li>理解 cross-entropy 為什麼是 LLM 訓練的標準 loss function。&lt;/li>
&lt;/ol>
&lt;h2 id="機率分佈把可能性量化">機率分佈：把可能性量化&lt;/h2>
&lt;p>機率分佈（probability distribution）的核心定義是「對所有可能事件指派一個機率值、總和為 1、每個值在 0 到 1 之間」。LLM 中的核心場景：對詞彙表中每個 token 指派一個機率、總和為 1。&lt;/p>
&lt;p>&lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/vocabulary-size/" data-link-title="Vocabulary Size" data-link-desc="tokenizer 詞彙表的 token 總數、影響 embedding 大小、tokenization 粒度、多語言友善度">詞彙表大小&lt;/a>（vocabulary size）通常幾萬到十幾萬：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>模型&lt;/th>
 &lt;th>Vocab Size&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Llama 3 系列&lt;/td>
 &lt;td>128,256&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Gemma 4 系列&lt;/td>
 &lt;td>256,000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>GPT-4o&lt;/td>
 &lt;td>~200,000&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Qwen3 系列&lt;/td>
 &lt;td>152,064&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>模型最後一層的輸出是「對這 N 個 token 的機率分佈」、N 是 vocab size。每生一個新 token、就 sample 一次這個分佈。&lt;/p>
&lt;h2 id="logitsoftmax-之前的原始分數">Logit：softmax 之前的原始分數&lt;/h2>
&lt;p>Logit 的核心定義是「模型最後一層輸出的原始分數、還沒正規化成機率」。每個 token 對應一個 logit、可以是任意實數（包括負數）。&lt;/p>
&lt;p>Logits 的形狀是 &lt;code>(vocab_size,)&lt;/code>、例如 Gemma 4 的 logits 是長度 256,000 的向量。直接看 logits 沒意義、需要轉成機率分佈才能 sample。&lt;/p>
&lt;h2 id="softmax把-logits-轉成機率分佈">Softmax：把 logits 轉成機率分佈&lt;/h2>
&lt;p>Softmax 的核心定義是「把任意實數向量轉成合法的機率分佈」的函式：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">softmax(x)ᵢ = exp(xᵢ) / Σⱼ exp(xⱼ)&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>幾何意義：先用 &lt;code>exp&lt;/code> 把所有 logit 變成正數（強化大值、壓抑負值）、再除以總和讓總和為 1。結果是合法的機率分佈：每個值在 (0, 1) 之間、總和為 1。&lt;/p>
&lt;p>為什麼用 softmax 而非其他正規化（如 &lt;code>xᵢ / Σ xⱼ&lt;/code>）：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>處理負數&lt;/strong>：直接歸一化遇到負 logit 會壞掉；exp 把所有值變正。&lt;/li>
&lt;li>&lt;strong>強化對比&lt;/strong>：exp 放大差距、讓「最有可能的 token」拿到更大的機率比例。&lt;/li>
&lt;li>&lt;strong>數學性質好&lt;/strong>：softmax 的導數形式漂亮、方便 backprop 計算 gradient。&lt;/li>
&lt;/ol>
&lt;p>實務上會在這幾個地方遇到 softmax：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>輸出層&lt;/strong>：把 logits 轉成「下個 token 的機率分佈」。&lt;/li>
&lt;li>&lt;strong>Attention&lt;/strong>：把 attention scores（內積結果）轉成「注意力權重分佈」。詳見 &lt;a href="https://tarrragon.github.io/blog/llm/03-theoretical-foundations/attention-mechanism/" data-link-title="3.2 Attention 機制" data-link-desc="Query / Key / Value、scaled dot-product attention、multi-head attention：Transformer 的核心運算">3.2 attention 機制&lt;/a>。&lt;/li>
&lt;/ul>
&lt;h2 id="temperature調整分佈的尖銳度">Temperature：調整分佈的尖銳度&lt;/h2>
&lt;p>&lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/sampling-constraint/" data-link-title="Sampling Constraint" data-link-desc="推論時限制下一個 token 候選集合的控制手段，用來把模型生成導向合法格式或特定選項">Temperature&lt;/a>（溫度）的核心定義是「softmax 之前先除以一個正數、調整輸出分佈的尖銳度」：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">softmax_with_temperature(x, T)ᵢ = exp(xᵢ / T) / Σⱼ exp(xⱼ / T)&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>T 對分佈的影響：&lt;/p></description><content:encoded><![CDATA[<p>LLM 輸出的本質是「下一個 <a href="/blog/llm/knowledge-cards/token/" data-link-title="Token" data-link-desc="LLM 處理文字時的最小單位：介於字元與單字之間">token</a> 的機率分佈」。模型 forward pass 結束後、會對詞彙表中每個 token 給出一個分數（<a href="/blog/llm/knowledge-cards/logit/" data-link-title="Logit" data-link-desc="softmax 之前的原始實數分數、每個 vocab token 一個值、可正可負">logit</a>）；<a href="/blog/llm/knowledge-cards/softmax/" data-link-title="Softmax" data-link-desc="把任意實數向量正規化成「總和為 1、每個分量 ∈ [0,1]」的機率分佈">softmax</a> 把分數轉成合法的機率分佈、之後用各種 sampling 策略挑下一個 token。訓練時用 cross-entropy loss 衡量「模型預測的機率分佈跟真實答案差多少」、最佳化方向就是讓兩者盡量靠近。</p>
<p>本章整理這條鏈上的核心概念。每個概念給出定義、在 LLM 中的位置、實務上會在哪裡遇到。</p>
<h2 id="本章目標">本章目標</h2>
<p>讀完本章後、你應該能：</p>
<ol>
<li>解釋 LLM 輸出層為什麼用 softmax、不用其他正規化方式。</li>
<li>看到 <code>temperature=0.2</code> 設定時、知道它在調機率分佈的什麼。</li>
<li>看到 benchmark 報告 perplexity 數字時、知道它衡量什麼。</li>
<li>理解 cross-entropy 為什麼是 LLM 訓練的標準 loss function。</li>
</ol>
<h2 id="機率分佈把可能性量化">機率分佈：把可能性量化</h2>
<p>機率分佈（probability distribution）的核心定義是「對所有可能事件指派一個機率值、總和為 1、每個值在 0 到 1 之間」。LLM 中的核心場景：對詞彙表中每個 token 指派一個機率、總和為 1。</p>
<p><a href="/blog/llm/knowledge-cards/vocabulary-size/" data-link-title="Vocabulary Size" data-link-desc="tokenizer 詞彙表的 token 總數、影響 embedding 大小、tokenization 粒度、多語言友善度">詞彙表大小</a>（vocabulary size）通常幾萬到十幾萬：</p>
<table>
  <thead>
      <tr>
          <th>模型</th>
          <th>Vocab Size</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Llama 3 系列</td>
          <td>128,256</td>
      </tr>
      <tr>
          <td>Gemma 4 系列</td>
          <td>256,000</td>
      </tr>
      <tr>
          <td>GPT-4o</td>
          <td>~200,000</td>
      </tr>
      <tr>
          <td>Qwen3 系列</td>
          <td>152,064</td>
      </tr>
  </tbody>
</table>
<p>模型最後一層的輸出是「對這 N 個 token 的機率分佈」、N 是 vocab size。每生一個新 token、就 sample 一次這個分佈。</p>
<h2 id="logitsoftmax-之前的原始分數">Logit：softmax 之前的原始分數</h2>
<p>Logit 的核心定義是「模型最後一層輸出的原始分數、還沒正規化成機率」。每個 token 對應一個 logit、可以是任意實數（包括負數）。</p>
<p>Logits 的形狀是 <code>(vocab_size,)</code>、例如 Gemma 4 的 logits 是長度 256,000 的向量。直接看 logits 沒意義、需要轉成機率分佈才能 sample。</p>
<h2 id="softmax把-logits-轉成機率分佈">Softmax：把 logits 轉成機率分佈</h2>
<p>Softmax 的核心定義是「把任意實數向量轉成合法的機率分佈」的函式：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">softmax(x)ᵢ = exp(xᵢ) / Σⱼ exp(xⱼ)</span></span></code></pre></div><p>幾何意義：先用 <code>exp</code> 把所有 logit 變成正數（強化大值、壓抑負值）、再除以總和讓總和為 1。結果是合法的機率分佈：每個值在 (0, 1) 之間、總和為 1。</p>
<p>為什麼用 softmax 而非其他正規化（如 <code>xᵢ / Σ xⱼ</code>）：</p>
<ol>
<li><strong>處理負數</strong>：直接歸一化遇到負 logit 會壞掉；exp 把所有值變正。</li>
<li><strong>強化對比</strong>：exp 放大差距、讓「最有可能的 token」拿到更大的機率比例。</li>
<li><strong>數學性質好</strong>：softmax 的導數形式漂亮、方便 backprop 計算 gradient。</li>
</ol>
<p>實務上會在這幾個地方遇到 softmax：</p>
<ul>
<li><strong>輸出層</strong>：把 logits 轉成「下個 token 的機率分佈」。</li>
<li><strong>Attention</strong>：把 attention scores（內積結果）轉成「注意力權重分佈」。詳見 <a href="/blog/llm/03-theoretical-foundations/attention-mechanism/" data-link-title="3.2 Attention 機制" data-link-desc="Query / Key / Value、scaled dot-product attention、multi-head attention：Transformer 的核心運算">3.2 attention 機制</a>。</li>
</ul>
<h2 id="temperature調整分佈的尖銳度">Temperature：調整分佈的尖銳度</h2>
<p><a href="/blog/llm/knowledge-cards/sampling-constraint/" data-link-title="Sampling Constraint" data-link-desc="推論時限制下一個 token 候選集合的控制手段，用來把模型生成導向合法格式或特定選項">Temperature</a>（溫度）的核心定義是「softmax 之前先除以一個正數、調整輸出分佈的尖銳度」：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">softmax_with_temperature(x, T)ᵢ = exp(xᵢ / T) / Σⱼ exp(xⱼ / T)</span></span></code></pre></div><p>T 對分佈的影響：</p>
<table>
  <thead>
      <tr>
          <th>Temperature</th>
          <th>效果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>T → 0</td>
          <td>分佈接近 one-hot、永遠選機率最大的 token（greedy）</td>
      </tr>
      <tr>
          <td>T = 1</td>
          <td>原始 softmax 分佈</td>
      </tr>
      <tr>
          <td>T → ∞</td>
          <td>分佈接近 uniform、每個 token 機率接近相等</td>
      </tr>
  </tbody>
</table>
<p>實務經驗：</p>
<ul>
<li>寫 code 場景用 T = 0.2 ~ 0.4、讓回答穩定、減少 hallucination。</li>
<li>創意寫作用 T = 0.7 ~ 1.0、保留多樣性。</li>
<li>確定性場景（測試、reproducible 評估）用 T = 0（實作上 T=0 是除以零、伺服器退化為 argmax / greedy）。</li>
</ul>
<p>實務常見的 temperature 邊界：</p>
<ul>
<li><strong>T 跟 top-p 同用</strong>：兩者相乘的效果非線性、高 T + 低 top-p 反而讓「機率被攤平但只挑前幾名」、出現語義跳動。多數設定固定其中一個、調另一個。</li>
<li><strong>Reasoning model 上 T 反效果</strong>：o1 / DeepSeek-R1 等內建 chain-of-thought 的模型、官方建議 T = 0 或 1.0、調 T 會破壞 reasoning trace 的連貫性。</li>
<li><strong>過低 T（&lt; 0.1）的副作用</strong>：模型容易掉進 repetition loop（連續重複同一句）、要搭配 repetition penalty 才穩。</li>
</ul>
<p>LM Studio 跟其他推論伺服器的 temperature 設定背後就是這個公式。</p>
<h2 id="top-k-與-top-p-sampling">Top-K 與 Top-P sampling</h2>
<p>Sampling 策略決定「從機率分佈挑下一個 token」的具體方法。主流選擇：</p>
<table>
  <thead>
      <tr>
          <th>策略</th>
          <th>機制</th>
          <th>適合場景</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Greedy</td>
          <td>永遠選機率最大的</td>
          <td>確定性、reproducible 評估</td>
      </tr>
      <tr>
          <td>Beam search</td>
          <td>同時保留 K 個候選序列、選累積機率最大的</td>
          <td>翻譯、摘要等需要全局最佳的場景</td>
      </tr>
      <tr>
          <td>Top-K</td>
          <td>只考慮機率最大的 K 個 token、其餘設 0</td>
          <td>控制多樣性下界</td>
      </tr>
      <tr>
          <td>Top-P (nucleus)</td>
          <td>只考慮機率累積 ≤ P 的 token 子集</td>
          <td>動態調整候選數、目前最常見</td>
      </tr>
  </tbody>
</table>
<p><a href="/blog/llm/knowledge-cards/top-p-sampling/" data-link-title="Top-K / Top-P / Min-P Sampling" data-link-desc="從機率分佈取樣前先過濾低機率 token 的三種策略、現代 LLM 推論主流">Top-P sampling</a> 的細節：先依機率排序、累加直到超過閾值 P（如 0.9）、只 sample 這些 token、其他丟掉。Token 多樣性自動依分佈尖銳度調整、比固定 K 彈性。完整 sampling 策略（含 repetition penalty、min-p、frequency penalty 等）見 <a href="/blog/llm/03-theoretical-foundations/sampling-and-decoding/" data-link-title="3.5 Sampling 與 Decoding 策略" data-link-desc="Greedy、beam search、top-k、top-p、temperature、min-p：模型輸出後怎麼挑下一個 token">3.5 sampling 策略</a>。</p>
<h2 id="cross-entropy訓練-llm-的-loss-function">Cross-Entropy：訓練 LLM 的 loss function</h2>
<p>Cross-entropy（交叉熵）的核心定義是「衡量兩個機率分佈的差距」。形式：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">H(p, q) = -Σᵢ p(xᵢ) log q(xᵢ)</span></span></code></pre></div><p>p 是真實分佈、q 是模型預測分佈。LLM 預訓練 / 一般 SFT 場景下 p 是 one-hot（正確 token 機率 1、其他 0）、q 是模型 softmax 輸出；label smoothing / distillation / soft target 等場景 p 是平滑分佈、cross-entropy 仍適用、形式上需保留完整 sum。LLM 訓練的 one-hot 場景下 cross-entropy loss 簡化為：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">loss = -log(q(正確 token))</span></span></code></pre></div><p>幾何意義：模型給正確 token 的機率越高、loss 越低。完美預測時 loss → 0、完全錯時 loss → ∞。</p>
<p>為什麼用 cross-entropy 而非其他 loss：</p>
<ol>
<li><strong>跟 softmax 配合好</strong>：兩者組合的 gradient 形式漂亮、訓練穩定。</li>
<li><strong>直接最佳化機率</strong>：跟模型輸出的本質一致、不用引入額外轉換。</li>
<li><strong>資訊論依據</strong>：cross-entropy 等於「假設真實分佈是 p、用 q 編碼平均要多少 bits」。</li>
</ol>
<h2 id="perplexity模型品質的標準指標">Perplexity：模型品質的標準指標</h2>
<p><a href="/blog/llm/knowledge-cards/perplexity/" data-link-title="Perplexity" data-link-desc="cross-entropy 的指數形式、直覺意義為「模型平均覺得下個 token 有多少種可能」">Perplexity</a>（困惑度）的核心定義是「e 的 cross-entropy 次方」、衡量模型預測下一個 token 的不確定性：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">perplexity = exp(cross-entropy)</span></span></code></pre></div><p>幾何意義：「平均來說、模型猶豫在幾個 token 之間」。</p>
<ul>
<li>Perplexity = 10：模型平均要在 10 個 token 中挑、不確定性中等。</li>
<li>Perplexity = 2：模型很有信心、平均在 2 個 token 中挑。</li>
<li>Perplexity = vocab_size：模型完全沒學到、隨機猜。</li>
</ul>
<p>實務上 perplexity 是預訓練模型品質的標準評估指標。GPT-3 paper 報告各種任務的 perplexity；本地模型對比常引用 WikiText / C4 等 benchmark 上的 perplexity 數字。</p>
<p>Perplexity 跟 <a href="/blog/llm/knowledge-cards/swe-bench/" data-link-title="SWE-bench" data-link-desc="用真實 GitHub issue 量化 LLM coding 能力的 benchmark">SWE-bench</a> 等任務 benchmark 是兩個維度：前者衡量「模型預測下一個 token 的不確定性」、後者衡量「實際解問題的能力」。能力強的模型 perplexity 通常較低、但不是線性關係。</p>
<p>Perplexity 的三個常見判讀陷阱：</p>
<ul>
<li><strong>跨 tokenizer 不可比</strong>：兩個模型 vocab 不同、平均 token 長度不同、perplexity 數值不在同一座標。判讀訊號：比較數字前先確認 tokenizer 是否相同；不同就改用 byte-level perplexity 或實際任務 benchmark。</li>
<li><strong>Domain mismatch</strong>：在 WikiText 上 perplexity 低、不代表 coding 任務也強。Perplexity 反映「訓練 / 評估資料分佈」的擬合度、跨 domain 引用需附 corpus 名稱。</li>
<li><strong>Context 長度影響</strong>：較長 context 通常 perplexity 較低（前文越多越好預測下一字）、引用數字時要附 context window 設定。</li>
</ul>
<h2 id="kl-divergence兩個分佈的距離">KL Divergence：兩個分佈的距離</h2>
<p><a href="/blog/llm/knowledge-cards/kl-divergence/" data-link-title="KL Divergence" data-link-desc="衡量「兩個機率分佈差距」的非對稱指標、RLHF / DPO 等 alignment 訓練的關鍵約束">KL divergence</a>（Kullback-Leibler divergence、KL 散度）的核心定義是「衡量分佈 q 偏離分佈 p 的程度」：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">KL(p || q) = Σᵢ p(xᵢ) log(p(xᵢ) / q(xᵢ))</span></span></code></pre></div><p>性質：</p>
<ul>
<li>KL(p || q) ≥ 0、等號成立當且僅當 p = q。</li>
<li><strong>不對稱</strong>：KL(p || q) ≠ KL(q || p) 一般而言。</li>
<li>跟 cross-entropy 關係：<code>H(p, q) = H(p) + KL(p || q)</code>、其中 H(p) 是 p 自身的 entropy。</li>
</ul>
<p>LLM 中 KL divergence 的用途：</p>
<ul>
<li><strong>RLHF</strong>：把 fine-tune 後的模型機率分佈跟原 pre-trained 模型對齊、避免 fine-tune 過頭偏離原模型太多。</li>
<li><strong>Knowledge distillation</strong>：把大模型的分佈傳給小模型、小模型最小化 KL(大模型 || 小模型)。</li>
<li><strong>DPO / 各種 alignment 方法</strong>：用 KL constraint 控制 policy 偏移量。</li>
</ul>
<h2 id="entropy分佈的不確定性"><a href="/blog/llm/knowledge-cards/entropy/" data-link-title="Entropy" data-link-desc="資訊論衡量「分佈的不確定性」的指標、cross-entropy / KL divergence 的基底">Entropy</a>：分佈的不確定性</h2>
<p>Entropy（熵）的核心定義是「機率分佈本身的不確定性」：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">H(p) = -Σᵢ p(xᵢ) log p(xᵢ)</span></span></code></pre></div><p>幾何意義：「平均來說、用 p 編碼一個 sample 要多少 bits」。</p>
<ul>
<li>確定分佈（one-hot）：entropy = 0、沒有不確定性。</li>
<li>Uniform 分佈：entropy = log(N)、最大不確定性。</li>
</ul>
<p>Entropy、cross-entropy、KL divergence 三者關係：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">H(p, q) = H(p) + KL(p || q)</span></span></code></pre></div><p>Cross-entropy 等於「真實分佈的 entropy」加上「模型預測偏離真實的 KL distance」。訓練 LLM 是最小化 H(p, q)、等同於最小化 KL(p || q)、因為 H(p) 是常數（資料本身的不確定性）。</p>
<h2 id="下一章">下一章</h2>
<p>想看完整資訊論推導（Shannon&rsquo;s coding theorem、mutual information 等）、見 <a href="/blog/llm/02-math-foundations/going-deeper-math/" data-link-title="2.4 想學更深：推薦公開課程" data-link-desc="MIT、Stanford、Harvard 等公開課程：數學基礎跟 LLM 預備知識的完整學習路線">2.4 公開課推薦</a> 的 MIT 6.050J / Stanford EE376A 等資源。</p>
<p>下一章：<a href="/blog/llm/02-math-foundations/calculus-and-optimization/" data-link-title="2.2 微積分與最佳化" data-link-desc="從 gradient、chain rule 到 SGD / Adam：LLM 訓練如何更新數十億參數">2.2 微積分與最佳化</a>。</p>
]]></content:encoded></item></channel></rss>