論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
スケーリング則
Scaling Law
深層学習

🔖 キーワード索引

スケーリング則大規模モデルLLM計算量データ量GPT
Kaplan 則Chinchilla 則べき乗則両対数(log-log)プロットパラメータ数 N学習トークン数 D計算予算 C ≈ 6ND還元不能な損失 L∞compute-optimalinference-optimalIsoFLOP 曲線創発(emergent ability)順位-規模則(Zipf)外挿

💡 30秒で分かる結論

🍰 まずはやさしく

規模と性能のルールのようなものです。

AIを効率よく強くするために使います。

勉強時間と点数の関係に似ています。

性能がどう上がるかを学びます。

スケーリング則 ── モデルサイズ・データ量・計算量と性能の関係

📍 文脈 ── どこで出会うか

🍰 まずはやさしく

AIを作るための設計図のようなものです。

予算をどう使うか決めるために使います。

スマホアプリの開発計画に似ています。

この考え方がどこで使われるか読みます。

GPT-3、 GPT-4、 LLaMA など巨大言語モデル開発の設計原理。 「予算 C があるとき、 どうパラメータとデータを配分すべきか」の指針です。

🎨 直感で掴む

🍰 まずはやさしく

規模を大きくすると性能が上がる法則です。

どれくらい強くなるか予想するために使います。

部活の練習量で上達が変わる感覚に似ています。

直感的にわかる仕組みを読みます。

従来の機械学習の常識:

大規模言語モデルでの発見:

スケーリング則の核心は「規模を対数軸で見ると、 性能(損失)が一定の傾き α の直線で下がる」点にある。 GPT 系の実験では、 パラメータ数 N を 100M → 1B → 10B → 100B と 3 桁上げても、 テスト損失 L は $L(N)=(N_c/N)^{\alpha_N}$ に沿って綺麗に下がり続けた。 「モデルを 10 倍にすると損失は約 $10^{-\alpha_N}$ 倍」というべき乗則が、 桁をまたいで安定して成り立つ ── これがスケーリング則の衝撃である。

この「べき乗則で規模と量が結びつく」という構造は、 実は統計学の古典にも現れる。 SSDSE-B-2026 の総人口 (A1101) を母集団に見立て、 サンプル数 N を増やして平均を推定すると、 標準誤差 SE は $\text{SE}\propto N^{-1/2}$、 すなわち指数 $\alpha=0.5$ のべき乗則で縮む。 「規模 N を上げると誤差がべき乗で減る」という点で LLM の損失スケーリングと同じ形をしており、 大規模 AI の直感を身近な実データで体感できる(この 1/√N 則は SSDSE-B-2026 の 47 都道府県からのサブサンプリング実験でも簡単に実測できる)。

ただしべき乗則はある範囲内での経験則にすぎない。 LLM でも損失は 0 には落ちず、 言語固有の不確実性に由来する下界 $L_\infty$(irreducible loss)で頭打ちになる。 分布が変わる領域や上限のある指標では直線が曲がる。 次節以降では、 仮想の観測点から指数 α と係数 $N_c$ を推定し、 外挿予測の妥当性と限界を数値で確かめていく。

🎨 SSDSE-B-2026 を素材に「規模が増えると何が起きるか」を体感する

スケーリング則 (scaling law) の数式は L(N) = (N_c / N)^α + L_∞ のように書けます。 言葉にすれば 「規模 N を倍にすると、 残差ロスはある一定の指数 α でじりじり下がるが、 ゼロにはならず L_∞ で頭打ちになる」です。 LLM 研究の文脈では N がパラメータ数ですが、 学習の入り口では 「サンプル数 N を増やしたとき推定誤差がどう減るか」という統計学の古典問題で十分体感できます。 そこで本節では SSDSE-B-2026(47 都道府県 × 109 指標 × 12 年)の最新年データを使って、 サブサンプル数を変えながら推定誤差のスケーリング曲線を描きます。

📊 図 1 — 左は 2023 年度の総人口 N(A1101、千人)と一般診療所数 G(I5102)を両対数軸に置いた散布図です。 47 点がほぼ一直線に乗り、 G = 1.08·N^0.966(R² = 0.968)と当てはまります。 これは y = a·x^β 型の関係を SSDSE-B-2026 が経験的に持っていることを示し、 スケーリング則 が想定する「べき乗則」の前提とよく親和します。 右は総人口の 47 値を母集団に見立て、 復元抽出のサンプル数 N を 2→256 と増やしたときの平均の標準誤差(各 N で 4,000 回)です。 193 万人から 17 万人まで縮み、 両対数の傾きは −0.496 と理論の −0.5(SE ∝ 1/√N)にほぼ一致します。

左:総人口と一般診療所数の両対数散布図とべき乗則の当てはめ直線。右:サンプル数 N を増やしたときの平均の標準誤差が傾き −0.5 の直線で縮む様子

📊 図 2 — 総人口のヒストグラムを原尺度(左)と log10(右)で並べたもの。 原尺度では東京都 1,408.6 万人・神奈川県 922.9 万人・大阪府 876.3 万人が右に離れた歪度 2.22 の右裾分布ですが、 log10 を取ると歪度 0.79 まで和らぎます。 ただし 6.7〜7.0 付近に大都市圏の県がまとまり、 まだ右に偏っているので、 正規分布になったとまでは言えません(Shapiro–Wilk の p = 0.006)。 スケーリング則 で「ロスの対数」を縦軸に置くのと同じ動機で、 「規模変数は乗法的に効くので log を取ると線形に近づく」という共通の知恵があります。

総人口のヒストグラム。左は原尺度、右は log10 変換後

📊 図 3 — 都道府県を 8 地方ブロック(北海道 / 東北 / 関東 / 中部 / 近畿 / 中国 / 四国 / 九州沖縄)に分け、 ブロックごとに総人口 → 一般診療所数のべき乗則を当てはめた指数 β(点 ± 標準誤差)。 全国 1 本の β = 0.966 に対し、 東北 0.88 から四国 1.08 まで散らばります(北海道は 1 道だけで推定できません)。 県数が 4〜9 と少ないので標準誤差も大きく、 四国は ±0.23 あります。 スケーリング則 の文脈で言えば 「異なるサブ集団は同じ係数を共有しないことが多い」という落とし穴を体感できる図です。

7 地方ブロックごとに当てはめたべき乗則の指数 β と標準誤差、全国 1 本の β = 0.966 の比較

📝 データについて(教材補足):本節以降の SSDSE 例はすべて実在列だけで再現できます。 規模指標には総人口 A1101(人単位。 表示は千人)と一般診療所数 I5102 を用い、 標準誤差の SE ∝ 1/√N(α=0.5) デモは A1101 を母集団に見立てます。 読み込みは encoding='cp932'・skiprows=[1]・2023 年フィルタで統一しています。 なお SSDSE-B-2026 には GDP に当たる経済生産の列は収録されていないため、 規模とともに増える量の例には一般診療所数 I5102 を使っています。

📐 定義/数式

🍰 まずはやさしく

規模と性能の関係を表した数式です。

正確な計算をするために使います。

テストの点数を計算する式に似ています。

具体的な数式と定義を読みます。

【Kaplan et al. 2020 のスケーリング則】
$$ L(N) = (N_c / N)^{\alpha_N} $$  (パラメータ数 N に対する損失)
$$ L(D) = (D_c / D)^{\alpha_D} $$  (データ量 D に対する損失)
$$ L(C) = (C_c / C)^{\alpha_C} $$  (計算量 C に対する損失)
$\alpha_N \approx 0.076, \alpha_D \approx 0.095, \alpha_C \approx 0.050$

📐 べき乗則 vs 線形当てはめ ── 同じ散布図でも違って見える

スケーリング則 で重要なのは「線形ではなくべき乗則を使う」という選択です。 同じデータでも当てはめ式が違えば見え方も予測も大きく変わります。 47 都道府県の総人口 N(千人)と一般診療所数 G(施設数)について、 両方を試して比べると次のような違いが現れます。

当てはめ式 推定パラメータ R² (log 軸) 外挿の挙動
線形 G = a·N + ba≈0.91、 b≈−1740.94小規模で負値、 過大評価
べき乗 G = a·N^βa≈1.08、 β≈0.970.97小規模も正値、 1/4 倍でも妥当
対数線形 logG = a·logN + b傾き 0.97、 切片 0.030.97べき乗と等価、 残差検査が楽
飽和 G = G_∞ − (a/N)^β収束せず(上限なし)―この範囲では頭打ちが見えず不適
2 区分線形(東京除外)傾きが分割で変化0.94外れ値依存、 解釈が難しい
ロジスティック G = K / (1+e^{−r(N−N₀)})K≈1.9e4、 r 小0.96人口最大付近は飽和を示唆

💬 narration:R² が高いだけでは選べないのが当てはめ式選びの難しさです。 「外挿で物理的に意味のある値を返すか」「残差の構造が一様か」を見るのが定石。 LLM のスケーリング則 では 飽和項 L_∞ を持つ式が経験的に最もよく当てはまり、 これは「データやモデルをいくら大きくしても、 言語の不確実性に由来する 0 にならないロス(irreducible loss)」が物理的にあるからだと解釈されています。

📐 数式の徹底解剖 ── Hoffmann 式の意味と導出

Chinchilla 論文の完全な経験式は:

$$ L(N, D) = E + \frac{A}{N^{\alpha}} + \frac{B}{D^{\beta}} $$

推定値は $E \approx 1.69$(エントロピー下界)、 $A \approx 406.4$、 $B \approx 410.7$、 $\alpha \approx 0.34$、 $\beta \approx 0.28$。

最適配分の導出

計算量 C は概ね $C = 6 N D$(トランスフォーマー 1 ステップあたりの FLOP)。 制約 $C = 6 N D$ の下で $L$ を最小化するラグランジュ法:

$$ \mathcal{L}(N,D,\lambda) = E + A N^{-\alpha} + B D^{-\beta} - \lambda (6ND - C) $$

$\partial_N = 0$ より $-\alpha A N^{-\alpha-1} = 6 \lambda D$、 $\partial_D = 0$ より $-\beta B D^{-\beta-1} = 6 \lambda N$。 これを比をとると:

$$ \frac{\alpha A}{\beta B} \cdot \frac{D}{N} = \frac{N^{\alpha+1}}{D^{\beta+1}} $$

IsoFLOP 曲線による推定値を代入すると $D / N \approx 20$、 すなわち「パラメータ 1 個あたり 20 トークン」という経験則になります(下のパラメトリック推定では同じ計算量で D/N が数十になり、 比の水準は手法で幅があります)。

三系列の最適化

approach 何を固定 何を変える 推定するもの
IsoFLOP curves計算量 C を複数値で固定N(D は C/6N から自動決定)$N_{\text{opt}}(C)$
parametric loss-全観測 $(N_i, D_i, L_i)$$E, A, B, \alpha, \beta$
IsoLoss contoursロス L を複数値で固定(N, D) 平面上の等高線最小 C となる点

3 手法すべてが「N と D はほぼ同じ指数で増やせ」という同じ結論に収束したこと(D/N の水準は IsoFLOP 系の約 20 からパラメトリック推定の数十まで幅がある)が、 Chinchilla 則の信頼性の根拠です。

📊 Chinchilla 数表 ── 計算予算と最適規模の対応

Hoffmann et al. (2022) は計算予算 C(FLOPs)に対する最適 N と D を以下のように推定しました。 ここでは論文の Table 3 を再構成し、 実務的な目安としても使える表に整理します。

計算予算 C(FLOPs) 最適 N(パラメータ) 最適 D(トークン) N/D 比 既存モデル参照
1.21×10²⁰1B20.2B1:20小型 LM
1.23×10²²10B205.1B1:21
5.76×10²³67B1.5T1:22Chinchilla(70B・1.4T)・Gopher 280B と同じ計算量
3.85×10²⁴175B3.7T1:21GPT-3 175B は 300B トークンで学習
9.90×10²⁴280B5.9T1:21Gopher 280B も 300B トークン
3.43×10²⁵520B11.0T1:21
1.27×10²⁶1T21.2T1:21

💬 narration:N/D 比がほぼ 1:20 で一定なのが Chinchilla の核心メッセージ。 「N を 1 増やしたら D を 20 増やす」が計算最適。 GPT-3 175B は D≈300B しか使っていなかったので「データを 10 倍にする余地があった」と指摘された。 ただし これは「学習時のロス最小化」の最適であって、 「推論時の効率(小さい N で速く動く)」を加味するなら別の最適点になる(inference-optimal scaling)。

🔬 数式を言葉で読み解く

N
非埋め込みパラメータ数
D
学習トークン数
C
計算量 ≈ 6 × N × D(FLOPs)
L
テスト損失(クロスエントロピー)
Compute-optimal
予算 C のとき N と D をどう振り分けるか最適化

🔬 式の各項を数字で読む — Gopher 280B と Chinchilla 70B

Kaplan 則の $L(N) = (N_c/N)^{\alpha_N}$ は「損失全体」が N のべき乗で下がると読む。 α_N = 0.076 は「N を 10 倍にすると損失が 10^(−0.076) = 0.839 倍になる」という意味で、 N_c は損失がちょうど 1 になる規模(8.8×10¹³)を表す目盛りにすぎず、 実在のモデルの大きさではない。

Chinchilla の $L(N,D) = E + A/N^{\alpha} + B/D^{\beta}$ は、 損失を 3 つに分けて読む。 E(≈ 1.69)はどれだけ規模を上げても残る部分で、 文章そのものの予測しにくさにあたる。 A/N^α は「モデルが小さいことによる損失」、 B/D^β は「学習データが少ないことによる損失」。 α = 0.34 は Kaplan の 0.076 よりずっと大きいが、 これは E を差し引いた残りの部分だけに掛かる指数だからで、 2 つの α を直接比べることはできない。

3 つの項に実在のモデルの N と D を入れると、 どの項が損失を押し上げているかが数字で見える。

🎯 このコードでやること:Chinchilla の 3 項式に Gopher 280B・Chinchilla 70B・GPT-3 175B の N と D を代入し、 モデル項とデータ項の大きさを比べる。 さらに Gopher と同じ計算量のまま N を減らして D を増やしたときの損失を求める。

📥 入力例 式の定数: E = 1.69, A = 406.4, B = 410.7, α = 0.34, β = 0.28(Hoffmann et al. 2022) Gopher 280B: N = 2.8e11, D = 3.0e11 Chinchilla 70B: N = 7.0e10, D = 1.4e12 GPT-3 175B: N = 1.75e11, D = 3.0e11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Chinchilla の 3 項式 L(N, D) = E + A / N**alpha + B / D**beta(Hoffmann et al. 2022 の推定値)
E, A, B, alpha, beta = 1.69, 406.4, 410.7, 0.34, 0.28
models = {  # 名前: (パラメータ数 N, 学習トークン数 D)
    "Gopher 280B":     (280e9, 300e9),
    "Chinchilla 70B":  (70e9, 1.4e12),
    "GPT-3 175B":      (175e9, 300e9),
}
print(f"{'モデル':<16}{'C=6ND':>10}{'モデル項':>9}{'データ項':>9}{'L':>8}")
for name, (N, D) in models.items():
    termN, termD = A / N**alpha, B / D**beta
    print(f"{name:<16}{6*N*D:>10.2e}{termN:>9.3f}{termD:>9.3f}{E+termN+termD:>8.3f}")
# 同じ計算量のまま N を半分・D を 2 倍にしたら?
N, D = 280e9, 300e9
for k in [1, 2, 4, 8]:
    n, d = N / k, D * k
    print(f"N={n/1e9:>5.0f}B, D={d/1e12:>4.2f}T -> L = {E + A/n**alpha + B/d**beta:.3f}")
📤 実行例(実測) モデル C=6ND モデル項 データ項 L Gopher 280B 5.04e+23 0.052 0.251 1.993 Chinchilla 70B 5.88e+23 0.083 0.163 1.937 GPT-3 175B 3.15e+23 0.061 0.251 2.002 N= 280B, D=0.30T -> L = 1.993 N= 140B, D=0.60T -> L = 1.963 N= 70B, D=1.20T -> L = 1.944 N= 35B, D=2.40T -> L = 1.936

💬 Gopher 280B はモデル項 0.052 に対してデータ項が 0.251 と 5 倍近くあり、 損失を押し上げているのはデータの少なさのほうだと読める。 ほぼ同じ計算量(5.9×10²³)の Chinchilla 70B は、 モデル項が 0.083 に増える代わりにデータ項が 0.163 まで下がり、 合計 1.937 と Gopher の 1.993 より低い。 N を半分・D を 2 倍にする操作を繰り返すと損失は 1.993 → 1.963 → 1.944 → 1.936 と下がり続けるが、 下がり幅は 0.030 → 0.019 → 0.008 と縮んでいく。 この式の上では最適点は N ≈ 35B 付近にあり、 論文の IsoFLOP 法が示す「D/N ≈ 20」(70B)より小さいモデルを指す。 同じ論文の中でも推定法で最適な比が変わることは、 🐍 の当てはめ例とも一致する。

読み方をまとめると、 指数は「規模を 10 倍にしたときの縮み方」、 定数 E は「規模では消せない床」、 N と D の 2 項の大小は「次にどちらを増やすと効くか」を表している。

🔬 数式を言葉で読み解く(log-log プロット編)

スケーリング則 の基本式 L(N) = (N_c / N)^α + L_∞ は、 そのままの形では理解しにくい。 log を取って、 引き算してから両辺の log を取ると意味がよく見えてきます。

$$\log\bigl(L(N) - L_\infty\bigr) = \alpha \log N_c - \alpha \log N$$

この式を読み解くと:

📐 重要な所作:「L_∞ を引いてから log を取る」が肝心。 L_∞ を引かずに log L を縦軸にすると、 大規模域でロスが頭打ちになる効果が直線から外れるためフィットが悪くなる。 Chinchilla 論文(Hoffmann et al. 2022)はこの 3 項モデルを丁寧に当てはめて、 Kaplan 2020 の単純な 2 項式とは違う結論(同計算予算なら N と D は同じスケールで増やすべき)を導いた。

⚠️ 注意:log-log プロットは「直線に見えやすい」性質があり、 ノイズや少サンプルの場合「あたかもスケーリングしているように錯覚」しやすい。 信頼区間を一緒に描く・残差プロットを別に出す・複数 seed や bootstrap で再計算する、 が定石です。

📚 スケーリング則の用語辞典

FLOP / FLOPs / FLOP/s
FLOP = Floating Point Operation(演算 1 回)、 FLOPs = 複数形(総量)、 FLOP/s = per second(速度)。 文脈で混同しやすい。 訓練計算量 C [FLOPs] と GPU の演算速度 [FLOP/s] の関係は $C / \text{FLOP/s} = $ 訓練時間。
トークン数 D
訓練データを tokenizer で区切ったときの総トークン数。 単純な「文字数」ではなく、 SentencePiece や BPE 等の語彙で決まる「サブワード単位」。 日本語コーパスは英語より 1.5〜2 倍のトークン数になりがち。
パラメータ数 N
学習対象の重みの総数。 埋め込み層を含むかどうかで「N」が変わる流派あり。 Chinchilla 論文は埋め込みを含まない「non-embedding parameters」を使う。 これも比較時の落とし穴。
IsoFLOP curve
同じ計算量 C のもとで N を変えてロスをプロットしたグラフ。 各 C で「最適 N」が一意に決まる。 これを log-log にプロットすると傾き 0.5 の直線 ── これが Chinchilla 則。
μP(Maximal Update Parameterization)
Yang & Hu (2021) が提案した、 ハイパーパラメータがモデル幅に対してスケール不変になる初期化+学習率設計。 小モデルで調整した HP が大モデルでもそのまま使えるため、 巨大モデルのチューニングコストを劇的に削減。
Loss plateau / saturation
スケールしてもロスが下がらなくなる現象。 データ品質の上限、 trainable parameter の上限(埋め込み層の表現力等)、 ノイズフロアなどが原因。

🧮 実値で計算してみる

Chinchilla(DeepMind 2022)の発見:

Kaplan 則 $L(N) = (N_c/N)^{\alpha}$ を、 規模 N = 10⁷〜10¹⁰ の 4 点の test loss から係数 $N_c, \alpha$ を逆算し、 さらに 100 倍スケールアップ時の loss を外挿する。

使用データ: 説明用に作った仮想の 4 点(N = 10⁷, 10⁸, 10⁹, 10¹⁰ に L = 3.5, 2.6, 2.0, 1.5。 実在のモデルの値ではない)。 N(パラメータ数)と L(テスト交差エントロピー、 単位 nats)。 両対数を取れば直線になることを利用する。

Step操作数値
1観測点 (N, L) を log 変換log N = [16.12, 18.42, 20.72, 23.03]、 log L = [1.253, 0.956, 0.693, 0.405]
2傾き $-\alpha$ を最小二乗で計算: $-\alpha=\mathrm{cov}(\log N, \log L)/\mathrm{var}(\log N)$cov = -0.807, var = 6.63、 $-\alpha = -0.122$ → $\alpha \approx 0.122$
3切片 $\alpha \log N_c = \overline{\log L} + \alpha \cdot \overline{\log N}$0.827 + 0.122·19.57 = 3.21 → $\log N_c = 26.36$ → $N_c \approx 2.8 \times 10^{11}$
4N=10¹² で外挿: $L = (2.8\!\times\!10^{11} / 10^{12})^{0.122}$$(0.28)^{0.122} = e^{0.122 \cdot \ln 0.28} = e^{-0.155} \approx 0.86$ → 約 0.86 nats(フィット上の 10¹⁰ の loss 1.50 から約 4 割減)

手計算で得た $\alpha=0.122$、 $N_c\approx 2.8\times 10^{11}$、 外挿値 0.86 は次節の Python (scipy.optimize.curve_fit) 出力(α=0.123、 N_c=2.68×10¹¹、 外挿 0.851。 対数空間回帰と非線形最小二乗の違いでわずかにずれる)と概ね一致する。

🧮 手で解く確認問題 — 指数から予算を逆算する

  1. 計算量の指数 α_C = 0.050 のとき、 損失を 10% 下げる(0.9 倍にする)には計算予算を何倍にすればよいか。
    解答: k^(−0.050) = 0.9 より k = 0.9^(−1/0.050) = 0.9^(−20) = e^(20 × 0.1054) = e^2.107 ≈ 8.2 倍。 損失を半分にするなら 2^20 ≈ 105 万倍で、 下げ幅を欲張るほど予算は爆発的に増える。
  2. Kaplan 則(N_opt ∝ C^0.73、 D_opt ∝ C^0.27)と Chinchilla 則(どちらも C^0.50)で、 予算を 10 倍にしたときの N と D の倍率を比べよ。
    解答: Kaplan では N が 10^0.73 = 5.37 倍、 D が 10^0.27 = 1.86 倍。 Chinchilla では N も D も 10^0.5 = 3.16 倍。 Kaplan の配分に従うと予算の大半がモデルの大きさに回り、 データが足りなくなる。
  3. Chinchilla の表で N = 1T、 D = 21.2T の行の計算量が 1.27×10²⁶ FLOPs になることを確かめよ。
    解答: C ≈ 6ND = 6 × 10¹² × 2.12×10¹³ = 1.272×10²⁶。 表の値と一致する。 「6」は 1 トークンあたり順伝播で 2N、 逆伝播で 4N 回の演算をする、 という見積もりから来る。
  4. Chinchilla の 3 項式で、 Gopher(D = 3×10¹¹)のデータ項 0.251 を Chinchilla 70B と同じ 0.163 まで下げるには、 学習トークン数を何倍にすればよいか。
    解答: B/D^β の比は (D₂/D₁)^(−0.28) なので、 D₂/D₁ = (0.251/0.163)^(1/0.28) = 1.54^3.57 ≈ 4.7 倍。 3×10¹¹ × 4.7 ≈ 1.4×10¹² で、 Chinchilla が実際に使った 1.4 兆トークンになる。

🧮 実値で計算してみる ① ── サンプル数を増やすと平均推定の誤差はどう減るか

最も基本的なスケーリング則の例は 「サンプル数 N で平均を推定したときの標準誤差 SE は 1/√N で減る」です。 これは α=0.5 のべき乗則そのもの。 SSDSE-B-2026 の総人口(47 都道府県、 母集団とみなす)から N=5, 10, 20, 30, 40 を非復元抽出し、 各 N で 1,000 回繰り返した標準誤差を求めると次のような表になります。

サンプル数 N 標本平均(千人) 標本標準誤差(実測) 理論 σ/√N(千人) 比 (実測/理論)
52,6761,2121,2510.97
102,6567928850.90
202,6454676260.75
302,6483045110.60
402,6461754420.40

💬 narration:N=5 → N=40 で実測 SE は 1,212 → 175 と「およそ 6.9 倍縮小」しました。 理論上は 1/√(40/5) = 1/√8 ≈ 0.354 倍なので 1,212×0.354 ≈ 429 千人になるはずですが、 47 都道府県という有限母集団から非復元抽出しているので、 N が母集団サイズに近づくほど誤差が「理論より速く」縮みます。 これは 有限母集団補正項 √((N_total−n)/(N_total−1)) の効果で、 N=40 で √(7/46)≈0.39 になり、 実測の 0.40 とほぼ一致します。 「スケーリング則は理想化された無限母集団仮定の下で初めて 1/√N が出る」 という重要な但し書きを SSDSE-B-2026 はリアルに示してくれます。

🧮 実値で計算してみる ② ── 地方ブロック別に係数が違うことを確認する

スケーリング則 を「集団全体に 1 本」当てはめることの危うさを SSDSE-B-2026 で見てみます。 47 都道府県を 8 地方ブロックに分け、 各ブロック内で「総人口 N と一般診療所数 G」の log-log 直線をフィッティングすると、 ブロックごとに傾き β が違うことが分かります。

地方ブロック 県数 傾き β 切片 log a R² 解釈
北海道1―――単独、 推定不能
東北60.880.260.95最も劣線形(小県は人口比で施設多め)
関東71.06−0.360.95超線形(大都市ほど施設が密)
中部90.97−0.010.99ほぼ線形で安定
近畿71.01−0.060.98関西圏でほぼ線形
中国50.950.110.99ほぼ線形
四国41.08−0.280.92小サンプル、 推定不安定
九州沖縄81.03−0.170.94中規模混在で安定

💬 narration:関東 β=1.06 は 超線形(superlinear scaling)と呼ばれ、 都市集積効果でとくに東京に医療機関が密に集まることを反映。 一方、 東北 β≈0.88 は 劣線形(sublinear scaling)で、 県人口が小さくても人口あたりの診療所数はむしろ多めに保たれることを示します。 LLM のスケーリング則 でも同じ現象があり、 「同じデータ分布の下でしか同一の係数を保てない」のが原則。 ドメイン外(OOD)データに当てはめると β が大きくずれる、 という落とし穴は LLM・統計・経済学に共通の知恵です。

🧮 実値で計算してみる ③ ── 手計算でべき乗指数 β を求める

SSDSE-B-2026 の関東 7 県(東京・神奈川・埼玉・千葉・茨城・栃木・群馬)について、 自分の手で β を出してみましょう。 N=総人口(千人)、 G=一般診療所数(施設数)の組を以下にまとめます。

県 N(千人) G(施設数) log10 N log10 G
東京都14,08614,8944.1494.173
神奈川県9,2297,1503.9653.854
埼玉県7,3314,5303.8653.656
千葉県6,2573,9423.7963.596
茨城県2,8251,7603.4513.246
栃木県1,8971,4823.2783.171
群馬県1,9021,5633.2793.194

📐 手計算手順(最小二乗法の公式):

  1. x=log10 N、 y=log10 G を計算(上表)。
  2. 平均: x̄ ≈ (4.149+3.965+3.865+3.796+3.451+3.278+3.279)/7 = 3.683、 ȳ ≈ (4.173+3.854+3.656+3.596+3.246+3.171+3.194)/7 = 3.556
  3. 共分散の分子: Σ(xᵢ−x̄)(yᵢ−ȳ) ≈ 0.288+0.084+0.018+0.005+0.072+0.156+0.146 ≈ 0.768
  4. 分散の分子: Σ(xᵢ−x̄)² ≈ 0.217+0.080+0.033+0.013+0.054+0.164+0.163 ≈ 0.724
  5. 傾き β = 0.768 / 0.724 ≈ 1.06 — 関東は 超線形。 ただし log 変換値を小数 2〜3 桁で丸めると偏差の積で誤差が乗りやすい。 正確な数値は次の Python ブロックで確認しよう。

💬 narration:手計算は「数式の意味」を理解するのに最高ですが、 桁数の取り方で誤差を生みやすいのが分かります。 とくに log 変換した値は小数点 3 桁でも足りないことがあります。 LLM のスケーリング則 計算で「同じ実験を別の研究室が再現できない」問題の原因の 1 つは、 こうした 数値精度の不一致。 だからこそ実務では numpy.polyfit(log10(N), log10(G), 1) や scipy.stats.linregress を使うのが鉄則です。

🐍 Python 実装

モデル規模と損失の関係を当てはめる最小の例。 観測点は説明用に作った仮想の 4 点で、 SSDSE のデータではない。

🎯 このコードでやること:モデルサイズ N と test loss L のスケーリング関係 $L = (N_c/N)^{\alpha}$ を非線形最小二乗(scipy.optimize.curve_fit)で推定し、 100 倍スケールアップ後の loss を外挿予測します。
📥 入力例(仮想 LLM の観測値。 SSDSE のデータではない) # 仮想 LLM の規模 N と test loss L N = [1e7, 1e8, 1e9, 1e10] # パラメータ数 L = [3.5, 2.6, 2.0, 1.5] # 観測 loss
📤 実行例(期待出力) Nc = 2.68e+11, alpha = 0.123 0.851 # 1e12 へ外挿した予測 loss
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# べき乗則のフィット例
import numpy as np
from scipy.optimize import curve_fit

# 仮想データ:モデルサイズ N と test loss L
N = np.array([1e7, 1e8, 1e9, 1e10])
L = np.array([3.5, 2.6, 2.0, 1.5])

def power_law(N, Nc, alpha):
    return (Nc / N) ** alpha

popt, _ = curve_fit(power_law, N, L, p0=(1e9, 0.1))  # 初期値を与えると安定して収束
print(f"Nc = {popt[0]:.2e}, alpha = {popt[1]:.3f}")

# 100倍スケールアップ後の予測損失
print(power_law(1e12, *popt))
📤 実行例(実測) Nc = 2.68e+11, alpha = 0.123 0.8511676279666481
💬 読み方:alpha ≈ 0.12 はべき乗則の傾き。 N を 10 倍にすると loss が約 $10^{-0.12} ≈ 0.75$ 倍になる、 という意味。 外挿は学習データの範囲を超えて適用するため、 不確実性が大きい点に注意。

🐍 Python 実装の深掘り ── べき乗則フィッティング

スケーリング則のフィッティングは「対数空間での線形回帰」が基本ですが、 Chinchilla の 3 項モデルは非線形なので Huber loss + LBFGS で解くのが標準です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import numpy as np
import pandas as pd
from scipy.optimize import minimize

# (N, D, L) の観測列 ── 教育用の合成データ
# Chinchilla 論文の推定値 (E=1.69, A=406.4, B=410.7, α=0.34, β=0.28) から
# 4×4 = 16 通りの (N, D) で loss を作り、1% 程度の乱数ノイズを掛ける
rng = np.random.default_rng(0)
grid = [(n, d) for n in [1e8, 1e9, 1e10, 1e11] for d in [1e9, 1e10, 1e11, 1e12]]
N_obs = np.array([g[0] for g in grid]); D_obs = np.array([g[1] for g in grid])
L_true = 1.69 + 406.4 * N_obs**(-0.34) + 410.7 * D_obs**(-0.28)
data = pd.DataFrame({'N': N_obs, 'D': D_obs,
                     'L': L_true * np.exp(rng.normal(0, 0.01, len(grid)))})

def chinchilla_loss(params, df):
    E, log_A, log_B, alpha, beta = params
    A, B = np.exp(log_A), np.exp(log_B)
    pred = E + A * df['N']**(-alpha) + B * df['D']**(-beta)
    # Huber loss in log space
    residual = np.log(df['L']) - np.log(pred)
    delta = 0.001
    huber = np.where(np.abs(residual) < delta,
                     0.5*residual**2,
                     delta*(np.abs(residual) - 0.5*delta))
    return huber.sum()

# 初期値は Chinchilla 論文の推定に近く
x0 = [1.7, np.log(400), np.log(400), 0.34, 0.28]
bounds = [(0.5, 3.0), (0, 10), (0, 10), (0.05, 1.0), (0.05, 1.0)]
res = minimize(chinchilla_loss, x0, args=(data,), method='L-BFGS-B', bounds=bounds)
E, log_A, log_B, alpha, beta = res.x
A, B = np.exp(log_A), np.exp(log_B)
print(f'E={E:.3f}, A={A:.1f}, B={B:.1f}')
print(f'alpha={alpha:.3f}, beta={beta:.3f}')

# 計算量 C = 6ND の制約下での最適配分 (ラグランジュ法の解)
C = 5.76e23   # Chinchilla / Gopher の学習計算量 [FLOPs]
G = (alpha * A / (beta * B)) ** (1 / (alpha + beta))
N_opt = G * (C / 6) ** (beta / (alpha + beta))
D_opt = C / (6 * N_opt)
print(f'C={C:.2e} での最適 N = {N_opt:.2e}, D = {D_opt:.2e}, D/N = {D_opt/N_opt:.1f}')
📤 実行例(実測) E=1.673, A=400.0, B=400.9 alpha=0.336, beta=0.280 C=5.76e+23 での最適 N = 3.64e+10, D = 2.64e+12, D/N = 72.5
💬 narration(読み手への語りかけ):合成に使った真の値 E=1.69・α=0.34・β=0.28 に対し、 16 点・1% ノイズから E=1.673・α=0.336・β=0.280 とほぼ復元できました(A=400.0・B=400.9 は初期値 400 付近に留まり、 真の 406.4・410.7 との差は指数の小さなずれで吸収されています)。 この推定値で Gopher と同じ計算量 C=5.76×10²³ FLOPs の最適配分を解くと N≈364 億パラメータ・D≈2.6 兆トークンで D/N≈72.5 になり、 「1 パラメータ 20 トークン」より大きい。 3 項モデル(パラメトリック推定)から出る比は IsoFLOP 法の約 20 より大きく出やすいことが Chinchilla 論文でも報告されており、 D/N の水準は推定手法に依存します。

🐍 Python ハンズオン ── 4 段階で SSDSE-B-2026 のスケーリング則を描く

① データ読み込みと前処理

このコードでやること:SSDSE-B-2026 の 47 都道府県データを読み、 最新年(2023 年)スナップショットを抽出し、 総人口と一般診療所数の組を取り出す。

📥 入力データ(SSDSE-B-2026 の抜粋。 A1101 は人単位):

SSDSE-B-2026 Code Prefecture A1101 I5102 2023 R01000 北海道 5,092,000 3,403 2023 R13000 東京都 14,086,000 14,894 2023 R14000 神奈川県 9,229,000 7,150 2023 R27000 大阪府 8,763,000 8,877 2023 R31000 鳥取県 537,000 474 ...
1
2
3
4
5
6
7
8
9
10
11
12
import pandas as pd
import numpy as np

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df_latest = df[df['SSDSE-B-2026'] == 2023].copy()

# 総人口を千人に直し、 必要 2 列を取り出す
sub = df_latest[['Prefecture', 'A1101', 'I5102']].dropna().copy()
sub['A1101'] = sub['A1101'] / 1000
sub['logN'] = np.log10(sub['A1101'])
sub['logG'] = np.log10(sub['I5102'])
print(sub.head())

📤 実行結果:

Prefecture A1101 I5102 logN logG 0 北海道 5092.0 3403 3.706888 3.531862 12 青森県 1184.0 850 3.073352 2.929419 24 岩手県 1163.0 879 3.065580 2.943989 36 宮城県 2264.0 1724 3.354876 3.236537 48 秋田県 914.0 806 2.960946 2.906335

💬 結果の読み方:総人口を千人に直したうえで log 変換すると、 「桁の違い(数百千人〜千万人)」が47 県全体で「2.73(鳥取県)〜4.15(東京都)という近い値」に揃いました。 行番号が 0, 12, 24… と飛ぶのは、 元の CSV が 1 県につき 12 年度分の行を持ち、 そこから 2023 年度の行だけを残したためです。 これがスケーリング則を扱うときに log を取る根本の理由です。

② log-log 線形回帰で β を推定

このコードでやること:47 都道府県全体に G = a·N^β を当てはめ、 傾き β(スケーリング指数)と切片 log a を scipy.stats.linregress で求める。

1
2
3
4
5
6
7
8
from scipy import stats

slope, intercept, r, p, se = stats.linregress(sub['logN'], sub['logG'])
print(f'β (傾き)        = {slope:.4f}')
print(f'log a (切片)    = {intercept:.4f}')
print(f'a               = 10^{intercept:.4f} = {10**intercept:.3f}')
print(f'相関係数 r      = {r:.4f}, R^2 = {r**2:.4f}')
print(f'β の SE         = {se:.4f}, p < {p:.2e}')

📤 実行結果:

β (傾き) = 0.9660 log a (切片) = 0.0333 a = 10^0.0333 = 1.080 相関係数 r = 0.9840, R^2 = 0.9682 β の SE = 0.0261, p < 2.39e-35

💬 結果の読み方:β=0.97 は「人口を 2 倍にすると診療所数は 2^0.97≈1.95 倍」、 「10 倍にすると 10^0.97≈9.2 倍」。 ほぼ線形だが「わずかに劣線形」── つまり大県ほど人口あたりの診療所数はやや少なくなる傾向を示しています(一方で東京のように突出して施設が集積する例外もあり、 関東ブロックだけを取ると超線形になります)。

③ サンプル数を変えながら推定誤差を見る(スケーリング曲線)

このコードでやること:47 都道府県から N=5, 10, 20, 30, 40 を 1000 回ずつブートストラップで非復元抽出し、 各 N で β の標準誤差がどうスケールするかを表にする。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import numpy as np
rng = np.random.default_rng(20260603)
Ns = [5, 10, 20, 30, 40]
results = []
for N in Ns:
    betas = []
    for _ in range(1000):
        idx = rng.choice(len(sub), size=N, replace=False)
        s = sub.iloc[idx]
        sl, _, _, _, _ = stats.linregress(s['logN'], s['logG'])
        betas.append(sl)
    results.append({'N': N, 'beta_mean': np.mean(betas),
                    'beta_se': np.std(betas), 'beta_ci_lo': np.percentile(betas, 2.5),
                    'beta_ci_hi': np.percentile(betas, 97.5)})

import pandas as pd
df_res = pd.DataFrame(results)
print(df_res.round(4))
print(f'\nSE が 1/√N に近づくか確認: SE × √N = {(df_res["beta_se"] * np.sqrt(df_res["N"])).round(4).tolist()}')

📤 実行結果:

N beta_mean beta_se beta_ci_lo beta_ci_hi 0 5 0.9477 0.1287 0.7141 1.1599 1 10 0.9556 0.0752 0.8080 1.0829 2 20 0.9628 0.0431 0.8703 1.0380 3 30 0.9665 0.0278 0.9024 1.0149 4 40 0.9648 0.0163 0.9279 0.9924 SE が 1/√N に近づくか確認: SE × √N = [0.2879, 0.2377, 0.1925, 0.1525, 0.1028]

💬 結果の読み方:SE × √N は「もし完全に 1/√N スケーリングなら一定」となるはず。 ここでは N が大きくなると 0.29 → 0.10 と減っています。 これは「有限母集団(47 県)の効果」で、 N=40 ではほぼ全数調査に近いため理論より速く SE が落ちる。 スケーリング則 を有限データに当てはめるときは 「無限母集団近似がどこまで有効か」を常に問い直す必要があります。

④ Chinchilla 流 3 項モデルで飽和を見る(LLM の標準例)

このコードでやること:L(N) = (N_c / N)^α + L_∞ の Chinchilla 型を、 公開 LLM を模した観測点(規模 N と test loss L)に当てはめ、 L_∞(irreducible loss)の推定値を出す。 スケーリング則はモデル規模の概念なので、 飽和(irreducible loss)の例だけは SSDSE に無理に紐づけず、 LLM の標準例で示す。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from scipy.optimize import curve_fit
import numpy as np

# 公開 LLM を模した観測点:規模 N と test loss L
N = np.array([1e7, 1e8, 1e9, 1e10, 1e11])
L = np.array([3.40, 2.80, 2.42, 2.20, 2.08])

def chinchilla(N, Nc, alpha, L_inf):
    return (Nc / N) ** alpha + L_inf

popt, pcov = curve_fit(chinchilla, N, L,
                       p0=[1e6, 0.1, 1.9], maxfev=5000)
Nc, alpha, L_inf = popt
print(f'N_c    = {Nc:.3e}')
print(f'α      = {alpha:.4f}')
print(f'L_inf  = {L_inf:.4f}  ← 飽和水準(irreducible loss, nats)')

📤 実行結果:

N_c = 6.697e+07 α = 0.2221 L_inf = 1.8770 ← 飽和水準(irreducible loss, nats)

💬 結果の読み方:L_∞ ≈ 1.88 nats は「規模 N をどれだけ増やしても、 これより下にはロスを下げられない床(irreducible loss)」を示唆。 α=0.22 は「規模を 1 桁増やすと残差ロスがどれだけ縮むか」の指数です。 LLM のスケーリング則 では「データやパラメータをどれだけ増やしても、 言語の不確実性に由来する 0 にならないロス(L_∞)」が観察され、 この 3 項モデルが標準形になっています。

⚠️ よくある落とし穴

❌ 1. 「無限に大きくすれば良い」と誤解
べき乗則は観測された範囲での当てはまりであって、 その外側まで成り立つ保証は無い。 データを使い切る、 タスクの上限性能に達する、 といった理由で頭打ちになる領域がある。 外挿した予測を根拠に投資を決める前に、 どこまでの範囲で確かめられた法則かを確認する。
❌ 2. 単一タスクの結果を一般化
事前学習の損失が下がり続けても、 下流タスクの精度は階段状に上がったり、 途中で頭打ちになったりする。 損失と実際の有用性は別の量なので、 「損失が下がったから賢くなった」とは言えない。 知りたいタスクで直接測るしかない。
❌ 3. データ品質を無視
スケール則は「同じ質のデータを増やせば」という前提の話で、 重複・機械翻訳・自動生成の混入は量を増やしても効かない。 むしろ同じ文書が何度も現れると、 その部分だけ丸暗記して汎化が落ちる。 重複除去と出所の管理を、 量を増やす前に済ませる。
❌ 4. 計算量予算を見ない
同じ計算量なら、 モデルを大きくするかデータを増やすかの配分に最適点がある(Chinchilla の指摘)。 パラメータだけ増やしてデータが足りなければ、 学習しきれずに性能が出ない。 モデルサイズ・データ量・計算量の 3 つを一緒に決める。
❌ 5. 再現性の困難さ
大規模実験を回せる組織は限られ、 論文の主張を第三者が追試できないことが多い。 学習データが公開されないケースも多く、 評価データの混入を外から検証できない。 引用するときは、 追試されたのか単一組織の報告なのかを見分ける。

⚠️ 追加の落とし穴 ── 実務で踏み抜く罠

❌ 1. 外挿の罠
学習範囲外への外挿は危険。 数桁飛ばした予測は破綻することがある。
❌ 2. データ品質を無視
同じ D でも質が低いと効果半減。 Chinchilla 以後は『重複除去後のトークン数』が標準。
❌ 3. 分野依存
言語、 画像、 音声で係数が異なる。 安易に流用しない。
❌ 4. compute-optimal ≠ inference-optimal
推論コストまで含めると小さなモデルを長く学習する方が良い場合も。
❌ 5. 臨界点(phase transition)
突然能力が出現する emergent ability は単純なべき乗則からは外れる。

⚠️ べき乗則を当てはめるときの落とし穴(5 件)

  1. 「直線に見える=べき乗則」と早合点:log-log で直線に見えても、 サンプル数が少なければ偶然そう見えるだけのことがある。 必ず信頼区間と残差プロット、 bootstrap でのべき乗指数の分布も確認すること。
  2. 外挿の罠:観測範囲外の規模に予測を伸ばすと、 飽和項や別の物理が現れて大きく外れる。 Kaplan 2020 と Chinchilla 2022 で同じ実験から異なる結論が出たのも外挿域の扱いの違い。 「観測範囲を 1 桁以上超える外挿は予測ではなく仮説」と心得る。
  3. 異なる集団を 1 本のべき乗則でまとめる:地方ブロックごと、 ドメインごとに β が違うのに 1 本の直線を引くと「平均的だが誰にも当てはまらない」当てはめになる。 階層モデルや混合効果モデルで解くか、 集団ごとに別に当てはめる。
  4. 計算予算 C を固定して N と D を独立に動かしてしまう:Chinchilla の主張は「C を固定すると、 最適な N と D は 1:1 で増やすべき」。 LLM 設計で N だけを増やすと「データ枯渇でロスが下がらない」状態になる。 N と D は同時設計が原則。
  5. L_∞ をゼロと仮定して当てはめる:log(L) の単純な線形フィットは L_∞=0 を暗黙仮定する。 大規模で頭打ちが見えてくると、 この仮定は破綻し、 推定された α が過大評価になる。 必ず L_∞ も同時推定する Chinchilla 型 3 項モデルを試すこと。

🎮 触って理解する

冪乗則スケーリング L = A·N-α + E のスライダーを動かすと、 左(線形軸)と右(両対数軸 log-log)に損失曲線がリアルタイムで並んで描画されます。 規模 N(パラメータ数/データ量/計算量)を横軸に、 損失 L を縦軸に取っています。 係数 A・指数 α・既約損失 E を変え、 「両対数で直線になる(=冪乗則)」「E があると直線が寝て頭打ちになる」「N を増やすと収穫逓減する」の 3 点を体感してください。 右のグラフはタップ/ドラッグでも着目点 N を動かせます。

N=1 での損失の高さ(初期の学習しやすさ)
log-log での直線の傾き(大きいほど速く改善)
これ以上は下がらない下界(E=0 で純冪乗則)
縦の目印。 N を 10 倍したときの改善量を下に表示
① 線形軸(収穫逓減が見える)
② 両対数軸 log-log(冪乗則なら直線)

🔎 直感 ── 両対数で直線=冪乗則

E=0 にすると L = A·N-α の純粋な冪乗則になり、 両対数を取ると log L = log A − α·log N ── すなわち傾き −α の直線になります(右グラフで確認)。 「桁(オーダー)で物事を見ると直線になる」のが冪乗則の指紋であり、 だからこそ 3 桁スケールアップ後の損失を予測できます。 同じ 1/√N 則が統計の 標準誤差(中心極限定理)にも現れます。

⚠️ よくある落とし穴 ── 外挿の危険と既約損失

E を 0 より大きくすると、 右グラフの直線は大きい N で寝て水平に頭打ちします。 これが既約損失(irreducible loss)── 言語そのものの不確実性など、 どれだけ規模を増やしても消えない下界です。 「小さい N の直線をそのまま延長すれば L→0」という素朴な外挿は危険で、 実際には E で止まります。 局所の傾きが小さくなる=損失の伸びしろが尽きるサインです(過学習や分布シフトでも直線は崩れます)。

🚀 発展 ── Chinchilla の計算最適配分

実際の LLM では損失は N(パラメータ数)と D(データ量)の両方の冪乗則で決まり、 計算量は C≈6ND。 予算 C を固定したとき、 Hoffmann ら(Chinchilla, 2022)は「N と D を同程度の比率で増やす」のが最適だと示しました(従来はパラメータ偏重)。 このウィジェットの N を「N でも D でも計算量 C でも」読み替えられるのは、 どれも同じ冪乗則の形をしているからです。 詳しくは 基盤モデル・Transformer のページも参照してください。

🌐 関連手法ツリー

スケーリング則 は「規模を変えると性能がどう変わるか」を予測する道具。 以下は周辺の概念群を「下位 → 同位 → 上位」で並べた整理表です。 関連用語をクリックすると本文の該当箇所へジャンプ、 外部リンクは別ページの用語解説へ移動します。

階層 概念 スケーリング則 との関係
下位(特殊形)Kaplan 則2020 年の 2 項式、 L_∞ なし。 GPT 系の最初のフィット
下位(特殊形)Chinchilla 則2022 年の 3 項式、 L_∞ を持つ。 計算予算最適配分の理論
下位(特殊形)inference-optimal scaling学習時ではなく推論時の最適規模を扱う
同位(並列)バイアス・バリアンス分解規模を変えるとバイアスとバリアンスがどう動くかを記述
同位(並列)学習曲線(learning curve)同じ概念の異名、 サンプル数 vs 性能の経験曲線
同位(並列)large deviation 原理統計力学側のべき乗則・指数則の理論基盤
上位(一般化)汎化誤差解析VC 次元・ラデマッハ複雑度などで「規模 vs 汎化」を理論化
上位(一般化)PAC 学習理論サンプル数の関数として汎化誤差を上界する古典的枠組み
上位(一般化)情報理論の Cramér-Rao 下界推定誤差の 1/√N 下界の数学的根拠

🌟 創発(Emergent Abilities)とは何か

スケーリング則は「ロスは滑らかに下がる」と言いますが、 下流タスクの正答率はスケール閾値で急に立ち上がる現象が観察されています(Wei et al. 2022)。 これを emergent ability と呼びます。

代表的な創発タスク

タスク 創発閾値(FLOPs) 創発前の挙動 創発後の挙動
3 桁加算≈ 10²² FLOPsランダム水準90% 以上
語の意味理解(WiC)≈ 5 × 10²² FLOPs50%75%
Chain-of-Thought 推論≈ 10²³ FLOPs直接回答より悪い直接回答より良い
指示追従(zero-shot)≈ 10²³ FLOPs指示無視指示通り動作

「創発か、 評価指標の幻か」論争

Schaeffer et al. (NeurIPS 2023) は「emergent abilities は評価指標(accuracy のような discrete metric)の性質で生じる artifact だ」と主張しました。 対数尤度のような連続指標を使えば創発は消える、 という議論です。

この論争の意味は、 下流タスクの能力評価には「閾値型 metric」と「連続型 metric」の両方が必要、 ということ。 ベンチマーク選びがスケーリング則の解釈を左右する点に、 教育者・実務家は意識的になる必要があります。

⚖️ Compute-optimal vs Inference-optimal

Chinchilla 則は「訓練の計算量を最小化する」最適です。 しかし実用上は推論コストも重要で、 Llama 2 や Llama 3 は Chinchilla 則よりはるかに長いトークン数で訓練されています(Llama 3 8B は ≈ 15 兆トークン)。

理由:推論を 100 万回繰り返すサービスなら、 小さなモデルを長く訓練して「推論時 FLOPs を半減」させる方がトータルコストが下がる。 つまり「対象タスクの推論回数」次第で「最適 D/N」は変動するのです。

$$ C_{\text{total}} = 6 N D_{\text{train}} + 2 N D_{\text{inference}} $$

$D_{\text{inference}}$(推論で消費するトークン数の総和)が $D_{\text{train}}$ に比べて大きい場合、 訓練時 D を増やしてもインフラ全体への影響は小さい。 反対に「研究用に 1 回しか推論しない」なら Chinchilla 則がベスト。

📚 関連グループ教材

この用語の全体像を学ぶには、 横断的な教材で文脈を掴むのが効率的です。

スケーリング則は 深層学習・LLM の教材群の中で、 「規模をどう決めるか」を扱う位置にある。 損失 L が何を測っているかは 損失関数、 規模を上げたときに訓練誤差と汎化誤差がどう離れるかは 過学習 と バイアス・バリアンス の教材で確かめられる。 べき乗則を当てはめる作業そのものは、 両辺の対数を取った 線形回帰 なので、 このページの 🧮 と 🐍 は回帰の教材と合わせて読むと式の意味が追いやすい。

📜 スケーリング則の発見史 ── Kaplan 2020 から Chinchilla 2022 へ

スケーリング則(Scaling Law)は、 OpenAI の Jared Kaplan ら(2020)が「Scaling Laws for Neural Language Models」で提唱したのが最初の体系的定式化です。 彼らは GPT 系の自己回帰言語モデルについて、 パラメータ数 N、 訓練データ量 D、 計算量 C の 3 軸でロスがべき乗則に従って下がることを大量の実験から見出しました。

Kaplan 則の核心

$$ L(N) \approx (N_c / N)^{\alpha_N},\quad \alpha_N \approx 0.076 $$

$$ L(D) \approx (D_c / D)^{\alpha_D},\quad \alpha_D \approx 0.095 $$

$$ L(C) \approx (C_c / C)^{\alpha_C},\quad \alpha_C \approx 0.050 $$

この発見の衝撃は「ロスが滑らかなべき乗則に従う」という普遍性に加えて、 「データの 5 倍よりモデルの 5 倍の方がロス低減効果が大きい」と読めた点にありました。 これが「とにかく大きくしよう」という大規模化レースの理論的根拠となりました。

Chinchilla 則による修正(DeepMind 2022)

Hoffmann らは「Training Compute-Optimal Large Language Models」で Kaplan 則を再検証し、 固定計算量 C のもとで N と D を同程度の比率で増やすのが最適だと結論しました。 つまりパラメータ 1 個あたり 約 20 トークンの訓練データが必要、 という経験則です。

$$ N_{\text{opt}}(C) \propto C^{0.50},\quad D_{\text{opt}}(C) \propto C^{0.50} $$

これは Kaplan 則の指数(N: 0.73、 D: 0.27)と大きく異なります。 違いの原因は、 学習率スケジュールの違い(cosine の最終値を最適化するか)と、 サンプリング密度の違いだと整理されています。

なぜべき乗則か?

複数の理論的議論があります:

🔎 深掘り解説

Chinchilla則の詳細

DeepMind 2022の論文「Training Compute-Optimal Large Language Models」より:

創発(Emergent Abilities)

スケールアップで突然現れる能力:

ただし「創発か単に評価指標の段階性か」という議論も継続中。

❓ 予算を 10 倍にしたら N と D はどう増やす?

Q. 計算予算が 10 倍になったら、 N と D はそれぞれ何倍にする?

スケーリング則そのものが計算量の話です。 Chinchilla の知見では、 計算予算 $C$(FLOPs)に対して パラメータ数 $N$ と学習トークン数 $D$ を同じ割合で増やすのが最適で、 おおよそ $C \approx 6ND$ の関係があります。 ここから、 予算を 10 倍にできるなら $N$ と $D$ をそれぞれ約 3.2 倍($\sqrt{10}$)にするのが正解、 と逆算できます。 「パラメータだけ 10 倍にする」のは同じ予算の使い方として劣る——これが GPT-3($N$ 偏重)から Chinchilla への転換点でした。 損失が $L \propto C^{-\alpha}$($\alpha \approx 0.05$)というべき乗則で下がるので、 損失を半分にするには予算を $2^{1/0.05} = 2^{20}$ 倍——100 万倍必要という、 逓減の厳しさも同時に読み取れます。

❓ もっと深い FAQ

Q5. なぜ Kaplan 則と Chinchilla 則で結論が違ったのか?

Kaplan の実験では「学習率スケジュールのコサイン終端」がモデルサイズによらず固定されていました。 大モデルでは終端付近の cosine が「実効的に大きすぎる学習率」になり、 D を増やす効果が見えにくくなっていた、 という説が有力です。 Chinchilla は cosine の終端をモデル毎に最適化し直しています。

Q6. データを使い回す(multi-epoch)と Chinchilla 則はどうなる?

Muennighoff et al. 2023 によれば、 4 エポック程度までは新規データとほぼ同等の効果がある一方、 それ以上は急速に効果が減衰します。 実務的には「全データを 1 回通す」のが安全。 推論コストを考えると、 同じ計算量を多 epoch に費やすよりデータ拡張に費やす方が良い、 という議論も。

Q7. スケーリング則は画像・音声でも成り立つ?

概ね成り立ちますが、 指数 α, β はドメインで異なります。 画像(CLIP, DALL-E)では「データ量の効果」が言語より相対的に大きいと報告されています。 音声(Wav2Vec 系)では「サンプリングレート」「ノイズ条件」が独立軸として効きます。

Q8. SSDSE-B のような小データではスケーリング則は適用できる?

47 都道府県程度(n=47)では、 スケーリング則の「データ漸近領域」に入っていません。 むしろ「サンプル数が増えると分散が下がる」古典的な統計的学習理論(VC 次元・Rademacher 複雑度)が支配的です。

❓ 実装 FAQ(10 問)── スケーリング則を自分のプロジェクトに適用するときの疑問

Q1. 何点くらい観測すれば β を信頼できる?
最低 5 点(規模 N を 1 桁ずつ変えて 5 段階)、 推奨 10 点以上。 各規模で複数 seed で 3 回以上学習し、 各点の SE も持つこと。 bootstrap 信頼区間で β の幅が ±5% 以内に収まれば実用に耐える。
Q2. 「規模を増やす」とは具体的に何を増やす?
LLM では (i) パラメータ数 N、 (ii) 訓練データ量 D、 (iii) 計算量 C=N·D を 1 単位として議論する。 統計学では (iv) サンプル数 n、 (v) 反復回数 T、 (vi) 特徴次元 p。 スケーリング則 を語るときは「何を増やしているか」を必ず明記すること。
Q3. log を取る底は 10、 2、 e のどれ?
フィットや β の値は底に依存しない(傾きの絶対値は同じ)。 解釈や視覚化では「2 倍にするとどう変わるか」を見るなら log2、 「10 倍にするとどう変わるか」を見るなら log10、 数学的処理では log_e が便利。 SSDSE-B-2026 の人口は log10 が直感的。
Q4. スケーリング則 が「壊れる」状況はある?
ある。 (i) ドメイン外データ(OOD)、 (ii) 規模が小さすぎて統計性が成立しない(n<30 など)、 (iii) 規模が大きすぎてハードウェア制約が支配(NVMe・通信帯域)、 (iv) 学習が収束していない、 など。 Chinchilla の表は「適切に収束した条件下」での目安。
Q5. 学習途中のロス曲線とスケーリング則は別物?
別物。 学習途中のロス曲線は「学習ステップ T に対する曲線」、 スケーリング則 は「学習完了後のロスを規模 N/D で並べた点群」。 ただし両者は密接で、 「同じ計算予算 C で最適な T はいくつか」を議論する文献もある(Hoffmann 論文の Appendix)。
Q6. emergent ability とは何か、 スケーリング則 とどう違う?
emergent ability(創発能力)は「ある規模を超えると突然新しいタスクができるようになる現象」(Wei 2022)。 これは「ロス」ではなく「タスク精度」で見たときに非線形ジャンプとして現れる。 スケーリング則 はロス(連続値)の議論、 emergent はタスク精度(離散値)の議論で、 別の軸の話。 ロスは滑らかでもタスク精度は閾値超えで突然発火することがある。
Q7. 自分のドメインの β を出したい。 何から始める?
(1) 「規模」を 1 軸選ぶ(パラメータ数 or データ量 or 計算量 or サンプル数)、 (2) 1 桁の幅で 5〜10 段階に分け、 各段階で seed を 3 種類で学習、 (3) ロスを縦軸・規模を横軸の log-log 散布図を描く、 (4) scipy.stats.linregress で線形回帰、 (5) 残差プロットと bootstrap 信頼区間で頑健性確認、 (6) 必要なら Chinchilla 型 3 項モデルで再フィット。
Q8. SSDSE-B-2026 で β を推定したけど信頼できる?
47 点という有限サンプルで、 かつ「県」という単位そのものが規模を持つ厄介な対象。 本ページの β≈0.97 は記述的な要約として有用だが、 「日本の地域の施設配置の本質的な β」と主張するには時系列も入れる(12 年分の panel data)、 都市単位に分解する(市区町村ベース)、 などの追加が必要。 SSDSE-B-2026 は「スケーリング則 を体感する道具」として最適だが、 政策提言の根拠にはさらなる検証が要る。
Q9. β=1(線形)はどんな意味?
β=1 はちょうど「規模を倍にすると GDP も倍になる、 1 人あたり値は不変」。 β>1(超線形)は集積効果あり、 β<1(劣線形)は逓減。 都市規模と賃金、 都市規模と特許出願数、 都市規模と犯罪率、 など分野により異なる β が知られている(Bettencourt et al. 2007 の都市スケーリング論文を参照)。
Q10. スケーリング則 は今後も成立し続ける?
経験的にはここ数年は良く成立しているが、 理論的保証はない。 物理的・経済的な制約(電力、 半導体製造能力、 良質な学習データの枯渇)でいつかは破れる可能性がある。 また、 アーキテクチャの抜本的革新(attention 以外の何か)が起きれば「曲線そのものが上にシフト」する可能性もある。 スケーリング則 を「絶対の法則」ではなく「現時点での経験則」と理解しておくことが、 健全な距離感。

🎯 理解度チェック(5 問)

本ページの内容を自分の言葉で説明できるか、 以下の問いで確認しましょう。 解説は質問の直下に折りたたみ表記で示します。

Q1. スケーリング則 (scaling law) の基本式 L(N) = (N_c/N)^α + L_∞ で、 α と L_∞ がそれぞれ何を表すか説明しなさい。

α は「規模 N を 1 桁増やすとロスがどれだけ減るか」のスケーリング指数で、 大きいほど効率よく規模効果が得られる。 L_∞ は「規模をいくら大きくしても残るロス(irreducible loss)」で、 データそのものの不確実性に由来する 0 にならない床値。 Chinchilla 論文ではこの L_∞ を同時推定することが結論を変えた決定的なポイント。

Q2. log-log プロットで直線に見えても β=スケーリング指数 と即断してはいけない 2 つの理由を述べなさい。

理由 1:サンプル数が少ないと、 たとえ実際の関係が完全な直線でなくても偶然直線に見える可能性が高い(ノイズによる見かけのフィット)。 理由 2:L_∞ がゼロでない場合、 log を取らずに L そのものをフィットしてしまうと、 大規模域で頭打ちが起き直線から外れる。 bootstrap で信頼区間、 残差プロットで構造、 Chinchilla 型 3 項モデルで L_∞ を同時推定する、 の 3 点が定石。

Q3. SSDSE-B-2026 の関東 7 県で β≈1.06、 東北 6 県で β≈0.88 と推定されました。 この差異が示唆することを実務的に説明しなさい。

β>1(超線形)は規模が増えるほど人口あたりの施設数が増える「都市集積効果」を示唆し、 関東圏(とくに東京)への医療機関の集中が反映される。 β<1(劣線形)は規模効果が逓減することを意味し、 東北は人口の小さな県でも人口あたりの診療所数がむしろ多めに保たれる傾向を持つ。 実務的には「全国に 1 本の β を当てはめる地域政策」は意味を失い、 地域ごとに別の β(あるいは混合効果モデル)を持つべき、 という結論が導かれる。

Q4. Kaplan 2020 と Chinchilla 2022 の最も大きな違いを 1 文で説明しなさい。

Kaplan は「計算予算 C を固定すると N(パラメータ)を増やすほどロスが下がる」と結論したが、 Chinchilla は L_∞ を含む 3 項式で丁寧に再フィットし、 「同じ C なら N と D(データ量)を同じ割合で増やすのが最適」と結論を覆した。 これは LLM 設計の経済学を根本から変え、 GPT-3 系の「大きすぎ・データ不足」を指摘する基盤になった。

Q5. スケーリング則 が示唆する「規模を増やさずに性能を上げる戦略」を 3 つ挙げなさい。

(1) データ品質改善(重複除去・低品質テキスト除外で実効データ量を増やす)、 (2) 学習アルゴリズム改善(最適化手法・学習率スケジュール・正則化で同サイズで効率よく学習)、 (3) アーキテクチャ改善(attention の改良・MoE・知識蒸留などで同パラメータ予算で表現力を増やす)。 スケーリング則 は「規模を増やせばロスは下がる」と同時に「他の改善で曲線を上にシフトさせれば、 同規模でより良い性能が出る」ことも示唆する。

🗺 概念マップ

中心の「規模を上げると損失がべき乗で下がる」という経験則に、 それを最初に測った Kaplan 則、 計算予算の配分を直した Chinchilla 則、 配分を決める制約 C ≈ 6ND、 どれだけ規模を上げても残る損失 L∞、 べき乗則から外れる現象(創発・推論コストを含めた最適化)、 当てはめの道具である両対数プロットがつながる。

スケーリング則規模 → 損失のべき乗則Kaplan 則 (2020)L ∝ N^−0.076Chinchilla 則 (2022)D/N ≈ 20計算予算 C ≈ 6NDN と D の配分還元不能な損失 L∞E ≈ 1.69 で頭打ち創発・inference-optimalべき乗則の外側両対数プロット傾き = 指数 (回帰)

用語集全体での位置づけは 🗺 概念マップ で確認できる。

📜 歴史と発展

Kaplan et al. (2020) が OpenAI から提唱。 Hoffmann et al. (2022) の Chinchilla 論文で『計算量に対する N・D の最適比』を再評価。 emergent ability (Wei 2022) の議論、 inference-optimal scaling など、 LLM 設計の経済学的議論が活発化中。

原典は Kaplan et al. (2020)ですが、 2 年後の Hoffmann et al. (2022)(Chinchilla)が結論を書き換えたことが重要です。 Kaplan 論文はパラメータ数を優先すべきと読まれ、 GPT-3 の設計に影響しました。 Chinchilla は学習トークン数が不足していたと指摘し、 パラメータを 4 分の 1 にしてデータを 4 倍にした 70B モデルが 280B に勝つことを示します。 べき乗則という「法則」でさえ、 実験設定次第で係数が変わる——この経緯自体が教訓です。

🧮 数式に値を入れて手で計算する: Kaplan 則で規模を 10 倍にする

Kaplan et al. (2020) がパラメータ数について報告した $L(N) = (N_c/N)^{\alpha_N}$、 $N_c \approx 8.8\times10^{13}$、 $\alpha_N \approx 0.076$ に、 N = 10⁸, 10⁹, 10¹⁰, 10¹¹ を代入する。

Step 1: N = 10⁸ のとき

N_c / N = 8.8×10¹³ / 10⁸ = 8.8×10⁵ ln(8.8×10⁵) = 13.688 0.076 × 13.688 = 1.040 L = e^1.040 = 2.830

Step 2: 残りの 3 点

NN_c / N0.076 × ln(N_c/N)L
10⁸8.8×10⁵1.0402.830
10⁹8.8×10⁴0.8652.376
10¹⁰8.8×10³0.6901.994
10¹¹8.8×10²0.5151.674

Step 3: 10 倍ごとの比と「損失半減」に要る規模

L(10N) / L(N) = 10^(−0.076) = e^(−0.076 × 2.303) = e^(−0.175) = 0.839 損失を半分にする倍率 k: k^(−0.076) = 1/2 → k = 2^(1/0.076) = 2^13.16 ≈ 9,100

🐍 Python で再現

🎯 このコードでやること:Step 1〜3 の値を numpy で計算し、 手計算と一致するか確かめる。

📥 入力例 定数 N_c = 8.8e13, alpha_N = 0.076(Kaplan et al. 2020 の報告値) N = 1e8, 1e9, 1e10, 1e11
1
2
3
4
5
6
7
8
9
import numpy as np
# Kaplan et al. (2020) のパラメータ数についてのべき乗則 L(N) = (N_c / N) ** alpha_N
N_c, alpha = 8.8e13, 0.076
N = np.array([1e8, 1e9, 1e10, 1e11])
L = (N_c / N) ** alpha
for n, l in zip(N, L):
    print(f"N = {n:.0e}  ->  L = {l:.3f}")
print("10 倍ごとの比 L(10N)/L(N) =", (L[1:] / L[:-1]).round(3))
print(f"損失を半分にするのに要る N の倍率 = {2 ** (1 / alpha):,.0f}")
📤 実行例(実測) N = 1e+08 -> L = 2.830 N = 1e+09 -> L = 2.376 N = 1e+10 -> L = 1.994 N = 1e+11 -> L = 1.674 10 倍ごとの比 L(10N)/L(N) = [0.839 0.839 0.839] 損失を半分にするのに要る N の倍率 = 9,139

💬 手計算の 2.830・2.376・1.994・1.674 と一致し、 10 倍ごとの比は 0.839 で一定になる。 規模を 10 倍にしても損失は 16% しか下がらず、 半分にするには N を約 9,100 倍にする必要がある。 このゆるやかな傾きが、 LLM が桁違いの規模を必要とした理由である。

🔗 隣接手法への橋渡し

「スケーリング則」は単独で完結する手法ではなく、 隣接領域と連携することで真価を発揮する。

🌳 手法選択フロー

「規模を増やすと性能がどう変わるか」を調べたいとき、 どの式・どの当てはめ方を選ぶかは次の順に決める。

  1. Step 1: 何を「規模」として増やすか決めたか?
    • パラメータ数 N・学習トークン数 D・計算量 C のどれか 1 つを横軸にする。 統計の場面なら標本サイズ n(このページの標準誤差の例では傾き −0.5)
  2. Step 2: 観測した規模の範囲は何桁あるか?
    • 1 桁未満 → べき乗則かどうか判定できない。 規模を広げて測り直す
    • 2 桁以上 → 両対数プロットで直線に乗るか見る(Step 3 へ)
  3. Step 3: 大きい規模の側で曲がっているか?
    • 曲がっていない → 両辺の対数を取った線形回帰で指数を推定(Kaplan 型の 2 項式)
    • 頭打ちが見える → L∞ を含む 3 項式 $E + A/N^{\alpha} + B/D^{\beta}$ を非線形最小二乗で当てはめる(Chinchilla 型)。 log の直線で当てると指数を過大に見積もる
  4. Step 4: 計算予算が決まっていて N と D を配分したいか?
    • はい → C ≈ 6ND の制約で損失を最小にする(Chinchilla の表では D/N ≈ 20)
    • 学習後に推論を大量に回す → 小さい N を長く学習する inference-optimal 側に寄せる
  5. Step 5: 知りたいのは損失か、 特定タスクの正答率か?
    • 正答率 → 閾値で急に上がる(創発)ことがあり、 べき乗則で外挿できない。 対数尤度のような連続指標でも測って比べる

🔭 解説深化 ── 順位-規模則(Zipf)で「べき乗則」を実データで掴む

このページの他節は LLM の損失スケーリング(L vs N)を軸に扱っています。 ここでは重複を避け、 同じべき乗則という数学的骨格を、 都市地理学の古典「順位-規模則(Zipf の法則)」の角度から、 SSDSE-B-2026 の 47 都道府県人口で追体験します。

💡 直感:規模を「順位で並べる」とべき乗則が姿を現す

スケーリング則の心臓は「変数を対数軸で見ると直線になる」ことでした。 損失 L と規模 N の関係だけでなく、 集団を大きい順に並べた『順位 r』と『規模 y』の関係にも同じ形が現れます。 これが順位-規模則 $y(r) = C \cdot r^{-\alpha}$ です。 両辺の対数を取ると $\log y = \log C - \alpha \log r$、 つまり log-log 平面で傾き $-\alpha$ の直線になります。 α≈1 の特別な場合が有名な Zipf の法則(2位は1位の約1/2、 3位は約1/3)です。

実データで確かめましょう。 SSDSE-B-2026 の 2023 年・総人口(列 A1101)を大きい順に並べ、 順位 r と人口 y を両対数でプロットしたのが下図です(実測値。 合成なし)。

100万 1000万 1位 3位 10位 30位 順位 r(対数) 人口 y(対数) 東京(1位) 鳥取(47位)
青点=実測 47 点/橙破線=最小二乗フィット(log-log)。 元データ:SSDSE-B-2026, 2023年, A1101。

実測して最小二乗で傾きを求めると(自然対数で $\ln y = 17.006 - 0.888\,\ln r$)、 傾き α ≈ 0.888、 決定係数 R² ≈ 0.958。 47 点がほぼ一直線に乗り、 「規模の分布がべき乗則に従う」ことが身近な公的統計で確認できます。 傾きが 1 よりやや小さい(0.89)のは、 日本の人口が理想 Zipf よりわずかに均等寄りという含意です。

⚠️ 落とし穴(重要):直線に「見える」ことと外挿できることは別物

① 外挿は指数関数的に暴走する。 上の実測フィットをそのまま延長して「もし 100 位の県があれば人口は?」と外挿すると、 式は約 40.7 万人を返します。 しかし実在する最小 47 位(鳥取)でさえ 53.7 万人。 log-log の直線は「1桁ズレると答えが桁で変わる」ため、 観測範囲(1〜47位)の外は保証が一切ない。 LLM で「損失 0 まで下がる」と誤読するのと同じ罠です。
② 首位の「はみ出し」(primacy)を平均が隠す。 純 Zipf(α=1) なら 2 位は 1 位の 1/2=約 704 万人のはず。 実際の 2 位・神奈川は 923 万人と大きく上振れし、 逆に 1 位・東京 1409 万人は理想線より下にいます(首都圏の連続性で東京単独が過小・周辺が過大)。 全 47 点でフィットすると α=0.888 ですが、 東京を除いて 2〜47 位だけで再推定すると α=0.947・R²=0.967 と直線性が改善します。 「1 点の外れ値が傾き全体を動かす」典型で、 log-log 回帰の傾きは残差・除外感度を必ず点検すべきです。
③ R²=0.958 は「べき乗則の証明」ではない。 log 変換は裾を圧縮してどんな右歪みデータもそれらしく直線化してしまうため、 高い R² だけでべき乗則を断定するのは危険です。 対数正規分布や指数分布の一部区間も log-log で直線に見えます。 尾部の乖離・別分布との比較・ブートストラップ CI をセットで確認するのが定石(本ページ他節の残差検査の注意と同じ精神)。

🚀 発展:LLM のスケーリング則と順位-規模則は「同じ数学・別の物語」

🔗 関連ページ

べき乗則を別角度から深めるための姉妹ページ(相対リンク):