コンテンツにスキップ

数学を学び直す意義:AI を読み解く三つの言語

対象読者: 本テーマ第1・2章の内容と、高校数学の微分・ベクトル・確率を学んだ人。大学の線形代数・解析・統計は忘れていてもよく、LLMの内部構造の知識も仮定しません。

前提となる記事:LLMとプログラミング:委譲の損益分岐点と「もっともらしい誤り」の見抜き方

生 Markdown

ChatGPT のような AI を使っていると、「なぜこんな答えが返ってくるのか」「設定を変えたら急に動かなくなったのはなぜか」と首をかしげる場面があります。この記事は、そうした疑問に答えるために、AI の内部で働いている数学をひと通り眺める回です。難しい証明を全部追う必要はありません。読み終えると、AI の不調や数字の見方について「たぶんこの理由だ」と見当をつけられるようになります。

  • LLM の内部は、線形代数(埋め込み・注意機構・低ランク近似)、微分積分(勾配・連鎖律・最適化)、確率統計(尤度・交差エントロピー・ベイズ更新)の三つの言語でほぼ記述し尽くせます。この三つが「共通言語」です。
  • 数学を学び直す目的は、モデルを自作することではありません。挙動を予測し、失敗を説明し、実験を設計するためです。学習率を上げたら発散した、埋め込みの類似度が全部 0.7 くらいになる、検知精度 99% なのに現場では誤報だらけ——これらはすべて数式で説明でき、事前に見積もれます。
  • 高次元空間では、無関係な二つの方向はほぼ直交します(命題 3.2、系 3.5)。「なぜ数千次元のベクトルに何十億もの概念を詰め込めるのか」は、この事実の帰結です。
  • 勾配降下法が収束するかどうかは、学習率 η\eta と関数の平滑さ LL の関係 0<η<2/L0 < \eta < 2/L でほぼ決まります(補題 4.2、例 4.4)。ハイパーパラメータ調整は勘ではなく、この不等式の周りの探索です。
  • 学習で最小化している交差エントロピー(予測が正解からどれだけ外れているかの尺度)は、KL ダイバージェンス(二つの確率分布の違いの尺度)の最小化と同じものです(命題 5.2)。perplexity が「実質的な選択肢の数」を表すことも、この式から出ます。
  • 数学を学ぶ副産物として得られる量化子の扱い(∀∃\forall\exists と ∃∀\exists\forall の区別)と反例を作る習慣は、仕様記述・障害分析・評価設計にそのまま転用できます。

1. 動機:なぜ「使えれば十分」では足りないのか

Section titled “1. 動機:なぜ「使えれば十分」では足りないのか”

前章 LLMとプログラミング で見たとおり、コードを書く作業の相当部分は、すでにモデルに任せられます。任せてよい範囲の目安は 委譲が得になる条件(命題 3.1)[LLMとプログラミング] に定式化しました。API を叩き、プロンプトを整え、出力を検収する。この範囲であれば、数学の知識はほとんど要りません。実際、それで十分に成果が出る局面は多くあります。

問題は、うまくいかなかったときです。

  • 社内文書の検索を埋め込みベクトルで作ったら、どの質問にも同じ文書が上位に来る。
  • ファインチューニングを試したら、損失が数ステップで NaN になった。
  • 異常検知モデルの精度は 99% と報告されているのに、現場の担当者は「9 割が誤報だ」と言う。
  • 評価用データセットでは改善したのに、本番では悪化した。

これらはどれも、ツールの使い方の問題ではありません。空間の幾何、最適化の力学、確率の更新則という、それぞれ別の数学的な原因があります。原因の名前を知らないと、対処は「パラメータをいろいろ変えて祈る」しかなくなります。逆に名前を知っていれば、原因の切り分けは数式一本で終わることがあります。学習率を半分にすべきか、データを増やすべきか、そもそも指標が間違っているのか——判断の根拠が手に入ります。

歴史的に見ても、この構図は新しくありません。18〜19 世紀の技術者は、蒸気機関を熱力学なしで作りました。効率を上げるには経験と勘に頼るしかなく、改良は試行錯誤でした。カルノーとクラウジウスが熱力学第二法則を定式化して初めて、「この機関の効率には理論上の上限がある」「その上限は温度比だけで決まる」と言えるようになりました。作れることと、限界を語れることは違います。

いま LLM を扱う私たちは、蒸気機関を作れるが熱力学を持たない技術者に似ています。幸い、AI の側の「熱力学」はすでに存在し、しかもその大半は大学 1〜2 年の数学です。新しい数学を発明する必要はなく、多くの人が一度は習って忘れたものを取り戻せば足ります。本章では、その「三つの言語」の中身を、実際に手を動かせる形で示します。

まず全体像を押さえます。LLM が文章を受け取ってパラメータを更新するまでの流れは、次の図のように分解できます。各段階に、対応する数学の分野を書き添えました。

LLM の一周と、各段階を支配する数学

三つの分野の役割を一言で言い分けると、こうなります。

分野扱うものLLM における現れ方
線形代数「意味」を座標として表し、変換する埋め込み、注意機構、低ランク近似(LoRA)、次元削減
微分積分「少し動かしたらどう変わるか」を測る勾配、連鎖律、逆伝播、学習率、収束と発散
確率統計「もっともらしさ」と「自信」を測る交差エントロピー、perplexity、温度、評価指標、ベイズ更新

以下、順に見ていきます。定理は完全な形で述べ、証明は行間を埋めます。手を動かせる箇所では数値を最後まで計算します。

3. 線形代数:意味を座標に載せる

Section titled “3. 線形代数:意味を座標に載せる”

3.1. 内積が「意味の近さ」になる仕組み

Section titled “3.1. 内積が「意味の近さ」になる仕組み”

埋め込み(embedding)とは、単語や文書を dd 次元の実ベクトルに対応させる写像です。この対応が有用なのは、ベクトル同士の内積が「意味の近さ」の代理になるからです。

定義 3.1(内積とコサイン類似度)↗

x,y∈Rd\boldsymbol{x}, \boldsymbol{y} \in \mathbb{R}^d に対し、内積を ⟨x,y⟩=∑i=1dxiyi\langle \boldsymbol{x}, \boldsymbol{y}\rangle = \sum_{i=1}^{d} x_i y_i、ノルムを ∥x∥=⟨x,x⟩\|\boldsymbol{x}\| = \sqrt{\langle \boldsymbol{x},\boldsymbol{x}\rangle} と定める。x≠0\boldsymbol{x} \ne \boldsymbol{0}, y≠0\boldsymbol{y}\ne\boldsymbol{0} のとき、

cos⁡(x,y)=⟨x,y⟩∥x∥ ∥y∥\cos(\boldsymbol{x}, \boldsymbol{y}) = \frac{\langle \boldsymbol{x}, \boldsymbol{y}\rangle}{\|\boldsymbol{x}\|\,\|\boldsymbol{y}\|}

をコサイン類似度と呼ぶ。コーシー・シュワルツの不等式により −1≤cos⁡(x,y)≤1-1 \le \cos(\boldsymbol{x},\boldsymbol{y}) \le 1 である。

注意機構(attention)が計算しているのも、本質的にはこの内積です。クエリベクトル q\boldsymbol{q} と各キーベクトル kj\boldsymbol{k}_j の内積 ⟨q,kj⟩\langle \boldsymbol{q}, \boldsymbol{k}_j\rangle を並べ、d\sqrt{d} で割って softmax に通す。つまり「どのトークンに注目するか」は、dd 次元空間での角度の計算に還元されています。

3.2. 高次元では、無関係なものはほぼ直交する

Section titled “3.2. 高次元では、無関係なものはほぼ直交する”

ここで素朴な疑問が生じます。d=768d = 768 や d=4096d = 4096 という次元数は、人間の語彙や概念の数(数十万から数千万)に比べてはるかに小さい。そんな低次元に、なぜ大量の概念を「混ざらずに」詰め込めるのでしょうか。

答えは、高次元空間の幾何にあります。R2\mathbb{R}^2 で互いに 60 度以上離れた方向は 6 本しか取れませんが、R1024\mathbb{R}^{1024} ではその状況が一変します。

命題 3.2(ランダムな二方向の内積)✓

d≥1d \ge 1 とする。u,v\boldsymbol{u}, \boldsymbol{v} を単位球面 Sd−1={x∈Rd:∥x∥=1}S^{d-1} = \{\boldsymbol{x}\in\mathbb{R}^d : \|\boldsymbol{x}\|=1\} 上の一様分布に従う独立な確率ベクトルとする。このとき

E[⟨u,v⟩]=0,Var⁡[⟨u,v⟩]=1d\mathbb{E}[\langle \boldsymbol{u},\boldsymbol{v}\rangle] = 0, \qquad \operatorname{Var}[\langle \boldsymbol{u},\boldsymbol{v}\rangle] = \frac{1}{d}

が成り立つ。

この命題の証明の方針は、「二つのベクトルのどちらも球面上に偏りなく選んでいるのだから、片方の向きを座標軸に合わせて回してしまっても確率は変わらない」と見ることです。すると内積は、単に 1 本のベクトルの第 1 成分になり、その平均と分散だけを調べれば済みます。

証明(命題 3.2)

球面上の一様分布は回転不変です。すなわち任意の直交行列 QQ に対し QuQ\boldsymbol{u} も同じ分布に従います。v\boldsymbol{v} と u\boldsymbol{u} は独立なので、v\boldsymbol{v} を条件付けて固定し、v\boldsymbol{v} を第 1 座標軸 e1\boldsymbol{e}_1 に移す直交行列 QQ を取ると、⟨u,v⟩\langle \boldsymbol{u},\boldsymbol{v}\rangle と ⟨Qu,e1⟩=(Qu)1\langle Q\boldsymbol{u}, \boldsymbol{e}_1\rangle = (Q\boldsymbol{u})_1 は同分布です。したがって ⟨u,v⟩\langle\boldsymbol{u},\boldsymbol{v}\rangle は、球面上一様な単位ベクトルの第 1 成分 u1u_1 と同じ分布を持ちます。

平均について。u\boldsymbol{u} と −u-\boldsymbol{u} は同分布(Q=−IQ = -I は直交行列)なので u1u_1 と −u1-u_1 は同分布であり、期待値が存在する(∣u1∣≤1|u_1|\le 1 より有界)ことから E[u1]=0\mathbb{E}[u_1] = 0 です。

分散について。∥u∥=1\|\boldsymbol{u}\|=1 より ∑i=1dui2=1\sum_{i=1}^{d} u_i^2 = 1 が確率 1 で成り立ちます。両辺の期待値を取ると ∑i=1dE[ui2]=1\sum_{i=1}^{d}\mathbb{E}[u_i^2] = 1。座標の入れ替えも直交変換なので、E[u12]=⋯=E[ud2]\mathbb{E}[u_1^2] = \cdots = \mathbb{E}[u_d^2] であり、よって E[u12]=1/d\mathbb{E}[u_1^2] = 1/d です。平均が 00 なので分散も 1/d1/d になります。

標準偏差は 1/d1/\sqrt{d} です。d=1024d = 1024 なら約 0.0310.031。つまり無関係な二つのベクトルのコサイン類似度は、典型的には 0.030.03 程度の大きさにしかなりません。さらに、この集中はガウス型の尾を持ちます。

次元 dd を 2 から 1024 まで増やしながら、ランダムな二つのベクトルのなす角の分布が 90 度の周りに細く集まっていく様子を見てください。

次元 d を 2 から 1024 まで増やしていくと、ランダムな二つのベクトルのなす角のヒストグラムが、d = 2 の一様な分布から、90 度を中心とする非常に細い山へと集中していく動画。
ランダムな単位ベクトル 2 本のなす角の分布。次元 d が増えるほど 90 度付近に集まる(青は乱数 40000 組、赤は理論の密度)。

定理 3.3(球面の測度集中)※

d≥2d \ge 2 とし、u\boldsymbol{u} を Sd−1S^{d-1} 上の一様分布に従う確率ベクトルとする。任意の t>0t > 0 に対し

Pr⁡[ ∣u1∣≥t ]≤2e−dt2/2\Pr\bigl[\,|u_1| \ge t\,\bigr] \le 2 e^{-d t^2 / 2}

が成り立つ。

注意 3.4

定理 3.3 は球面上の「帽子(cap)」の面積評価そのものです。初等的な証明は K. Ball の講義録 An Elementary Introduction to Modern Convex Geometry(Lemma 2.2)にあります。より一般的な測度集中の枠組みでの扱いは Vershynin High-Dimensional Probability 第 3 章を参照してください。ここでは結果を使います。

系 3.5(ほぼ直交する方向の本数)△

d≥2d \ge 2, t∈(0,1)t \in (0,1) とする。nn が

n<edt2/4n < e^{d t^2 / 4}

を満たすならば、Rd\mathbb{R}^d の単位ベクトル u1,…,un\boldsymbol{u}_1,\ldots,\boldsymbol{u}_n で、すべての i≠ji \ne j について ∣cos⁡(ui,uj)∣<t|\cos(\boldsymbol{u}_i, \boldsymbol{u}_j)| < t となるものが存在する。

証明(系 3.5)

u1,…,un\boldsymbol{u}_1,\ldots,\boldsymbol{u}_n を Sd−1S^{d-1} 上の一様分布から独立に選びます。固定した i≠ji \ne j について、命題 3.2 の証明で見たとおり ⟨ui,uj⟩\langle \boldsymbol{u}_i,\boldsymbol{u}_j\rangle は u1u_1 と同分布なので、定理 3.3 より

Pr⁡[ ∣⟨ui,uj⟩∣≥t ]≤2e−dt2/2.\Pr\bigl[\,|\langle \boldsymbol{u}_i,\boldsymbol{u}_j\rangle| \ge t\,\bigr] \le 2e^{-dt^2/2}.

「ある組 (i,j)(i,j) で tt 以上になる」事象の確率は、和の限界(union bound)により高々

(n2)⋅2e−dt2/2=n(n−1)e−dt2/2<n2e−dt2/2\binom{n}{2}\cdot 2e^{-dt^2/2} = n(n-1)e^{-dt^2/2} < n^2 e^{-dt^2/2}

です。仮定 n<edt2/4n < e^{dt^2/4} より n2<edt2/2n^2 < e^{dt^2/2} なので、この上界は 11 より小さくなります。したがって「すべての組で ∣⟨ui,uj⟩∣<t|\langle\boldsymbol{u}_i,\boldsymbol{u}_j\rangle| < t」となる事象の確率は正であり、そのような配置が少なくとも一つ存在します。単位ベクトルなのでコサイン類似度は内積そのものです。

例 3.6(1024 次元に何本の「概念軸」が入るか)

系 3.5 に d=1024d = 1024 を入れて、閾値 tt を変えて計算します。

  • t=0.1t = 0.1 のとき:e1024×0.01/4=e2.56≈12.9e^{1024 \times 0.01/4} = e^{2.56} \approx 12.9。つまり 12 本程度。
  • t=0.2t = 0.2 のとき:e1024×0.04/4=e10.24≈2.8×104e^{1024 \times 0.04/4} = e^{10.24} \approx 2.8\times 10^{4}。約 2 万 8 千本。
  • t=0.3t = 0.3 のとき:e1024×0.09/4=e23.04≈1.0×1010e^{1024 \times 0.09/4} = e^{23.04} \approx 1.0\times 10^{10}。約 100 億本。

「コサイン類似度 0.30.3 未満なら実質無関係とみなす」という緩い基準を許すだけで、1024 次元に 100 億本の方向が同時に入ります。これが、比較的小さな次元の埋め込みが膨大な概念を保持できる理由です。

同時に、この計算は実務上の警告でもあります。上の見積もりは tt の 2 乗が指数に乗るため、tt を厳しくすると本数は急激に減ります。ですから、埋め込み検索で「類似度 0.8 以上を関連文書とする」といった固定閾値は、次元数とデータ分布に強く依存し、そのままでは移植できません。閾値は、実際の分布(無関係な組のコサイン類似度のヒストグラム)を見てから決めてください。

3.3. 低ランク近似:情報を削らずに小さくする

Section titled “3.3. 低ランク近似:情報を削らずに小さくする”

もう一つ、実務に直結する定理を挙げます。行列の特異値分解(SVD。行列を回転・拡大・回転に分ける分解)にもとづく最良近似の定理です。なお、定理に出てくるフロベニウスノルムは、行列の全成分を二乗して足し、平方根を取った値のことで、行列の「大きさ」を測る物差しです。

定理 3.7(Eckart–Young–Mirsky の定理(フロベニウスノルム版))※

A∈Rm×nA \in \mathbb{R}^{m\times n} の階数を rr とし、その特異値分解を

A=∑i=1rσiuiviT,σ1≥σ2≥⋯≥σr>0A = \sum_{i=1}^{r}\sigma_i \boldsymbol{u}_i \boldsymbol{v}_i^{\mathsf{T}}, \qquad \sigma_1 \ge \sigma_2 \ge \cdots \ge \sigma_r > 0

とする({ui}\{\boldsymbol{u}_i\}, {vi}\{\boldsymbol{v}_i\} はそれぞれ正規直交系)。1≤k<r1 \le k < r なる整数 kk に対し Ak=∑i=1kσiuiviTA_k = \sum_{i=1}^{k}\sigma_i\boldsymbol{u}_i\boldsymbol{v}_i^{\mathsf{T}} とおく。このとき、階数が kk 以下のすべての行列 B∈Rm×nB \in \mathbb{R}^{m\times n} について

∥A−B∥F ≥ ∥A−Ak∥F=∑i=k+1rσi2\|A - B\|_F \ \ge\ \|A - A_k\|_F = \sqrt{\sum_{i=k+1}^{r}\sigma_i^2}

が成り立つ。ここで ∥X∥F=∑i,jXij2\|X\|_F = \sqrt{\sum_{i,j} X_{ij}^2} はフロベニウスノルムである。

注意 3.8

証明は Golub & Van Loan Matrix Computations 第 2 章、または Strang Introduction to Linear Algebra 第 7 章にあります。原論文は C. Eckart and G. Young, “The approximation of one matrix by another of lower rank”, Psychometrika 1 (1936), 211–218 です。この記事では結果の使い方に集中します。

この定理が言っているのは、「kk 個の特異値だけ残して切り捨てる」という素朴な操作が、階数 kk 以下の行列の中で最良だ、ということです。近似の誤差は、捨てた特異値の 2 乗和の平方根で正確に測れます。次元削減、レコメンド、ノイズ除去、そして LoRA による省パラメータ微調整は、すべてこの一つの事実の応用です。

例 3.9(3×2 行列の最良ランク 1 近似を手で求める)

A=(11111−1)A = \begin{pmatrix} 1 & 1 \\ 1 & 1 \\ 1 & -1 \end{pmatrix}

の最良ランク 1 近似を求めます。まず

ATA=(3113)A^{\mathsf{T}}A = \begin{pmatrix} 3 & 1 \\ 1 & 3\end{pmatrix}

です(左上成分は 12+12+12=31^2+1^2+1^2 = 3、非対角成分は 1⋅1+1⋅1+1⋅(−1)=11\cdot 1 + 1\cdot 1 + 1\cdot(-1) = 1)。固有値は特性方程式 (3−λ)2−1=0(3-\lambda)^2 - 1 = 0 より λ=4,2\lambda = 4, 2。対応する固有ベクトルは v1=(1,1)T/2\boldsymbol{v}_1 = (1,1)^{\mathsf{T}}/\sqrt{2}、v2=(1,−1)T/2\boldsymbol{v}_2 = (1,-1)^{\mathsf{T}}/\sqrt{2} です。よって特異値は σ1=4=2\sigma_1 = \sqrt{4} = 2, σ2=2\sigma_2 = \sqrt{2}。

左特異ベクトルは u1=Av1/σ1\boldsymbol{u}_1 = A\boldsymbol{v}_1/\sigma_1 から得られます。

Av1=12(220),u1=12⋅12(220)=12(110).A\boldsymbol{v}_1 = \frac{1}{\sqrt{2}}\begin{pmatrix} 2 \\ 2 \\ 0\end{pmatrix}, \qquad \boldsymbol{u}_1 = \frac{1}{2}\cdot\frac{1}{\sqrt{2}}\begin{pmatrix}2\\2\\0\end{pmatrix} = \frac{1}{\sqrt{2}}\begin{pmatrix}1\\1\\0\end{pmatrix}.

したがって

A1=σ1u1v1T=2⋅12(110)⋅12(11)=(111100).A_1 = \sigma_1 \boldsymbol{u}_1\boldsymbol{v}_1^{\mathsf{T}} = 2\cdot\frac{1}{\sqrt2}\begin{pmatrix}1\\1\\0\end{pmatrix}\cdot\frac{1}{\sqrt2}\begin{pmatrix}1 & 1\end{pmatrix} = \begin{pmatrix}1 & 1\\ 1& 1\\ 0 & 0\end{pmatrix}.

誤差を確認します。

A−A1=(00001−1),∥A−A1∥F=12+(−1)2=2=σ2.A - A_1 = \begin{pmatrix}0&0\\0&0\\1&-1\end{pmatrix}, \qquad \|A-A_1\|_F = \sqrt{1^2+(-1)^2} = \sqrt2 = \sigma_2.

定理 3.7 の主張どおり、誤差は捨てた特異値 σ2\sigma_2 に一致しました。また ∥A∥F2=6=σ12+σ22=4+2\|A\|_F^2 = 6 = \sigma_1^2+\sigma_2^2 = 4 + 2 なので、ランク 1 で全体の 4/6≈66.7%4/6 \approx 66.7\% の「エネルギー」を保持したことになります。

注意 3.10

LoRA は、重み行列 W∈Rm×nW \in \mathbb{R}^{m\times n} を凍結し、更新分だけを ΔW=BA\Delta W = BA(B∈Rm×rB\in\mathbb{R}^{m\times r}, A∈Rr×nA\in\mathbb{R}^{r\times n})という階数 rr の形に制限する手法です。m=n=4096m = n = 4096, r=8r = 8 とすると、通常の全パラメータ更新は 40962=16,777,2164096^2 = 16{,}777{,}216 個の値を扱うのに対し、LoRA は 8×(4096+4096)=65,5368\times(4096+4096) = 65{,}536 個で済みます。比率は 65,536/16,777,216≈0.39%65{,}536 / 16{,}777{,}216 \approx 0.39\% です。この手法が機能する前提は「微調整で必要な更新は本質的に低ランクである」という仮説で、その良し悪しを測る物差しが 定理 3.7 の誤差評価です。詳細は Hu ら (2021) の原論文にあります。

4. 微分積分:学習は坂を下ること

Section titled “4. 微分積分:学習は坂を下ること”

学習とは、損失関数 ff を小さくするパラメータを探すことです。もっとも基本的な方法が勾配降下法 xk+1=xk−η∇f(xk)\boldsymbol{x}_{k+1} = \boldsymbol{x}_k - \eta\nabla f(\boldsymbol{x}_k) で、実務で使われる SGD や Adam もこの変形です。「学習率 η\eta をいくつにすべきか」という問いは、次の定義で定量化できます。

定義 4.1(L-平滑性)↗

f:Rn→Rf:\mathbb{R}^n \to \mathbb{R} は微分可能とする。定数 L>0L > 0 が存在して、すべての x,y∈Rn\boldsymbol{x},\boldsymbol{y}\in\mathbb{R}^n に対し

∥∇f(x)−∇f(y)∥≤L∥x−y∥\|\nabla f(\boldsymbol{x}) - \nabla f(\boldsymbol{y})\| \le L\|\boldsymbol{x}-\boldsymbol{y}\|

が成り立つとき、ff は LL-平滑(勾配が LL-リプシッツ)であるという。

LL は「勾配がどれだけ急に変わりうるか」の上限です。ff が 2 回微分可能なら、LL はヘッセ行列の固有値の絶対値の上限に相当します。

補題 4.2(降下補題と 1 ステップの減少量)✓

f:Rn→Rf:\mathbb{R}^n\to\mathbb{R} は微分可能で LL-平滑とする。このとき、すべての x,y\boldsymbol{x},\boldsymbol{y} に対し

f(y)≤f(x)+⟨∇f(x),y−x⟩+L2∥y−x∥2f(\boldsymbol{y}) \le f(\boldsymbol{x}) + \langle \nabla f(\boldsymbol{x}), \boldsymbol{y}-\boldsymbol{x}\rangle + \frac{L}{2}\|\boldsymbol{y}-\boldsymbol{x}\|^2

が成り立つ。とくに y=x−η∇f(x)\boldsymbol{y} = \boldsymbol{x} - \eta\nabla f(\boldsymbol{x}) とおくと

f(y)≤f(x)−η(1−Lη2)∥∇f(x)∥2f(\boldsymbol{y}) \le f(\boldsymbol{x}) - \eta\Bigl(1 - \frac{L\eta}{2}\Bigr)\|\nabla f(\boldsymbol{x})\|^2

となる。したがって ∇f(x)≠0\nabla f(\boldsymbol{x}) \ne \boldsymbol{0} かつ 0<η<2/L0 < \eta < 2/L ならば f(y)<f(x)f(\boldsymbol{y}) < f(\boldsymbol{x}) であり、η=1/L\eta = 1/L のとき右辺の減少量の係数 η(1−Lη/2)\eta(1-L\eta/2) は最大値 1/(2L)1/(2L) を取る。

この補題の証明の方針は、2 点 x,y\boldsymbol{x}, \boldsymbol{y} を結ぶ線分に沿って 1 変数の関数として積分し、LL-平滑性で勾配の変わり方を抑える、というものです。「勾配があまり急に変わらないなら、一歩進んだ先の損失は、接線で予想した値から二次の誤差分しかずれない」ことを式にしています。

証明(補題 4.2)

g(t)=f(x+t(y−x))g(t) = f(\boldsymbol{x} + t(\boldsymbol{y}-\boldsymbol{x})) とおくと gg は [0,1][0,1] 上で微分可能で、連鎖律より g′(t)=⟨∇f(x+t(y−x)),y−x⟩g'(t) = \langle \nabla f(\boldsymbol{x}+t(\boldsymbol{y}-\boldsymbol{x})), \boldsymbol{y}-\boldsymbol{x}\rangle です。微積分学の基本定理により

f(y)−f(x)=g(1)−g(0)=∫01⟨∇f(x+t(y−x)),y−x⟩ dt.f(\boldsymbol{y}) - f(\boldsymbol{x}) = g(1)-g(0) = \int_0^1 \langle \nabla f(\boldsymbol{x}+t(\boldsymbol{y}-\boldsymbol{x})), \boldsymbol{y}-\boldsymbol{x}\rangle\,dt.

ここから ⟨∇f(x),y−x⟩=∫01⟨∇f(x),y−x⟩dt\langle\nabla f(\boldsymbol{x}), \boldsymbol{y}-\boldsymbol{x}\rangle = \int_0^1 \langle \nabla f(\boldsymbol{x}), \boldsymbol{y}-\boldsymbol{x}\rangle dt を引くと

f(y)−f(x)−⟨∇f(x),y−x⟩=∫01⟨∇f(x+t(y−x))−∇f(x), y−x⟩ dt.f(\boldsymbol{y}) - f(\boldsymbol{x}) - \langle\nabla f(\boldsymbol{x}),\boldsymbol{y}-\boldsymbol{x}\rangle = \int_0^1 \langle \nabla f(\boldsymbol{x}+t(\boldsymbol{y}-\boldsymbol{x})) - \nabla f(\boldsymbol{x}),\ \boldsymbol{y}-\boldsymbol{x}\rangle\,dt.

被積分関数にコーシー・シュワルツの不等式を使い、続いて 定義 4.1 の LL-平滑性を x+t(y−x)\boldsymbol{x}+t(\boldsymbol{y}-\boldsymbol{x}) と x\boldsymbol{x} に適用します(両者の距離は t∥y−x∥t\|\boldsymbol{y}-\boldsymbol{x}\| です)。

≤∫01∥∇f(x+t(y−x))−∇f(x)∥ ∥y−x∥ dt≤∫01Lt∥y−x∥2dt=L2∥y−x∥2.\le \int_0^1 \|\nabla f(\boldsymbol{x}+t(\boldsymbol{y}-\boldsymbol{x})) - \nabla f(\boldsymbol{x})\|\,\|\boldsymbol{y}-\boldsymbol{x}\|\,dt \le \int_0^1 L t\|\boldsymbol{y}-\boldsymbol{x}\|^2 dt = \frac{L}{2}\|\boldsymbol{y}-\boldsymbol{x}\|^2 .

これで第 1 の不等式が示せました。

次に y−x=−η∇f(x)\boldsymbol{y}-\boldsymbol{x} = -\eta\nabla f(\boldsymbol{x}) を代入します。⟨∇f(x),−η∇f(x)⟩=−η∥∇f(x)∥2\langle \nabla f(\boldsymbol{x}), -\eta\nabla f(\boldsymbol{x})\rangle = -\eta\|\nabla f(\boldsymbol{x})\|^2、∥−η∇f(x)∥2=η2∥∇f(x)∥2\|{-\eta}\nabla f(\boldsymbol{x})\|^2 = \eta^2\|\nabla f(\boldsymbol{x})\|^2 なので

f(y)≤f(x)−η∥∇f(x)∥2+Lη22∥∇f(x)∥2=f(x)−η(1−Lη2)∥∇f(x)∥2.f(\boldsymbol{y}) \le f(\boldsymbol{x}) - \eta\|\nabla f(\boldsymbol{x})\|^2 + \frac{L\eta^2}{2}\|\nabla f(\boldsymbol{x})\|^2 = f(\boldsymbol{x}) - \eta\Bigl(1-\frac{L\eta}{2}\Bigr)\|\nabla f(\boldsymbol{x})\|^2 .

係数 φ(η)=η−Lη2/2\varphi(\eta) = \eta - L\eta^2/2 は η\eta の 2 次関数で、φ(η)>0  ⟺  0<η<2/L\varphi(\eta) > 0 \iff 0 < \eta < 2/L です。また φ′(η)=1−Lη=0\varphi'(\eta) = 1 - L\eta = 0 より η=1/L\eta = 1/L で最大となり、φ(1/L)=1/L−1/(2L)=1/(2L)\varphi(1/L) = 1/L - 1/(2L) = 1/(2L) です。

0<η<2/L0 < \eta < 2/L という条件が、実務で「学習率を上げすぎると壊れる」と呼ばれている現象の正体です。閾値 2/L2/L は関数の曲がり具合で決まるので、モデルやデータが変われば変わります。

学習率 η が 2/L より小さいとき学習率 η が 2/L より大きいとき損失が減りながら最小点へ収束する振動しながら遠ざかる
学習率が閾値 2/L の内側にあるか外側にあるかで挙動が変わる

減少するだけでは足りません。「どれくらいの速さで最小値に近づくか」まで言えるのが、次の定理です。

定理 4.3(勾配降下法の収束(凸・L-平滑の場合))✓

f:Rn→Rf:\mathbb{R}^n\to\mathbb{R} は微分可能な凸関数で LL-平滑とし、最小値 f∗=f(x∗)f^{*} = f(\boldsymbol{x}^{*}) を達成する点 x∗\boldsymbol{x}^{*} が存在するとする。学習率 η=1/L\eta = 1/L で xk+1=xk−η∇f(xk)\boldsymbol{x}_{k+1} = \boldsymbol{x}_k - \eta\nabla f(\boldsymbol{x}_k) と定めると、すべての K≥1K \ge 1 に対し

f(xK)−f∗≤L∥x0−x∗∥22Kf(\boldsymbol{x}_K) - f^{*} \le \frac{L\|\boldsymbol{x}_0 - \boldsymbol{x}^{*}\|^2}{2K}

が成り立つ。

この定理の証明の方針は、最小点までの距離 ∥xk−x∗∥2\|\boldsymbol{x}_k-\boldsymbol{x}^{*}\|^2 が一歩ごとにどれだけ縮むかを見て、その縮んだ分が誤差 f(xk+1)−f∗f(\boldsymbol{x}_{k+1})-f^{*} を上から抑える、と示すことです。縮んだ分を kk について足すと、途中の項が打ち消し合って(これを望遠鏡和と呼びます)最初の距離だけが残ります。

証明(定理 4.3)

gk=∇f(xk)\boldsymbol{g}_k = \nabla f(\boldsymbol{x}_k) と書きます。

ステップ 1(1 ステップの減少)。補題 4.2 に η=1/L\eta = 1/L を入れると

f(xk+1)≤f(xk)−12L∥gk∥2.f(\boldsymbol{x}_{k+1}) \le f(\boldsymbol{x}_k) - \frac{1}{2L}\|\boldsymbol{g}_k\|^2 .

とくに f(x0)≥f(x1)≥⋯f(\boldsymbol{x}_0)\ge f(\boldsymbol{x}_1)\ge\cdots と単調非増加です。

ステップ 2(凸性)。ff が凸で微分可能なので、接平面が下から支えます。x∗\boldsymbol{x}^{*} を代入して

f(x∗)≥f(xk)+⟨gk,x∗−xk⟩⟺f(xk)−f∗≤⟨gk,xk−x∗⟩.f(\boldsymbol{x}^{*}) \ge f(\boldsymbol{x}_k) + \langle \boldsymbol{g}_k, \boldsymbol{x}^{*}-\boldsymbol{x}_k\rangle \quad\Longleftrightarrow\quad f(\boldsymbol{x}_k) - f^{*} \le \langle \boldsymbol{g}_k, \boldsymbol{x}_k - \boldsymbol{x}^{*}\rangle .

ステップ 3(両者の結合)。ステップ 1 の右辺の f(xk)f(\boldsymbol{x}_k) にステップ 2 を使うと

f(xk+1)−f∗≤⟨gk,xk−x∗⟩−12L∥gk∥2.f(\boldsymbol{x}_{k+1}) - f^{*} \le \langle \boldsymbol{g}_k, \boldsymbol{x}_k-\boldsymbol{x}^{*}\rangle - \frac{1}{2L}\|\boldsymbol{g}_k\|^2 .

ステップ 4(望遠鏡和にする)。xk+1=xk−gk/L\boldsymbol{x}_{k+1} = \boldsymbol{x}_k - \boldsymbol{g}_k/L を使って距離の差を展開します。

∥xk−x∗∥2−∥xk+1−x∗∥2=∥xk−x∗∥2−∥xk−x∗−gkL∥2=2L⟨gk,xk−x∗⟩−1L2∥gk∥2.\|\boldsymbol{x}_k-\boldsymbol{x}^{*}\|^2 - \|\boldsymbol{x}_{k+1}-\boldsymbol{x}^{*}\|^2 = \|\boldsymbol{x}_k-\boldsymbol{x}^{*}\|^2 - \Bigl\|\boldsymbol{x}_k - \boldsymbol{x}^{*} - \frac{\boldsymbol{g}_k}{L}\Bigr\|^2 = \frac{2}{L}\langle \boldsymbol{g}_k, \boldsymbol{x}_k-\boldsymbol{x}^{*}\rangle - \frac{1}{L^2}\|\boldsymbol{g}_k\|^2 .

両辺に L/2L/2 を掛けると、右辺はちょうどステップ 3 の右辺に一致します。すなわち

f(xk+1)−f∗≤L2(∥xk−x∗∥2−∥xk+1−x∗∥2).f(\boldsymbol{x}_{k+1}) - f^{*} \le \frac{L}{2}\bigl(\|\boldsymbol{x}_k-\boldsymbol{x}^{*}\|^2 - \|\boldsymbol{x}_{k+1}-\boldsymbol{x}^{*}\|^2\bigr).

ステップ 5(総和と単調性)。k=0,1,…,K−1k = 0,1,\ldots,K-1 について足し合わせると、右辺は望遠鏡和になり

∑k=1K(f(xk)−f∗)≤L2(∥x0−x∗∥2−∥xK−x∗∥2)≤L2∥x0−x∗∥2.\sum_{k=1}^{K}\bigl(f(\boldsymbol{x}_k)-f^{*}\bigr) \le \frac{L}{2}\bigl(\|\boldsymbol{x}_0-\boldsymbol{x}^{*}\|^2 - \|\boldsymbol{x}_K-\boldsymbol{x}^{*}\|^2\bigr) \le \frac{L}{2}\|\boldsymbol{x}_0-\boldsymbol{x}^{*}\|^2 .

ステップ 1 の単調性より、左辺の各項は最後の項 f(xK)−f∗f(\boldsymbol{x}_K)-f^{*} 以上です。よって左辺 ≥K(f(xK)−f∗)\ge K\bigl(f(\boldsymbol{x}_K)-f^{*}\bigr) となり、KK で割れば主張を得ます。

誤差が O(1/K)O(1/K) で減る、という結論は覚えておく価値があります。誤差を 10 分の 1 にするには反復回数を 10 倍にする必要がある、ということだからです。「あと少し学習を回せば急に良くなる」ことは、この状況では起きません。改善したければ、反復数ではなく問題の条件(前処理、正規化、モーメンタム)を変える必要があります。

例 4.4(1 次元二次関数で学習率の閾値を確かめる)

f(x)=a2x2f(x) = \frac{a}{2}x^2(a>0a > 0)を考えます。f′(x)=axf'(x) = ax なので ∣f′(x)−f′(y)∣=a∣x−y∣|f'(x)-f'(y)| = a|x-y| となり、この ff は L=aL = a で LL-平滑です(定義 4.1)。勾配降下法は

xk+1=xk−ηaxk=(1−ηa)xkx_{k+1} = x_k - \eta a x_k = (1-\eta a)x_k

なので xk=(1−ηa)kx0x_k = (1-\eta a)^k x_0 です。∣1−ηa∣<1  ⟺  0<η<2/a=2/L|1-\eta a| < 1 \iff 0 < \eta < 2/a = 2/L となり、補題 4.2 の条件と一致します。

具体的に a=1a = 1(すなわち L=1L = 1、閾値は η=2\eta = 2)、x0=1x_0 = 1 として:

  • η=1.0\eta = 1.0:k≥1k \ge 1 で xk=0x_k = 0(1 ステップで最小点に到達)。
  • η=0.5\eta = 0.5:xk=0.5kx_k = 0.5^k。10 ステップで x10≈9.8×10−4x_{10} \approx 9.8\times10^{-4}。
  • η=1.9\eta = 1.9:xk=(−0.9)kx_k = (-0.9)^k。符号が反転しながら ∣x10∣=0.910≈0.349|x_{10}| = 0.9^{10}\approx 0.349。遅いが収束します。
  • η=2.5\eta = 2.5:xk=(−1.5)kx_k = (-1.5)^k。∣x10∣=1.510≈57.7|x_{10}| = 1.5^{10} \approx 57.7、∣x30∣≈1.9×105|x_{30}| \approx 1.9\times10^{5}。発散します。

η=2.5\eta = 2.5 の列は、損失 f(xk)=xk2/2f(x_k) = x_k^2/2 が指数的に増大するため、有限精度の演算ではやがて inf になり、そこから NaN が伝播します。「学習開始直後に損失が NaN になる」障害の多くは、この単純な力学で説明できます。対処の第一手は学習率を下げること、第二手は勾配クリッピングで実効的な ∥gk∥\|\boldsymbol{g}_k\| を抑えることです。

もう一つの柱が連鎖律です。合成関数 f=fT∘⋯∘f1f = f_T\circ\cdots\circ f_1 の微分は、ヤコビ行列(各出力を各入力で偏微分して並べた行列。1 変数の微分係数を多変数に拡張したもの)の積

∂f∂x=JTJT−1⋯J1\frac{\partial f}{\partial \boldsymbol{x}} = J_T J_{T-1}\cdots J_1

になります。この積を右から順に計算するか、左から順に計算するかで、必要な計算量が大きく変わります。損失はスカラーなので、出力側(左)から掛けていけば、常に「行ベクトル × 行列」の計算で済みます。これが逆伝播(backpropagation)であり、パラメータが何億個あっても、勾配の計算コストが順伝播 1 回分の定数倍に収まる理由です。

たとえば各 JtJ_t が 1000×10001000\times1000 の行列で、損失側の最後の JTJ_T だけが 1×10001\times1000 の行ベクトルだとします。左から掛けると、毎回「行ベクトル × 行列」で、1 回の計算量は 100021000^2 回の掛け算の程度です。右から掛けると「行列 × 行列」になり、1 回で 100031000^3 回の掛け算が必要になり、1000 倍重くなります。

xf1f2f3L順伝播:左から右へ値を計算する(実線)逆伝播:損失 L から勾配を左へ戻す(破線)各段で「行ベクトル × ヤコビ行列」だけを計算する
順伝播は入力から出力へ、逆伝播は損失から入力へ向かう

ヤコビ行列の積という見方は、勾配消失・勾配爆発の理解にも直結します。各層の JtJ_t の特異値が平均的に 1 より小さければ積は指数的に 0 へ、1 より大きければ指数的に発散します。残差接続(y=x+F(x)\boldsymbol{y} = \boldsymbol{x} + F(\boldsymbol{x})、ヤコビ行列は I+JFI + J_F)や正規化層は、この積が 1 の近くに留まるようにする工夫だと読めます。

5. 確率統計:もっともらしさと自信を測る

Section titled “5. 確率統計:もっともらしさと自信を測る”

5.1. 交差エントロピーは何を測っているか

Section titled “5.1. 交差エントロピーは何を測っているか”

LLM の出力は、次のトークンについての確率分布です。学習で最小化しているのは、正解分布との交差エントロピーです。

定義 5.1(交差エントロピーと KL ダイバージェンス)↗

有限集合 X\mathcal{X} 上の確率分布 p=(px)x∈Xp = (p_x)_{x\in\mathcal{X}}, q=(qx)x∈Xq = (q_x)_{x\in\mathcal{X}} に対し、

H(p)=−∑xpxlog⁡px,H(p,q)=−∑xpxlog⁡qx,D(p ∥ q)=∑xpxlog⁡pxqxH(p) = -\sum_{x} p_x\log p_x, \qquad H(p,q) = -\sum_{x} p_x \log q_x, \qquad D(p\,\|\,q) = \sum_{x} p_x\log\frac{p_x}{q_x}

をそれぞれエントロピー、交差エントロピー、KL ダイバージェンスと呼ぶ。px=0p_x = 0 の項は 00 と約束し、px>0p_x > 0 かつ qx=0q_x = 0 の場合は D(p∥q)=+∞D(p\|q) = +\infty とする。対数の底は ee(単位は nat)とする。定義から直ちに H(p,q)=H(p)+D(p∥q)H(p,q) = H(p) + D(p\|q) が成り立つ。

命題 5.2(ギブスの不等式)✓

上の記法のもとで、D(p ∥ q)≥0D(p\,\|\,q) \ge 0 である。等号が成り立つのは、px>0p_x > 0 を満たすすべての xx について px=qxp_x = q_x となるとき、かつそのときに限る。とくに H(p,q)≥H(p)H(p,q)\ge H(p) である。

証明(命題 5.2)

px>0p_x > 0 なる xx が存在して qx=0q_x = 0 なら D(p∥q)=+∞>0D(p\|q)=+\infty > 0 なので、以下 px>0⇒qx>0p_x>0 \Rightarrow q_x>0 とします。S={x:px>0}S = \{x : p_x > 0\} とおきます。

t>0t > 0 に対する不等式 log⁡t≤t−1\log t \le t - 1 を使います(これは ψ(t)=t−1−log⁡t\psi(t) = t-1-\log t が ψ′(t)=1−1/t\psi'(t) = 1 - 1/t より t=1t=1 で最小値 ψ(1)=0\psi(1)=0 を取ることからわかります。等号は t=1t=1 のときのみ)。t=qx/pxt = q_x/p_x とおくと

−D(p∥q)=∑x∈Spxlog⁡qxpx≤∑x∈Spx(qxpx−1)=∑x∈Sqx−∑x∈Spx≤1−1=0.-D(p\|q) = \sum_{x\in S} p_x\log\frac{q_x}{p_x} \le \sum_{x\in S} p_x\Bigl(\frac{q_x}{p_x}-1\Bigr) = \sum_{x\in S} q_x - \sum_{x\in S} p_x \le 1 - 1 = 0 .

最後の不等号では ∑x∈Sqx≤∑x∈Xqx=1\sum_{x\in S} q_x \le \sum_{x\in\mathcal{X}} q_x = 1 と ∑x∈Spx=1\sum_{x\in S}p_x = 1 を使いました。よって D(p∥q)≥0D(p\|q)\ge 0 です。

等号成立を調べます。等号には二つの不等号が同時に等号になることが必要で、第 1 の不等号の等号条件は各 x∈Sx\in S で qx/px=1q_x/p_x = 1、第 2 の等号条件は ∑x∉Sqx=0\sum_{x\notin S} q_x = 0 です。前者から x∈Sx\in S で px=qxp_x=q_x が従い、逆にこれが成り立てば ∑x∈Sqx=1\sum_{x\in S}q_x = 1 となって後者も自動的に満たされ、D(p∥q)=0D(p\|q)=0 になります。最後に 定義 5.1 の等式 H(p,q)=H(p)+D(p∥q)H(p,q) = H(p)+D(p\|q) から H(p,q)≥H(p)H(p,q)\ge H(p) を得ます。

この命題は、実務的には次の意味を持ちます。交差エントロピーの最小化は、KL ダイバージェンスの最小化と同じです。H(p)H(p) はデータ側で決まる定数なので、学習が動かせるのは D(p∥q)D(p\|q) の部分だけです。到達できる損失には下限 H(p)H(p) があり、それはデータそのものの曖昧さ(同じ文脈で複数の続きがありうること)です。損失が下がりきらないとき、モデルの能力不足なのかデータの本質的な曖昧さなのかを区別する視点が、ここから得られます。

例 5.3(perplexity を手で計算する)

perplexity は PPL=exp⁡(1N∑i=1N−log⁡q(xi))\mathrm{PPL} = \exp\bigl(\frac{1}{N}\sum_{i=1}^{N} -\log q(x_i)\bigr)、すなわち平均交差エントロピーの指数です。4 個のトークンにモデルがそれぞれ確率 0.5, 0.25, 0.1, 0.050.5,\ 0.25,\ 0.1,\ 0.05 を与えたとします。

−log⁡0.5=0.6931,−log⁡0.25=1.3863,−log⁡0.1=2.3026,−log⁡0.05=2.9957.-\log 0.5 = 0.6931,\quad -\log 0.25 = 1.3863,\quad -\log 0.1 = 2.3026,\quad -\log 0.05 = 2.9957 .

和は 7.37777.3777、平均は 1.84441.8444 nat。よって PPL=e1.8444≈6.32\mathrm{PPL} = e^{1.8444} \approx 6.32 です。

この 6.326.32 は「毎回およそ 6.3 択で迷っている」と読めます。実際、語彙 VV 個の一様分布なら −log⁡(1/V)=log⁡V-\log(1/V) = \log V が常に成り立つので PPL=V\mathrm{PPL} = V となり、perplexity は実効的な選択肢の数を表す量だとわかります。損失が 0.1 下がることの意味も、e0.1≈1.105e^{0.1}\approx 1.105 より「実効選択肢が約 10% 減った」と翻訳できます。

5.2. ベイズの定理:精度 99% が役に立たない場面

Section titled “5.2. ベイズの定理:精度 99% が役に立たない場面”

もう一つ、AI システムの評価で必ず必要になるのがベイズの更新則です。

例 5.4(検知率 99%、誤検知率 1% のモデルが出す警告の信頼度)

不正取引を検知するモデルを考えます。事前確率(実際に不正である割合)を Pr⁡[D]=0.001\Pr[D] = 0.001、検知率(不正を正しく警告する確率)を Pr⁡[+∣D]=0.99\Pr[+\mid D] = 0.99、誤検知率(正常を誤って警告する確率)を Pr⁡[+∣¬D]=0.01\Pr[+\mid \lnot D] = 0.01 とします。警告が出たとき、それが本当に不正である確率 Pr⁡[D∣+]\Pr[D\mid +] はいくつでしょうか。

ベイズの定理より

Pr⁡[D∣+]=Pr⁡[+∣D]Pr⁡[D]Pr⁡[+∣D]Pr⁡[D]+Pr⁡[+∣¬D]Pr⁡[¬D].\Pr[D\mid +] = \frac{\Pr[+\mid D]\Pr[D]}{\Pr[+\mid D]\Pr[D] + \Pr[+\mid\lnot D]\Pr[\lnot D]} .

分子は 0.99×0.001=0.000990.99\times 0.001 = 0.00099、分母の第 2 項は 0.01×0.999=0.009990.01\times0.999 = 0.00999 なので

Pr⁡[D∣+]=0.000990.00099+0.00999=0.000990.01098≈0.0902.\Pr[D\mid+] = \frac{0.00099}{0.00099+0.00999} = \frac{0.00099}{0.01098} \approx 0.0902 .

すなわち約 9%。警告 11 件のうち本物は 1 件です。現場の「9 割が誤報」という感覚は正しく、モデルの「精度 99%」という報告も(別の意味で)正しい。両者が食い違うのは、事前確率 0.0010.001 が効いているからです。

改善の方向も式が教えてくれます。分母を支配しているのは Pr⁡[+∣¬D]Pr⁡[¬D]\Pr[+\mid\lnot D]\Pr[\lnot D] の項なので、検知率 0.990.99 を 0.9990.999 に上げてもほとんど変わりません(0.09090.0909 にしかなりません)。効くのは誤検知率で、0.010.01 を 0.0010.001 にすれば Pr⁡[D∣+]=0.00099/(0.00099+0.000999)≈0.498\Pr[D\mid+] = 0.00099/(0.00099+0.000999) \approx 0.498 と約 50% まで上がります。どの数字を改善すべきかが、この計算だけで決まります。同じ形の比較を、LLM への作業委譲の文脈で行ったのが 偽陽性率と成功率、どちらを改善すべきか(例 7.3)[LLMとプログラミング] です。

6. 抽象化と論理:量化子の順序が仕様を決める

Section titled “6. 抽象化と論理:量化子の順序が仕様を決める”

ここまでは「AI を理解するための数学」でした。しかし数学を学び直す効用は、内容そのものだけではありません。主張を正確に述べる訓練が、そのまま仕様記述と障害分析の能力になります(仕様を述べること自体が避けられない情報量を持つ、という見方は 仕様の記述長の下界(命題 6.2)[AI時代のITエンジニアの生存戦略] にまとめました)。

もっとも実利の大きい訓練が、量化子(∀\forall「すべての」と ∃\exists「ある」)の順序を意識することです。次の二つの定義を比べてください。

定義 6.1(連続と一様連続)↗

I⊂RI\subset\mathbb{R} を区間、f:I→Rf: I\to\mathbb{R} とする。

ff が II 上連続であるとは、

∀a∈I, ∀ε>0, ∃δ>0, ∀x∈I:∣x−a∣<δ  ⟹  ∣f(x)−f(a)∣<ε\forall a\in I,\ \forall \varepsilon > 0,\ \exists \delta > 0,\ \forall x\in I:\quad |x-a| < \delta \implies |f(x)-f(a)| < \varepsilon

が成り立つことをいう。

ff が II 上一様連続であるとは、

∀ε>0, ∃δ>0, ∀a∈I, ∀x∈I:∣x−a∣<δ  ⟹  ∣f(x)−f(a)∣<ε\forall \varepsilon > 0,\ \exists \delta > 0,\ \forall a\in I,\ \forall x \in I:\quad |x-a| < \delta \implies |f(x)-f(a)| < \varepsilon

が成り立つことをいう。

二つの論理式は、∃δ\exists\delta と ∀a\forall a の順序だけが違います。連続では δ\delta は aa ごとに選び直してよく、一様連続では δ\delta が aa に依存せず一つで済む必要があります。この違いは本質的です。

例 6.2(連続だが一様連続でない関数)

I=(0,1]I = (0,1]、f(x)=1/xf(x) = 1/x とします。ff は II 上で連続です(各点 a>0a>0 で分母が 00 にならないため)。しかし一様連続ではありません。

証明します。ε0=1\varepsilon_0 = 1 とおきます。任意の δ>0\delta > 0 に対し、nn を 1/(n(n+1))<δ1/(n(n+1)) < \delta となる十分大きい自然数に取り(n(n+1)→∞n(n+1)\to\infty なので取れます)、xn=1/nx_n = 1/n, an=1/(n+1)a_n = 1/(n+1) とします。すると

∣xn−an∣=1n−1n+1=1n(n+1)<δ|x_n - a_n| = \frac{1}{n}-\frac{1}{n+1} = \frac{1}{n(n+1)} < \delta

ですが、

∣f(xn)−f(an)∣=∣n−(n+1)∣=1≥ε0.|f(x_n)-f(a_n)| = |n - (n+1)| = 1 \ge \varepsilon_0 .

よって「ε0=1\varepsilon_0=1 に対しては、どんな δ\delta を取っても反例の組が存在する」ことになり、一様連続の定義は満たされません。原点に近づくほど傾きが急になるため、δ\delta を aa に依存させないと ε\varepsilon を守れないのです。

この構造は、システムの仕様にそのまま現れます。

  • 「すべてのリクエストに対し、あるサーバが 200ms 以内に応答する」——リクエストごとに応答するサーバが違ってよい。
  • 「あるサーバが存在し、すべてのリクエストに 200ms 以内に応答する」——単一のサーバで全負荷を捌ける。

後者は前者よりはるかに強い主張です。SLA、権限設計(「すべてのユーザにあるロールが割り当てられる」と「あるロールがすべてのユーザに割り当てられる」)、リトライ設計など、量化子の順序を取り違えると設計が壊れる場所は無数にあります。日本語は語順が緩く、両者を同じ文で書けてしまいます。だからこそ、論理式に直して確認する習慣が効きます。

もう一つ、数学が鍛えるのは反例を作る習慣です。例 6.2 で行ったのは「仮定を一つ落としたら何が壊れるか」を具体的に示す作業でした。この作業は、AI システムの評価設計と同じ形をしています。「このプロンプトはうまく動く」という主張に対し、反例(動かない入力)を系統的に探す。境界値、空入力、極端に長い入力、想定外の言語。LLM の出力に対しては、この反例探しがそのまま もっともらしい誤り(定義 7.1)[LLMとプログラミング] の検出になります。数学の演習で身につく「主張を疑って最小の反例を作る」思考は、そのままテストケース設計になります。

最後に、実務家向けの現実的な道筋を示します。目標は「教科書を通読すること」ではなく、上で見たような計算を自力でできることです。

順序分野最低限の到達点到達を確認する問い
1線形代数行列積・ノルム・内積・固有値・特異値分解を計算できる例 3.9 を見ずに解けるか
2確率統計条件付き確率・ベイズの定理・期待値と分散・尤度例 5.4 の改善方針を自分で導けるか
3微分積分偏微分・勾配・連鎖律・テイラー展開の 2 次まで補題 4.2 の 2/L2/L がどこから来たか説明できるか
4論理・集合量化子の順序、否定の取り方、反例の構成定義 6.1 の二つの式の違いを人に説明できるか

順序に理由があります。線形代数が最初なのは、埋め込み・注意機構・低ランク近似という「今日から使える」応用が最も多いからです。確率統計を 2 番目に置いたのは、評価と意思決定に直結し、しかも 例 5.4 のように誤解が高くつくからです。微分積分は学習の内部に踏み込むときに必要になります。論理は最後に置きましたが、実は最初から効いています。

学び方について、判断を一つ添えます。証明を読むだけでなく、手で計算する時間を確保するのがよいでしょう。 例 3.9 の 3×23\times2 行列を紙で分解する 15 分は、SVD の解説を 10 本読むより残ります。数値の裏付けを取るなら NumPy が便利です。

import numpy as np
A = np.array([[1.0, 1.0],
[1.0, 1.0],
[1.0, -1.0]])
U, s, Vt = np.linalg.svd(A, full_matrices=False)
print(s) # [2. 1.41421356]
A1 = s[0] * np.outer(U[:, 0], Vt[0, :])
print(np.round(A1, 6)) # [[1. 1.] [1. 1.] [0. 0.]]
print(np.linalg.norm(A - A1)) # 1.41421356... = sigma_2

手計算の結果と一致しました。この「手で解く → コードで検算する」往復が、もっとも定着します。

AI 時代に価値を出し続けるための全体戦略は AI時代のITエンジニアの生存戦略 にまとめました。自動化がどこで頭打ちになるか、その上限を与えるのが 自動化の上限(系 3.2)[AI時代のITエンジニアの生存戦略] です。数学はその中の一本の柱です。モデルを作る人になるためではなく、モデルの出力を疑い、説明し、制御する側に立つための投資だと考えてください。

演習 8.1易

d=768d = 768 次元の単位球面から独立に一様に選んだ二つのベクトル u,v\boldsymbol{u},\boldsymbol{v} について、コサイン類似度の標準偏差を求めよ。またチェビシェフの不等式を用いて Pr⁡[∣cos⁡(u,v)∣≥0.1]\Pr[|\cos(\boldsymbol{u},\boldsymbol{v})| \ge 0.1] の上界を求め、定理 3.3 から得られる上界と比較せよ。

解答

単位ベクトルなのでコサイン類似度は内積そのものです。命題 3.2 より分散は 1/7681/768、標準偏差は 1/768≈0.03611/\sqrt{768} \approx 0.0361 です。

チェビシェフの不等式は、平均 00 ・分散 σ2\sigma^2 の確率変数 XX に対し Pr⁡[∣X∣≥t]≤σ2/t2\Pr[|X|\ge t]\le \sigma^2/t^2 を与えます。t=0.1t = 0.1 を代入して

Pr⁡[∣⟨u,v⟩∣≥0.1]≤1/7680.01=17.68≈0.130.\Pr[|\langle\boldsymbol{u},\boldsymbol{v}\rangle|\ge 0.1] \le \frac{1/768}{0.01} = \frac{1}{7.68} \approx 0.130 .

一方 定理 3.3 からは

2e−768×0.01/2=2e−3.84≈2×0.02147≈0.04292e^{-768\times 0.01/2} = 2e^{-3.84} \approx 2\times 0.02147 \approx 0.0429

です。指数型の評価のほうが 3 倍ほど強い上界を与えます。差は tt を大きくするとさらに開き、t=0.3t=0.3 では前者が 0.01450.0145、後者が 2e−34.56≈2×10−152e^{-34.56}\approx 2\times10^{-15} になります。チェビシェフは分散しか使わないため、高次元の集中現象を捉えきれません。

演習 8.2標準

f(x)=a2x2f(x) = \frac{a}{2}x^2(a>0a>0)に学習率 η\eta の勾配降下法を適用する。(1) 収束条件を aa と η\eta で表せ。(2) a=4a = 4, η=0.1\eta = 0.1 のとき、∣x10/x0∣|x_{10}/x_0| を求めよ。(3) a=4a = 4 で η=0.5\eta = 0.5 としたときに何が起きるか述べよ。

解答

(1) 例 4.4 と同じ計算です。f′(x)=axf'(x) = ax なので xk+1=(1−ηa)xkx_{k+1} = (1-\eta a)x_k、したがって xk=(1−ηa)kx0x_k = (1-\eta a)^k x_0。x0≠0x_0\ne0 から xk→0x_k\to0 となる条件は ∣1−ηa∣<1|1-\eta a| < 1、すなわち 0<η<2/a0 < \eta < 2/a です。ff は L=aL = a で LL-平滑なので、これは 補題 4.2 の 0<η<2/L0<\eta<2/L に一致します。

(2) 1−ηa=1−0.1×4=0.61-\eta a = 1 - 0.1\times 4 = 0.6 なので

∣x10x0∣=0.610=0.0060466…≈6.0×10−3.\left|\frac{x_{10}}{x_0}\right| = 0.6^{10} = 0.0060466\ldots \approx 6.0\times10^{-3} .

損失は f∝x2f\propto x^2 なので 0.620≈3.66×10−50.6^{20}\approx 3.66\times10^{-5} 倍まで減ります。

(3) 1−ηa=1−0.5×4=−11-\eta a = 1 - 0.5\times4 = -1 なので xk=(−1)kx0x_k = (-1)^k x_0 です。境界 η=2/a\eta = 2/a にちょうど乗っているため、点は x0x_0 と −x0-x_0 を永久に往復し、損失は一切減りません(発散もしません)。補題 4.2 の減少量の係数 η(1−Lη/2)\eta(1-L\eta/2) を計算すると 0.5×(1−4×0.5/2)=0.5×0=00.5\times(1-4\times0.5/2) = 0.5\times 0 = 0 となり、補題が保証する減少量が 00 になることと整合します。実務では、損失が下がらず一定値で振動するときの原因候補として覚えておくとよいでしょう。

演習 8.3標準

あるモデルの検証損失(平均交差エントロピー、単位は nat)が 2.02.0 であった。(1) perplexity を求めよ。(2) 語彙サイズ 50,00050{,}000 の一様分布モデルの perplexity と損失を求め、(1) と比較せよ。(3) 損失が 2.02.0 から 1.91.9 に改善したとき、perplexity は何 % 減るか。

解答

(1) PPL=e2.0=7.389…≈7.39\mathrm{PPL} = e^{2.0} = 7.389\ldots \approx 7.39。実効的に約 7.4 択で迷っている状態です。

(2) 一様分布では各トークンの確率が 1/500001/50000 なので、損失は −log⁡(1/50000)=log⁡50000-\log(1/50000) = \log 50000 です。log⁡50000=log⁡5+4log⁡10=1.6094+9.2103=10.8197\log 50000 = \log 5 + 4\log 10 = 1.6094 + 9.2103 = 10.8197 nat。perplexity は e10.8197=50000e^{10.8197} = 50000 です。定義 5.1 の記法でいえば、これは qq を一様分布に取った場合の H(p,q)H(p,q) にあたります。学習済みモデルは 5000050000 択を実効 7.397.39 択まで絞り込んでいることになります。

(3) PPL\mathrm{PPL} の比は e1.9/e2.0=e−0.1=0.9048e^{1.9}/e^{2.0} = e^{-0.1} = 0.9048 なので、約 9.5%9.5\% の減少です。損失の差だけを見ると「5% の改善」に見えますが、perplexity では約 9.5% になります。損失の絶対値の差 Δ\Delta に対し perplexity は e−Δe^{-\Delta} 倍になる、と覚えてください。

演習 8.4難

X={0,1}\mathcal{X}=\{0,1\} 上で p=(0.5, 0.5)p = (0.5,\,0.5)、q=(0.9, 0.1)q = (0.9,\,0.1) とする。(1) D(p∥q)D(p\|q) と D(q∥p)D(q\|p) を計算し、KL ダイバージェンスが対称でないことを確かめよ。(2) この非対称性が、生成モデルの学習で「モードを平均化する」挙動と「モードを一つ選ぶ」挙動のどちらに対応するかを、D(p∥q)D(p\|q) を最小化する場合について論ぜよ。

解答

(1) 定義 5.1 に従って計算します。

D(p∥q)=0.5log⁡0.50.9+0.5log⁡0.50.1=0.5×(−0.5878)+0.5×1.6094=−0.2939+0.8047=0.5108.D(p\|q) = 0.5\log\frac{0.5}{0.9} + 0.5\log\frac{0.5}{0.1} = 0.5\times(-0.5878) + 0.5\times 1.6094 = -0.2939+0.8047 = 0.5108 .D(q∥p)=0.9log⁡0.90.5+0.1log⁡0.10.5=0.9×0.5878+0.1×(−1.6094)=0.5290−0.1609=0.3681.D(q\|p) = 0.9\log\frac{0.9}{0.5} + 0.1\log\frac{0.1}{0.5} = 0.9\times 0.5878 + 0.1\times(-1.6094) = 0.5290 - 0.1609 = 0.3681 .

0.5108≠0.36810.5108 \ne 0.3681 なので対称ではありません。どちらも正であることは 命題 5.2 と整合します。

(2) D(p∥q)=∑xpxlog⁡(px/qx)D(p\|q) = \sum_x p_x\log(p_x/q_x) を qq について最小化する状況を考えます。pxp_x が大きいのに qxq_x が極端に小さいと log⁡(px/qx)\log(p_x/q_x) が大きくなり、罰が重くなります。逆に px=0p_x = 0 の点では、qxq_x がいくら大きくても項は 00 で罰がありません。したがって D(p∥q)D(p\|q) の最小化は「pp が正の確率を置く場所すべてを qq が覆う」方向に働きます。これがモード平均化(mode-averaging)で、pp が二つの離れた山を持つ場合、qq はその中間にも確率を配る形になります。

言語モデルの通常の学習は交差エントロピー H(p,q)H(p,q) の最小化であり、命題 5.2 で見たとおり H(p,q)=H(p)+D(p∥q)H(p,q) = H(p) + D(p\|q) なので、これは D(p∥q)D(p\|q) の最小化と同じです。学習したモデルが「無難で平均的な出力」を返しがちな傾向には、この目的関数の非対称性が寄与しています。逆向きの D(q∥p)D(q\|p) を最小化すると、qq は pp の山の一つに集中する(モード探索的な)挙動を示します。

  • G. Strang, Introduction to Linear Algebra, 5th ed., Wellesley-Cambridge Press, 2016 — 第 7 章(特異値分解と低ランク近似)。
  • G. H. Golub and C. F. Van Loan, Matrix Computations, 4th ed., Johns Hopkins University Press, 2013 — 第 2 章(行列ノルムと最良低ランク近似)。
  • S. Boyd and L. Vandenberghe, Convex Optimization, Cambridge University Press, 2004 — 第 9 章(無制約最小化と降下法)。全文が著者サイトで公開されています: https://web.stanford.edu/~boyd/cvxbook/
  • T. M. Cover and J. A. Thomas, Elements of Information Theory, 2nd ed., Wiley, 2006 — 第 2 章(エントロピー、相対エントロピー、相互情報量)。
  • R. Vershynin, High-Dimensional Probability: An Introduction with Applications in Data Science, Cambridge University Press, 2018 — 第 3 章(球面と高次元分布における測度集中)。
  • I. Goodfellow, Y. Bengio, and A. Courville, Deep Learning, MIT Press, 2016 — 第 2〜4 章(線形代数・確率論・数値計算の基礎)。オンライン版: https://www.deeplearningbook.org/
  • E. J. Hu et al., “LoRA: Low-Rank Adaptation of Large Language Models”, arXiv:2106.09685 (2021). https://arxiv.org/abs/2106.09685

このテーマの 100 本ノック(30 問)

執筆: Claude Code(Sonnet 5.5)・監査 3 回(Claude Code)・最終 2026-10-12

この記事の誤りを報告する ・運営: 夢現技研合同会社 ・料金 ・利用条件 ・特定商取引法に基づく表記

© 2026 夢現技研合同会社 ・コード例は MIT ライセンスです。