<?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>Multilingual on Tarragon</title><link>https://tarrragon.github.io/blog/tags/multilingual/</link><description>Recent content in Multilingual 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/multilingual/index.xml" rel="self" type="application/rss+xml"/><item><title>3.7 跨語言場景的 tokenizer 與訓練分佈原理</title><link>https://tarrragon.github.io/blog/llm/03-theoretical-foundations/cross-language-tokenization/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/llm/03-theoretical-foundations/cross-language-tokenization/</guid><description>&lt;p>模組三 &lt;a href="https://tarrragon.github.io/blog/llm/03-theoretical-foundations/tokenization-algorithms/" data-link-title="3.6 Tokenization：BPE、SentencePiece、Tiktoken" data-link-desc="把文字切成 token 的算法：為什麼不同模型切出不同 token 數、tokenizer 選擇對能力的影響">3.6 tokenization 章節&lt;/a> 提到 Llama 2 對中文支援差、Gemma 4 改善很多——但「為什麼」展開後不只 tokenizer 一層、還涉及訓練資料分佈、模型容量分配、跨語言 reasoning 行為差異。本章把跨語言場景的根本原理走過、讓「該用什麼語言寫 prompt」「commit message 用中文還是英文」這類取捨從直覺變成可推導判斷。&lt;/p>
&lt;p>本章寫的是「跨語言能力為什麼這樣分佈」「該如何依場景選語言」的原理層。具體模型在 2026/5 的中文 / 多語言 benchmark 不在本章——這些隨新模型版本變、用本章的雙因素 framework 重新評估就好。&lt;/p>
&lt;h2 id="本章目標">本章目標&lt;/h2>
&lt;p>讀完本章後、你應該能：&lt;/p>
&lt;ol>
&lt;li>解釋為什麼模型在不同語言上表現不一致、有哪兩個獨立因素。&lt;/li>
&lt;li>看到 tokenizer 對中文「一字切 N token」時、知道對 context cost 跟能力的影響。&lt;/li>
&lt;li>判讀「該翻英寫 prompt 還是維持中文」的取捨。&lt;/li>
&lt;li>解釋為什麼跨語言 reasoning 比 monolingual reasoning 容易失敗。&lt;/li>
&lt;/ol>
&lt;h2 id="為什麼模型對不同語言表現不一致雙因素">為什麼模型對不同語言表現不一致：雙因素&lt;/h2>
&lt;p>模型對不同語言的表現受兩個獨立因素疊加影響：&lt;/p>
&lt;h3 id="因素-1tokenizer-vocab-coverage">因素 1：Tokenizer Vocab Coverage&lt;/h3>
&lt;p>Tokenizer 把文字切成 &lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/token/" data-link-title="Token" data-link-desc="LLM 處理文字時的最小單位：介於字元與單字之間">token&lt;/a>、tokenizer vocab 大小指 tokenizer 認識的 token 種類數（vocab 越大、能切得越細、越能用單一 token 表達常見字）。不同 tokenizer 對不同語言的切割密度不同：&lt;/p>
&lt;ul>
&lt;li>英文中心的 tokenizer（如 Llama 2 的 32K vocab）對 vocab 沒涵蓋的中文字會 fallback 到 byte 級切割（UTF-8 一個中文字常用 3 個 byte、所以變 3 個 token）。&lt;/li>
&lt;li>多語言 tokenizer（如 Gemma 4 的 256K vocab）把常見中文字當獨立 token 收進來、對中文多半一字一 token、跟英文接近。&lt;/li>
&lt;/ul>
&lt;p>完整的 BPE / WordPiece / Unigram / SentencePiece 算法見 &lt;a href="https://tarrragon.github.io/blog/llm/03-theoretical-foundations/tokenization-algorithms/" data-link-title="3.6 Tokenization：BPE、SentencePiece、Tiktoken" data-link-desc="把文字切成 token 的算法：為什麼不同模型切出不同 token 數、tokenizer 選擇對能力的影響">3.6 tokenization 算法&lt;/a>。&lt;/p>
&lt;p>Tokenizer 影響三件事：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Context 成本&lt;/strong>：同樣 prompt 在不同 tokenizer 上吃 token 量級不同、API 費用、&lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/context-window/" data-link-title="Context Window" data-link-desc="模型一次能處理的最大 token 數量：prompt 加生成的總和上限">context window&lt;/a> 利用率都跟著差。&lt;/li>
&lt;li>&lt;strong>Token 粒度&lt;/strong>：粗粒度 tokenizer 對某語言的「字」切割不細、影響模型對該語言細微差異的辨識。&lt;/li>
&lt;li>&lt;strong>訓練效率&lt;/strong>：tokenizer 切得好、模型每個 token 學到更多語意、訓練收斂快。&lt;/li>
&lt;/ul>
&lt;h3 id="因素-2訓練資料分佈">因素 2：訓練資料分佈&lt;/h3>
&lt;p>模型預訓練資料的語言佔比決定模型「學了多少」這個語言：&lt;/p>
&lt;ul>
&lt;li>Common Crawl 等主流預訓練資料英文佔 70%+、中文約 1-3%、其他語言更少。&lt;/li>
&lt;li>即使 tokenizer 對某語言支援好、訓練資料少仍會限制模型在該語言上的能力。&lt;/li>
&lt;/ul>
&lt;p>訓練分佈影響三件事：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>事實準確度&lt;/strong>：訓練資料少 → 該語言的事實覆蓋低 → hallucination 多。&lt;/li>
&lt;li>&lt;strong>Reasoning 深度&lt;/strong>：複雜推理需要大量該語言範例支撐、訓練少就退化。&lt;/li>
&lt;li>&lt;strong>風格自然度&lt;/strong>：訓練少的語言、模型輸出語法 OK 但 idiom / 慣用搭配偏直譯。&lt;/li>
&lt;/ul>
&lt;h3 id="雙因素的獨立性">雙因素的獨立性&lt;/h3>
&lt;p>兩個因素獨立、各自影響不同維度：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Tokenizer 好&lt;/th>
 &lt;th>訓練資料多&lt;/th>
 &lt;th>結果&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>是&lt;/td>
 &lt;td>是&lt;/td>
 &lt;td>跨語言能力接近 native（Gemma 4 / Qwen3 在中文上的狀態）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>是&lt;/td>
 &lt;td>否&lt;/td>
 &lt;td>「會讀」但「不熟」、輸出語法 OK 但內容平庸&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>否&lt;/td>
 &lt;td>是&lt;/td>
 &lt;td>能力 OK 但 cost 高、context 利用率差&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>否&lt;/td>
 &lt;td>否&lt;/td>
 &lt;td>該語言基本不可用（Llama 2 對中文的狀態）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>判讀模型某語言能力時、兩個因素都要評估、單看一個會誤判。「Gemma 4 vocab 對中文好」不代表「中文表現一定好」、還要看訓練資料佔比。「OpenAI 訓練資料量大」不代表「對所有語言都好」、還要看 tokenizer 設計。&lt;/p></description><content:encoded><![CDATA[<p>模組三 <a href="/blog/llm/03-theoretical-foundations/tokenization-algorithms/" data-link-title="3.6 Tokenization：BPE、SentencePiece、Tiktoken" data-link-desc="把文字切成 token 的算法：為什麼不同模型切出不同 token 數、tokenizer 選擇對能力的影響">3.6 tokenization 章節</a> 提到 Llama 2 對中文支援差、Gemma 4 改善很多——但「為什麼」展開後不只 tokenizer 一層、還涉及訓練資料分佈、模型容量分配、跨語言 reasoning 行為差異。本章把跨語言場景的根本原理走過、讓「該用什麼語言寫 prompt」「commit message 用中文還是英文」這類取捨從直覺變成可推導判斷。</p>
<p>本章寫的是「跨語言能力為什麼這樣分佈」「該如何依場景選語言」的原理層。具體模型在 2026/5 的中文 / 多語言 benchmark 不在本章——這些隨新模型版本變、用本章的雙因素 framework 重新評估就好。</p>
<h2 id="本章目標">本章目標</h2>
<p>讀完本章後、你應該能：</p>
<ol>
<li>解釋為什麼模型在不同語言上表現不一致、有哪兩個獨立因素。</li>
<li>看到 tokenizer 對中文「一字切 N token」時、知道對 context cost 跟能力的影響。</li>
<li>判讀「該翻英寫 prompt 還是維持中文」的取捨。</li>
<li>解釋為什麼跨語言 reasoning 比 monolingual reasoning 容易失敗。</li>
</ol>
<h2 id="為什麼模型對不同語言表現不一致雙因素">為什麼模型對不同語言表現不一致：雙因素</h2>
<p>模型對不同語言的表現受兩個獨立因素疊加影響：</p>
<h3 id="因素-1tokenizer-vocab-coverage">因素 1：Tokenizer Vocab Coverage</h3>
<p>Tokenizer 把文字切成 <a href="/blog/llm/knowledge-cards/token/" data-link-title="Token" data-link-desc="LLM 處理文字時的最小單位：介於字元與單字之間">token</a>、tokenizer vocab 大小指 tokenizer 認識的 token 種類數（vocab 越大、能切得越細、越能用單一 token 表達常見字）。不同 tokenizer 對不同語言的切割密度不同：</p>
<ul>
<li>英文中心的 tokenizer（如 Llama 2 的 32K vocab）對 vocab 沒涵蓋的中文字會 fallback 到 byte 級切割（UTF-8 一個中文字常用 3 個 byte、所以變 3 個 token）。</li>
<li>多語言 tokenizer（如 Gemma 4 的 256K vocab）把常見中文字當獨立 token 收進來、對中文多半一字一 token、跟英文接近。</li>
</ul>
<p>完整的 BPE / WordPiece / Unigram / SentencePiece 算法見 <a href="/blog/llm/03-theoretical-foundations/tokenization-algorithms/" data-link-title="3.6 Tokenization：BPE、SentencePiece、Tiktoken" data-link-desc="把文字切成 token 的算法：為什麼不同模型切出不同 token 數、tokenizer 選擇對能力的影響">3.6 tokenization 算法</a>。</p>
<p>Tokenizer 影響三件事：</p>
<ul>
<li><strong>Context 成本</strong>：同樣 prompt 在不同 tokenizer 上吃 token 量級不同、API 費用、<a href="/blog/llm/knowledge-cards/context-window/" data-link-title="Context Window" data-link-desc="模型一次能處理的最大 token 數量：prompt 加生成的總和上限">context window</a> 利用率都跟著差。</li>
<li><strong>Token 粒度</strong>：粗粒度 tokenizer 對某語言的「字」切割不細、影響模型對該語言細微差異的辨識。</li>
<li><strong>訓練效率</strong>：tokenizer 切得好、模型每個 token 學到更多語意、訓練收斂快。</li>
</ul>
<h3 id="因素-2訓練資料分佈">因素 2：訓練資料分佈</h3>
<p>模型預訓練資料的語言佔比決定模型「學了多少」這個語言：</p>
<ul>
<li>Common Crawl 等主流預訓練資料英文佔 70%+、中文約 1-3%、其他語言更少。</li>
<li>即使 tokenizer 對某語言支援好、訓練資料少仍會限制模型在該語言上的能力。</li>
</ul>
<p>訓練分佈影響三件事：</p>
<ul>
<li><strong>事實準確度</strong>：訓練資料少 → 該語言的事實覆蓋低 → hallucination 多。</li>
<li><strong>Reasoning 深度</strong>：複雜推理需要大量該語言範例支撐、訓練少就退化。</li>
<li><strong>風格自然度</strong>：訓練少的語言、模型輸出語法 OK 但 idiom / 慣用搭配偏直譯。</li>
</ul>
<h3 id="雙因素的獨立性">雙因素的獨立性</h3>
<p>兩個因素獨立、各自影響不同維度：</p>
<table>
  <thead>
      <tr>
          <th>Tokenizer 好</th>
          <th>訓練資料多</th>
          <th>結果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>是</td>
          <td>是</td>
          <td>跨語言能力接近 native（Gemma 4 / Qwen3 在中文上的狀態）</td>
      </tr>
      <tr>
          <td>是</td>
          <td>否</td>
          <td>「會讀」但「不熟」、輸出語法 OK 但內容平庸</td>
      </tr>
      <tr>
          <td>否</td>
          <td>是</td>
          <td>能力 OK 但 cost 高、context 利用率差</td>
      </tr>
      <tr>
          <td>否</td>
          <td>否</td>
          <td>該語言基本不可用（Llama 2 對中文的狀態）</td>
      </tr>
  </tbody>
</table>
<p>判讀模型某語言能力時、兩個因素都要評估、單看一個會誤判。「Gemma 4 vocab 對中文好」不代表「中文表現一定好」、還要看訓練資料佔比。「OpenAI 訓練資料量大」不代表「對所有語言都好」、還要看 tokenizer 設計。</p>
<h2 id="tokenizer-vocab-對非英文的影響">Tokenizer Vocab 對非英文的影響</h2>
<p>Tokenizer vocab 設計直接決定中文 context 成本量級、差距可達兩倍以上。具體看 tokenizer 對中文的影響（以下為各 tokenizer 對該句的近似切割、實測會 ±20%、用作量級對照、不含 system prompt / response budget）：</p>
<table>
  <thead>
      <tr>
          <th>Tokenizer</th>
          <th>Vocab</th>
          <th>中文「敏捷的棕色狐狸跳過懶狗」估算 token 數</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Llama 2 BPE</td>
          <td>32K</td>
          <td>約 20（byte 級切割、一字常 2-3 個 token）</td>
      </tr>
      <tr>
          <td>GPT-4 tiktoken</td>
          <td>~100K</td>
          <td>約 12</td>
      </tr>
      <tr>
          <td>Llama 3 BPE</td>
          <td>128,256</td>
          <td>約 10</td>
      </tr>
      <tr>
          <td>Qwen3 BPE</td>
          <td>152,064</td>
          <td>約 10</td>
      </tr>
      <tr>
          <td>Gemma 3</td>
          <td>262,144</td>
          <td>約 9</td>
      </tr>
      <tr>
          <td>Gemma 4</td>
          <td>256,000</td>
          <td>約 9</td>
      </tr>
  </tbody>
</table>
<p>數字差異看似不大、累積起來影響顯著：</p>
<ul>
<li><strong>128K context 的「實際容量」</strong>：以中文每字平均 token 數估算、Llama 2（約 2.2 字 / token 的反比、即一字 ≈ 2-3 token）對中文約 6K 中文字、Gemma 4（接近一字一 token）對中文約 14K 中文字、差兩倍以上（估算未含 system prompt + response budget、實際可用更少）。</li>
<li><strong>API 費用</strong>：同樣中文 prompt、Llama 2 費用是 Gemma 4 的兩倍以上（按 token 收費的話）。</li>
<li><strong>長 prompt 的 <a href="/blog/llm/knowledge-cards/prefill/" data-link-title="Prefill" data-link-desc="Prompt 首次處理時的計算階段：把整段輸入跑過模型、產生 KV cache">prefill</a> 時間</strong>：token 多 prefill 慢、<a href="/blog/llm/knowledge-cards/ttft/" data-link-title="TTFT" data-link-desc="Time To First Token：送出 prompt 到第一個 token 出現的等待時間">TTFT</a> 受影響。</li>
</ul>
<p>但這只是其中一個因素。Tokenizer 改進不會自動讓模型「懂」這個語言——還要訓練資料配合。Llama 3 vocab 比 Llama 2 大很多、但對中文表現的提升不只是 vocab 帶來的、也是訓練資料多語言比例提升的結果。</p>
<h2 id="訓練資料分佈語言佔比決定能力">訓練資料分佈：語言佔比決定能力</h2>
<p>Web 文字的語言分佈嚴重不平衡。Common Crawl 跟同類資料源的語言佔比約：</p>
<ul>
<li>英文：60-70%</li>
<li>中文：2-5%</li>
<li>西班牙文、葡萄牙文、日文、法文、德文：各 1-3%</li>
<li>其他幾百種語言：合計 &lt; 10%</li>
</ul>
<p>模型預訓練多半反映這個分佈。即使「主打多語言」的模型、英文仍是主導。</p>
<p>實務影響：</p>
<ul>
<li><strong>事實準確度</strong>：問模型「台灣某縣市的人口」這類本地化問題、中文回答的準確度通常低於英文回答同個問題（即使翻譯為相同 query）。</li>
<li><strong>Reasoning 深度</strong>：複雜中文推理（如解中文奧數題）、模型可能「翻譯成英文 reasoning、再翻回中文」、中間步驟跳過、答案合理但推理鏈不通。</li>
<li><strong>風格 / 慣用語</strong>：中文輸出可能語法 OK、但 idiom 與慣用搭配偏直譯、詞彙選擇偏「翻譯腔」。</li>
<li><strong>長尾事實</strong>：訓練資料少的語言、長尾事實更容易 hallucinate。</li>
</ul>
<p>判讀模型在某語言上的能力強弱、看訓練資料佔比是主要訊號。Qwen 系列訓練資料大量中文、中文能力強；Llama 系列訓練資料英文為主、即使最新版中文表現仍弱於 Qwen 在中文上的表現。</p>
<h2 id="兩因素的獨立性對實務的影響">兩因素的獨立性對實務的影響</h2>
<p>雙因素獨立、實際模型多半落在某個組合狀態：</p>
<p><strong>Gemma 4 / Qwen3 / Llama 3 主流開源旗艦</strong>：</p>
<ul>
<li>Tokenizer：多語言、vocab 256K 級、中文 token 效率接近英文。</li>
<li>訓練資料：中英都有大量比例、Qwen 中文比例高、Llama 英文比例高。</li>
<li>結果：中文能力接近 native level、跨語言能力差距縮小。</li>
</ul>
<p><strong>OpenAI / Anthropic 雲端旗艦</strong>：</p>
<ul>
<li>Tokenizer：tiktoken 等、中文 token 效率中等。</li>
<li>訓練資料：規模極大、所有語言絕對量都多（即使相對佔比低）。</li>
<li>結果：中英都強、絕對能力受訓練規模支撐。</li>
</ul>
<p><strong>早期 Llama 2 / 純英文模型</strong>：</p>
<ul>
<li>Tokenizer：32K 英文中心、中文切散。</li>
<li>訓練資料：英文主導、其他語言極少。</li>
<li>結果：中文勉強可讀、不建議用於對輸出品質有要求的工作場景。</li>
</ul>
<p>判讀新模型對某語言能力時、先看這兩個因素、再參考實測——比直接看 benchmark 數字準。</p>
<h2 id="中文-prompt-何時該翻英機會成本判讀">中文 Prompt 何時該翻英：機會成本判讀</h2>
<p>寫 code 場景常見問題「該用中文還是英文寫 prompt」、答案取決於三個變數：</p>
<h3 id="變數-1模型在中英的能力差距">變數 1：模型在中英的能力差距</h3>
<p>主流開源旗艦（Gemma 4 / Qwen3 / Llama 3）中英差距已縮小、寫 code 場景中英 prompt 表現接近。早期 / 較小模型差距大、英文 prompt 較穩。</p>
<p>判讀：用較強模型可以維持中文、用較弱模型考慮翻英。</p>
<h3 id="變數-2翻譯成本">變數 2：翻譯成本</h3>
<p>翻譯成本包括：時間、認知負擔、可能的精度損失。</p>
<ul>
<li>簡短 prompt（補完、寫單個 function）：翻英成本低、可考慮。</li>
<li>長 prompt（描述複雜需求、多個檔案 context）：翻英成本高、維持中文較划算。</li>
<li>含技術術語的 prompt：英文是 LLM 訓練的主流、術語維持英文較好（即使句子是中文也保留英文 keyword）。</li>
</ul>
<h3 id="變數-3輸出語言要求">變數 3：輸出語言要求</h3>
<ul>
<li>要中文回答（如寫中文 docs、跟中文團隊溝通）：維持中文 prompt 一致性較好。</li>
<li>要英文回答（如 commit message、open source PR）：英文 prompt 自然引導英文輸出、不需 explicit instruct。</li>
</ul>
<h3 id="綜合判讀">綜合判讀</h3>
<p>寫 code 場景的多數情境（主流模型 + 短 prompt + 維持原語言輸出）：直接用中文寫即可、不必特別翻英。例外：</p>
<ul>
<li>用較弱模型（&lt; 14B）、英文較穩。</li>
<li>特殊領域（法律、醫療、學術）、英文資料豐富、翻英可能更穩。</li>
<li>Domain-specific reasoning（數學、邏輯）、英文訓練資料多、翻英可能改善 reasoning 鏈。</li>
</ul>
<p>「直覺說該翻英」常是過度小心、實測通常發現中文跟英文 prompt 表現接近、翻譯成本浪費。</p>
<h2 id="commit--docstring--註解的語言選擇取捨">Commit / Docstring / 註解的語言選擇取捨</h2>
<p>寫 code 場景的「該用什麼語言」決策多半取決於非模型因素：</p>
<h3 id="commit-message">Commit Message</h3>
<ul>
<li><strong>團隊一致性</strong>：團隊都用英文就英文、都用中文就中文。</li>
<li><strong>長期保留</strong>：commit message 進 git 歷史、長期保留、跨團隊成員 / 外部貢獻者讀。</li>
<li><strong>可讀性受眾</strong>：團隊有非中文 reader 就英文、純中文團隊用中文也 OK。</li>
<li><strong>隱私 / 合規</strong>：commit 進 git、可能進 public repo、敏感資訊不該寫進去（不論語言）。</li>
</ul>
<p>模型對中英 commit message 都能寫、選擇主要看團隊跟 repo 屬性、不是看模型偏好。</p>
<h3 id="docstring">Docstring</h3>
<ul>
<li><strong>語言生態慣例</strong>：Python / JavaScript 開源社群慣例是英文 docstring；JetBrains / 微軟在地化文件多中文。</li>
<li><strong>API consumer</strong>：API 給誰用、用什麼語言。</li>
<li><strong>自動化工具</strong>：docs generator、type checker、IDE hint 對英文 docstring 支援較成熟。</li>
</ul>
<h3 id="程式內註解">程式內註解</h3>
<ul>
<li><strong>團隊母語 vs 國際慣例</strong>：團隊母語寫註解最自然、國際慣例（特別 open source）多英文。</li>
<li><strong>複雜邏輯</strong>：用最能精確表達的語言寫、不一定要英文。</li>
<li><strong>TODO / FIXME</strong>：跟團隊慣例一致。</li>
</ul>
<p>這些決策本質上是團隊跟生態問題、不是 LLM 問題。LLM 對中英都能 handle、選哪個取決於 downstream 讀者。</p>
<h2 id="跨語言-reasoning-的失敗訊號">跨語言 Reasoning 的失敗訊號</h2>
<p>跨語言 reasoning（如中文 prompt 要求模型用中文推理過數學題、或用中文回答需要英文事實 retrieval 的問題）容易出現幾種失敗：</p>
<h3 id="內部翻譯失敗">內部翻譯失敗</h3>
<p>模型「中文 prompt → 內部翻譯成英文 reasoning → 翻回中文輸出」、中間步驟跳過、中文輸出看起來合理但推理鏈不通。</p>
<p>判讀訊號：要求模型「請用中文逐步推理」、模型輸出推理鏈不連貫、步驟跳躍。</p>
<p>緩解：強制 step-by-step prompt、或乾脆翻英 prompt 拿英文輸出、再人工譯回中文。</p>
<h3 id="訓練語言切換">訓練語言切換</h3>
<p>模型在某語言上 reasoning 訓練不足、即使理解 query、輸出推理深度受限。</p>
<p>判讀訊號：中文 query 拿到淺薄答案、同樣 query 翻英拿到深入答案。</p>
<p>緩解：複雜推理任務用英文 prompt + 英文輸出、最後再翻譯。</p>
<h3 id="tokenizer-引發的細節遺失">Tokenizer 引發的細節遺失</h3>
<p>中文一字切多個 token 時、模型可能在 token 邊界誤判語意、輸出細節不準。</p>
<p>判讀訊號：細節錯（罕用字 OOV 被切成 byte / 數字本身切分不一致導致算術出錯）、英文同義問題不會錯。</p>
<p>緩解：對細節敏感的任務（數字、日期、人名）強調確認、或翻英降低 tokenizer 誤判機率。</p>
<h3 id="何時跨語言-reasoning-不會失敗--何時翻英無收益">何時跨語言 reasoning 不會失敗 / 何時翻英無收益</h3>
<p>上述三類失敗模式不會均勻發生在所有跨語言任務上、實際觸發條件是「深度推理 + 語言 specific 事實 retrieval」雙條件命中。以下情境通常翻英沒收益、留在中文 prompt 反而省事：</p>
<ul>
<li><strong>Code 補完、語法重構、加 type annotation</strong>：code 本身就跨語言、模型不需要「翻譯」code、中文 prompt 直接寫即可。</li>
<li><strong>短 QA、context-rich prompt</strong>：問題本身就含完整 context（如「這段程式碼做什麼」+ code）、模型不需要做 retrieval、reasoning 深度需求低。</li>
<li><strong>格式 / 結構轉換</strong>：JSON 轉 YAML、Markdown 重排、tabular 整理 — 任務機械化、跟語言關係小。</li>
<li><strong>單檔 refactor</strong>：選定範圍內的改寫、不需跨檔 retrieval、推理深度受 context 限制而非語言。</li>
<li><strong>commit message / docstring 草稿</strong>：套用 template 性質、模型輸出語言跟 prompt 一致較自然。</li>
</ul>
<p>需要翻英的場景集中在「深度推理（多步邏輯 / 數學）」+「需要 retrieval 語言 specific 事實（如某個 framework 的 API、特定論文細節、英文社群討論）」這兩條都命中時、其他場景翻譯成本是浪費。</p>
<h2 id="code-跟自然語言的不對稱">Code 跟自然語言的不對稱</h2>
<p>Code 本身是「英文偏向」的：keyword（<code>if</code>、<code>for</code>、<code>return</code>）、變數名（多半 ASCII）、API（多半英文）。LLM 對 code 的能力跨語言差距較小——code 本身就跨語言、模型不需要「翻譯」code。</p>
<p>但「code + 自然語言」的混合場景仍受自然語言訓練分佈影響：</p>
<ul>
<li>寫 code + 中文 docstring：模型寫 code 表現一致、寫 docstring 受訓練分佈影響。</li>
<li>解釋 code 給人聽：用哪種語言解釋、受該語言訓練分佈影響。</li>
<li>改寫 code 註解：改 code 行為一致、改自然語言部分受訓練分佈影響。</li>
</ul>
<p>判讀「該不該翻英」時、要區分「code 部分」跟「自然語言部分」。Code 部分中英差距小、自然語言部分中英差距視模型而定。</p>
<h2 id="何時過時--何時不過時">何時過時 / 何時不過時</h2>
<p><strong>不會過時的部分</strong>：</p>
<ul>
<li>Tokenizer + 訓練分佈雙因素 framing。</li>
<li>跨語言能力受結構性限制的本質（不只是「模型不夠強」）。</li>
<li>三個變數判讀（能力差距、翻譯成本、輸出語言要求）。</li>
<li>跨語言 reasoning 失敗模式的分類。</li>
<li>Code 跟自然語言的不對稱觀察。</li>
</ul>
<p><strong>會變的部分</strong>：</p>
<ul>
<li>具體模型在特定語言上的當下能力（會隨新模型版本變、Gemma 5 / Qwen4 等出來會再變）。</li>
<li>各 tokenizer 的 vocab 大小（會調整）。</li>
<li>訓練資料的多語言比例（業界正在改善）。</li>
<li>哪些模型「中文能力好」的具體 ranking。</li>
</ul>
<p>看到新模型時、回到雙因素 framework 評估：tokenizer vocab 多大、中文 token 效率如何、訓練資料中文佔比、實測中文表現是否符合預期——這個 framework 不變、評估結果會隨模型版本更新。</p>
<h2 id="下一章">下一章</h2>
<p>下一章：<a href="/blog/llm/03-theoretical-foundations/reasoning-models/" data-link-title="3.8 Reasoning models：test-time compute paradigm" data-link-desc="Chain-of-thought 從 prompting 技巧演化成訓練 paradigm、reasoning model 的內部運作、本地可跑的選項與適用任務">3.8 Reasoning models</a>、看 2024-2026 的 test-time compute paradigm。完整公開課推薦見 <a href="/blog/llm/03-theoretical-foundations/going-deeper-theory/" data-link-title="3.11 想學更深：推薦公開課程" data-link-desc="Karpathy、Stanford CS224N / CS25 / CS336、DeepLearning.AI、Hugging Face：LLM 理論深入學習的完整路線">3.10 想學更深</a>。</p>
]]></content:encoded></item></channel></rss>