AI・機械学習
バラの花びらが私たちに帰納法について教えてくれること
What Rose Petals Teach Us about Induction (oranlooney.com)
要約
この記事は、観察から理解に至る普遍的な方法論、すなわち「帰納法」の根本的な問題を探求しています。著者は、バラの花びらの数をサイコロの出目から予測するシンプルな例を用いて、機械学習アルゴリズムがこの問題にどうアプローチするかを分析します。アルゴリズムの性能は「帰納的バイアス」に大きく依存し、問題の構造に合致したバイアスを持つものが迅速に学習できることを示しています。
全文翻訳
バラの花びらが私たちに帰納法について教えてくれること
オーラン・ルーニー 2026年7月16日
哲学 機械学習 LLM 可視化
リチャード・ハミングはベル研究所の同僚にしばしばこう尋ねていました。「あなたの分野で最も重要な問題は何ですか? そして、なぜあなたはそれに懸命に取り組んでいないのですか?」 それに対して彼らは、おそらく「ディック、まだ朝の8時半だ。コーヒーもまだ飲んでいない。そんな会話を始めるのか?」と答えたことでしょう。それでも、良い質問ではありませんか? 私にとって、その答えは明白です。「帰納法のための一般的な方法は存在するのか?」 さて、皆さんは人間は帰納法をかなりうまく理解していると思っているかもしれません。科学的方法や統計学などがあるのですから。しかし、そうではありません。私たちの理解の基盤にはギャップがあり、そこを時折、場当たり的にしか渡ることができません。ヒュームはそれを帰納法の問題と呼びました。よりキャッチーな名前は「ノー・フリーランチ」定理ですが、それは「定理」という言葉から可能な限りかけ離れたものです。そしてそれは単純にこうです。観察から理解へと至る、一般的で体系的な方法はない、ということです。もしあなたがこれまでにそれに触れたことがなければ、それがなぜ大問題なのか分からないかもしれません。私たちは皆、考えもせずに常にこれを行っているのではないでしょうか? 私たちはそうしていますが、どのように行っているのかを知りません。それは、それをどのように教えるべきか、どのように自動化すべきか、あるいは私たちがそれを正しく行っているのかどうかさえも知らない、ということです。必要なのは、特別な数学的な洗練を必要とせずにアイデアを例示する、シンプルで具体的な例です。私はまさにそのような例を挙げ、様々なアルゴリズム的アプローチがどのように機能するかを示し、問題の中心にある避けられないトレードオフを説明しようと試みます。すべてがうまくいけば、あなたは最も基本的な未解決問題の1つについて重要なことを学ぶだけでなく、例えば、なぜフランソワ・ショレがARC-AGIベンチマークを導入したのか、なぜAI研究者がワールドモデルについて話し続けるのか、そしてトランスフォーマーアーキテクチャが言語モデルにとってスイートスポットに当たるというのはどういう意味なのかを理解するのに役立つ実践的な直感を養うことになるでしょう。
ゲーム
まず、トリックを知っていて、あなたがそれから楽しむであろう種類の人間だと判断する友人が伝統的に伝える、ちょっとしたオタクの伝承から始めましょう。私はここで可能な限りその経験を再現しました。必ずしもそれを解く必要はありませんが、根本的な教訓を完全に把握したいのであれば、誠実な努力をする必要があります。すべて終わりましたか? 素晴らしい! どのような方法を使いましたか? その方法を子供に教えることができますか? その方法を実装するプログラムを書くことができますか? いいえ? まあ、私もできません。この記事はそれについてのものです。しかし、それでも試してみましょう。既製の機械学習アルゴリズムをいくつか使用して、それが何かを教えてくれるかどうか見てみましょう。スポイラー注意!
アルゴリズム的アプローチ
私がやったことは次のとおりです。様々な機械学習アルゴリズムに、徐々に増えていく数の例が示されました。各例は、5つのサイコロの出目の数値値と、それらのサイコロに対応するバラの花びらの正しい数で構成されています。各アルゴリズムは、それぞれ独自の方法で、それらのサイコロの出目を花びらの数にマッピングする関数を学習します。その後、その性能は、これまで見たこともなく、訓練も受けていない、異なる例のセットで評価されます。関数が出力する数値は最も近い整数に丸められ、真の花びらの数と正確に一致した場合のみ正解とマークされます。0.5ずれていても不正解とマークされます。テスト精度は、正解したサイコロの出目の割合です。あるアルゴリズムが100%の精度に達したら、ベンチマークを飽和したとみなし、停止します。100%の精度に達するために必要な最小の例の数は、点で示され、凡例のNとして示されています。(ちなみに、完全なソースコードと概要レポートはGitHubで入手できます。詳細を知りたい方はご覧ください。)各アプローチがなぜうまく機能したのか、あるいは悪かったのかを理解するために、ケースバイケースで見ていきますが、まず、グラフから全体的な結果を見てみましょう。一見しただけでも、グラフからすでに非常に興味深い結論をいくつか引き出すことができます。まず第一に、いくつかはほとんどすぐに問題を解決し、いくつかはパターンに気づくまでに長い間苦労し、いくつかはまったく解決できないことが明らかです。したがって、一部のアプローチがこの特定の問題に対して、他のアプローチよりも優れている、あるいは劣っている要因があるということです。また、根本的に異なる学習アルゴリズム間でも、各曲線が同じ特徴的な形状に従っているように見えることも興味深いです。それぞれが、学習を開始する前に一定の最小限の例数を必要とするように見えますが、一度理解すると、進歩は急速になり、すぐに100%に達します。これはあなたの経験を反映しているかもしれませんね? では、なぜ異なるアルゴリズムが「バラの周りの花びら」の問題を「解決」するために異なる数の例を必要とするのか、という当然の疑問が生じます。それは単なる偶然でしょうか? それは不透明で知ることができず、私たちはランダムに異なるアプローチを試すしかないのでしょうか? 全く違います。
帰納的バイアス
鍵となる概念は「帰納的バイアス」と呼ばれます。モデルの帰納的バイアスとは、大まかに言えば、その事前知識と仮定の組み合わせです。つまり、それが好む、あるいは適合しやすいパターンの種類と、それが要求するあらゆる可能な解が持つべき構造のことです。データセットの特定の構造に適合した帰納的バイアスを持つモデルは、数個の例からでも迅速に学習します。より一般的で、探索すべき仮説空間が大きいモデルは、パターンを拾うためにより多くの例を必要とします。そして、間違った帰納的バイアスを持つモデル、あるいは問題の真の構造と直接矛盾する仮定をするモデルは、まったく学習することができません。これらのアルゴリズムのいくつかに具体的に飛び込んで、何がそれらをこの問題に適している、あるいは不適切にしているのかを理解しましょう。
ナイーブ線形回帰
ベースラインとして機能する、意図的に弱い線形モデルから始めましょう。このアプローチが「ナイーブ」である理由は、単に5つの数値特徴量(サイコロごとに1つ)を使用していることです。ML愛好家なら誰でも、それは愚かだと言うでしょう。しかし、少し後で、生のデータをこの形式で与えられても問題なく機能するいくつかの他のモデルを見るでしょう。なぜ線形モデルにスプーンで餌を与える必要があるのでしょうか? グラフからわかるように、このアプローチは1,000個の例を見せられた後でも進歩していませんが、実際にはそれよりも悪いです。このアルゴリズムは問題を解決できません。決して解決しないでしょう。その帰納的バイアスには、真のモデルがそのパラメータにおいて線形であるという仮定が含まれていますが、この問題ではそうではありません。結果として、このモデルは真の解を表すことが文字通り不可能です。私は主に、帰納的バイアスが間違った場合に何が起こるかについての警告として、これを記載しています。間違った仮定をすると、少し時間がかかるという問題ではなく、機能しないモデルに行き着く可能性があります。
カテゴリカル特徴量を持つLR
もちろん、これは標準的な特徴量エンジニアリングを使用することで簡単に修正できます。サイコロの出目をカテゴリカルレベルとしてワンホットエンコーディングすると、モデルはより良い「語彙」を得ます。これで、各フェイスを個別のケースとして扱うことができ、解を見つけることができます。しかし、ご存知のように、特に速くはありません。その理由は簡単です。各サイコロを個別に扱っており、サイコロごとにルールを「再学習」する必要があります。さて、もし花びらのルールが「最初のサイコロ、中央のサイコロ、最後のサイコロの合計を取り、他の2つは無視する」のようなものであれば、それは有利になるでしょう。モデルは、サイコロごとに異なるパラメータを学習するのに十分柔軟だからです。しかし、ルールがそのようではないため、このアプローチはわずかに遅くなります。
ビンカウントピボット
線形回帰が問題を非常に迅速に解決できるようにする、さらに優れた特徴量表現があります。各サイコロを特徴量として扱う代わりに、6つの特徴量を用意し、それぞれが特定の値を示すサイコロの数を表すのはどうでしょうか? def bincount(X: npt.NDArray[np.int_]) -> npt.NDArray[np.i