※本記事は、YCゼネラルパートナーのAnkit Gupta氏とYCビジティングパートナーのFrancois Chaubard氏による対談動画「すべての創業者が知っておくべき機械学習テクニック」(Decodedエピソード)の内容を基に作成されています。Francois Chaubard氏は2012年にFei-Fei Liのラボでコンピュータビジョンの研究を開始し、その後10年間Focal Systemsを経営、現在はStanfordにてAGIに向けた拡散ベースのワールドモデルをテーマにPhDを修了中です。動画はY Combinatorの公式YouTubeチャンネルにて公開されており、詳細は https://www.youtube.com/watch?v=dC_3ys349bU でご覧いただけます。本記事では動画の内容を要約・再構成しております。なお、本記事の内容は登壇者の見解を正確に反映するよう努めていますが、要約や解釈による誤りがある可能性もありますので、正確な情報や文脈についてはオリジナルの動画をご視聴いただくことをお勧めいたします。Y Combinatorへの応募は https://www.ycombinator.com/apply 、スタートアップの求人情報は https://www.ycombinator.com/jobs よりご確認いただけます。
1. イントロダクション:拡散モデルとは何か、なぜ今重要なのか
1-1. 発表者紹介と議論の背景
Gary: 今日のゲストはYCのビジティングパートナーであるFrancois Chaardです。Francoisは2012年にFei-Fei Liのラボでコンピュータビジョンの研究を始め、その後10年間にわたってFocal Systemsを経営してきました。現在はStanfordに戻り、AGIに向けた拡散ベースのワールドモデルをテーマにPhDを修了しようとしています。今日はその最前線にいる彼と一緒に、「拡散(Diffusion)」というテーマを徹底的に掘り下げていきます。
Francois: ありがとうございます。お招きいただいて光栄です。
Gary: 私たちは先日NeurIPSから戻ってきたばかりで、そこで多くの研究者と話し、最新モデルについて深く考える時間を持ちました。そこで繰り返し目にしたのが、拡散モデル、そして自己回帰型LLMとは異なるアプローチの台頭です。画像生成にとどまらず、まったく異なるドメインにも拡散という手法が広がっていることを肌で感じました。今日はその全体像を整理したいと思っています。
1-2. 拡散モデルの基本定義と他のML手法との違い
Gary: まず基本的なところから始めましょう。そもそも「拡散(Diffusion)」とは何ですか?
Francois: 拡散とは、データさえあればあらゆるドメインの任意のデータ分布 P(data) を学習できる、非常に根本的な機械学習のフレームワークです。一言で言えば、「あるデータ分布を学習しようとする」手法です。
Gary: ただ、それは突き詰めれば、LLMを含めたあらゆる機械学習モデルが目指していることではないですか?拡散モデルは他の手法と比べて、どこが本質的に違うのでしょうか?
Francois: おっしゃる通り、すべての機械学習モデルはある意味でデータ分布を学習しようとしています。では拡散が特に際立つのはどこかというと、「高次元から高次元へのマッピング」を、少ないデータ量でも実現できる点です。たとえば、私はGaryの画像をわずか30枚しか持っていない状態で、1000×1000×3という約300万次元の入力空間から、同様の高次元の出力空間へのマッピングを学習しようとしました。それでも実際に動作するのですから、非常に強力だと思います。実際のコードも後でご覧いただきますが、その30枚の画像はサイズを64×64ピクセルに縮小したうえで、ランダムオーグメンテーションを使ってデータを増やしました。率直に言うと、もっと多くの画像をダウンロードするのが面倒だったので、その方法を選んだのですが(笑)、それでも拡散はきちんと機能しました。
Gary: なるほど。次元数に対して極めて少ないサンプル数でも P(data) を学習できる、ということですね。
Francois: そうです。そしてそれは他の多くのアプローチにはなかなかできないことです。
1-3. 現在の主な応用領域
Gary: その強力さが今まさに多くのドメインで花開いていますよね。拡散モデルは現在どのような領域で広く使われているのでしょうか?
Francois: 正直に言って、この手法がここまで広く応用できるとは当初は驚きでした。ルーツは2015年のJoshua Sohl-Dicksteinによる論文で、対象はCIFAR-10、つまり画像でした。ですから確かに出発点は画像だったのですが、今やその広がりはまったく別次元です。
Gary: 私が最もよく耳にする応用はやはり画像生成で、Stable Diffusionはほとんどの人が知っているモデルだと思います。最近ではSora、VO、Flux、SD3といった新世代のモデルも続々と登場しています。私自身もライフサイエンス分野の会社にいたので、そちらの動向もよく見ているのですが、次世代のライフサイエンスAI企業がこの技術に非常に大きな投資をしていることを実感しています。
Francois: まさにそうで、DeepMindがタンパク質の折り畳み予測でノーベル賞を受賞したのもこのアプローチによるものです。それからDiffDockというモデルは、小分子がタンパク質に結合する様子を予測するうえで非常に有効で、最新バージョンのAlphaFoldも拡散を中核的な手法として採用しています。さらに、Diffusion Policyという論文によって自動車の自律走行が実現できることも示されています。私はこれが非常に衝撃的な成果だと思っていて、ロボティクスが本当に機能するようになる鍵になる可能性があると見ています。天気予報の分野ではGenCastが世界で最も精度の高い予測システムになっています。また私の知人のHarrisonは、失敗ケースや悪いシナリオをサンプリングするための拡散手法にも取り組んでいます。
Gary: 本当に多岐にわたりますね。テキストベースのチャット以外でAIが実際に使われている場面を見ると、画像・動画・ライフサイエンス、そして今はコード生成まで、多くの領域で拡散が使われています。
Francois: そうですね。現時点で拡散が制覇していない領域はわずか2つ、自己回帰型LLMとAlphaGoのようなゲームプレイ(MCTS)だけです。それ以外の機械学習のほぼすべての領域で、拡散はすでに最先端に立っていると言っても過言ではありません。同じコアテクノロジーがこれだけ多様なドメインに適用されているという事実は、本当に驚くべきことだと思います。
2. 拡散モデルの仕組み:ノイズ付加と逆拡散
2-1. forward process(ノイズ付加)の直感的理解
Gary: 拡散モデルの基本的なプロセスについて、まず高レベルで教えてもらえますか?数学的な詳細は後で触れるとして、直感的にどういう仕組みなのかを理解したいです。
Francois: 非常にシンプルです。まずデータのサンプル、たとえばAnkaの画像やGaryの画像を取ってきて、それにノイズをかけます。そしてさらにノイズをかけ続けます。この「ノイズをかけた画像の連なり」を作るのは簡単です。難しいのは、その逆方向、つまりノイズから元のGaryやAnkaの画像を復元することです。ですから、モデルにはその逆のプロセスを学習させます。これが基本的な考え方です。
Gary: つまり、「ノイズをかける側」と「ノイズを除去する側」があって、モデルとして訓練されるのは後者のdenoiser、ということですね。
Francois: まさにそうです。ノイズをかけた画像を入力として与えて、モデルに中間表現を学習させながら、元の P(data) に戻るプロセスを習得させます。
実際にコードでも示しましたが、私はGaryの画像を64×64ピクセルに縮小した30枚を使い、この forward process を実装しました。タイムステップ0から10、25、そして100まで順にノイズをかけていくと、画像の構造が段階的に破壊されていき、最終的にはランダムなスタティック、つまり完全なノイズになります。モデルが学習しなければならないのは、この完全ノイズの状態から出発して、元の画像に戻るための各ステップを正確に辿ることです。
2-2. 損失関数の進化と「何を予測するか」という問いの変遷
Gary: 拡散モデルはこの10年間で大きく進化してきたと思います。2015年の最初の論文から、現在の最新モデルに至るまでの技術的な変遷を、大まかにでも辿っていただけますか?
Francois: 2015年のJoshua Sohl-Dicksteinによる非平衡熱力学の論文は、現代の拡散に必要な主要コンポーネントをほぼすべて揃えていました。その意味で、今私たちがやっていることは基本的に「そこから何を調整するか」という話です。調整できる要素として、まずノイズをどの重みでどのように付加するか、つまりノイズスケジュールがあります。そして損失関数として「何を予測させるか」という問いがあります。
Gary: 損失関数の選択肢には具体的にどんなものがあるのですか?
Francois: いくつかのアプローチがあります。一つ目は、ノイズのかかった状態 x(t) を入力として、一つ前のステップ x(t-1)、つまり実際のデータを直接予測させる方法です。二つ目は、そのステップで追加されたノイズ誤差 ε を予測させる方法。三つ目は、誤差をタイムステップで割った「ベロシティ」を予測させる方法。そして四つ目が、拡散スケジュール全体にわたるグローバルな誤差を予測させる方法で、これはフローマッチングと呼ばれます。いずれも本質的にはdenoising、つまりノイズ除去という目標は共通していますが、それぞれ目的関数の設計が異なります。
Gary: これらは一連の論文として順番に提案されてきたのですか?
Francois: そうです。FID(Frechet Inception Distance)というメトリクスでひたすらヒルクライミングを続けてきた結果です。FIDは生成された画像の品質を測る指標で、少し変わった評価方法ではあるのですが、これを改善し続ける中で様々なトリックが積み重なっていきました。実際の経験から言うと、まずデータ自体を直接予測するのは非常に難しいと分かりました。ノイズ誤差を予測する方がずっと簡単で、ベロシティの予測はさらに簡単、そしてグローバル誤差の予測がもっとも簡単でした。つまり、ノイズからデータへとサンプリングする方法として、より簡単なやり方を次々と見つけてきたわけです。
Gary: ここで言う「簡単」というのは、数学的にシンプルとか実装が楽という意味ですか?
Francois: 実はそれも正しいのですが、私が言いたかったのは主に「モデルが学習しやすい」という意味です。ただ面白いことに、結果的に数学も簡単になり、コードも短くなっていきました。これは機械学習の研究において珍しいことで、通常は研究が進むほど複雑になっていくものです。アーキテクチャの面でも、最初はU-Netが主流でしたが、その後Diffusion Transformer(DiT)が登場し、クロスアテンション機構が取り入れられるなど変化がありました。それでも全体的な方向性は「FIDを下げ続ける」というシンプルな目標に従って進化してきたと言えます。
Gary: 最初の2015年の論文の実装では、FIDはどのくらいだったのですか?
Francois: 私が実装してみた結果、100ステップの拡散後でFIDが222でした。現代のモデルであれば8〜10程度ですから、いかに大きな進歩があったかが分かります。また損失関数として当初はKLダイバージェンス、つまり実際のデータ分布と学習中の分布との距離を最小化するアプローチが使われていましたが、これはコードの量もかなり多くなります。後に登場するフローマッチングと比較すると、その差は非常に際立っています。
2-3. ノイズスケジュール(βスケジュール)の設計思想と落とし穴
Francois: 拡散モデルの構成要素の中で、最も理解が難しく私自身も苦労した部分が、このノイズスケジュールです。タイムステップ0からtまで、どのようにノイズを付加していくかという設計が、実はモデルの学習の安定性に直接影響します。
Gary: 最も直感的なのは線形補間ですよね。画像を1、ノイズを0として、線形に混ぜていくという方法ではなぜうまくいかないのですか?
Francois: まさにその直感でいくと線形補間が自然に見えます。ところが実際にやってみると、学習が非常に不安定になります。理由はこうです。スケジュールの初期段階では、画像に対して相対的に追加するノイズの量が非常に小さくなります。つまりモデルは非常に細かいノイズの変化を学習しなければなりません。一方でスケジュールの後半になると、完全なノイズに到達するために一気に大量のノイズを追加しなければならない。つまり一つのタイムステップで処理しなければならない誤差の量が爆発的に増えます。これではモデルへの負荷が前半と後半で極端に不均等になってしまいます。
Gary: なるほど、モデルが一部のステップで処理しなければならない誤差量が相対的に大きすぎる、ということですね。
Francois: そうです。本来あるべき姿は、各タイムステップで追加される相対的なノイズ量が均等であることです。そのための累積和を可視化すると、線形ではなく、1マイナスシグモイドのような曲線になります。この曲線こそがβスケジュールです。βは拡散レート、つまりタイムステップ0からTまで展開していく際のノイズの付加速度です。通常はβ_minからβ_maxまでの範囲が設定されます。そしてαは1マイナスβ、つまり各ステップでどれだけ元の情報が保持されるかを表します。最終的に重要になるのがα-bar(ā)で、これはαの累積積であり、実際の重み付けに使用されます。
このβスケジュールさえ正しく設計できれば、残りの部分はほぼ自動的にうまくいきます。逆に言えば、ここを疎かにすると学習全体が崩れます。この部分は非常に重要なのに、直感的には見えづらいため、拡散モデルを初めて学ぶ人が最も躓きやすい箇所だと感じています。
3. フローマッチング:拡散の本質をシンプルに再定式化
3-1. 従来の拡散の問題点とフローマッチングの発想
Gary: 次に見せてもらいたいのはフローマッチングですね。これはどういう動機から生まれた手法ですか?
Francois: フローマッチングはMetaのYaron Lipmanらが提案したもので、私が「これは本当に美しい」と感じた手法です。まず従来の拡散が抱えていた問題から説明しましょう。従来の拡散では、データにノイズを付加するプロセスを考えるとき、データの点からスタートしてランダムにノイズベクトルを引いてある方向に進み、また別の方向に進み、また別の方向に進み、という形で非常に蛇行した確率的な経路を辿ってノイズ空間に到達します。そしてモデルはその蛇行した経路をまったく同じように逆向きに辿ることを学習しなければなりません。
Gary: それがテスト時のコストにも直結するわけですね。
Francois: まさにそうです。皆さんもChatGPTやMidjourneyで画像が生成されるまでしばらく待った経験があると思いますが、あれはモデルを1000回近く呼び出しながら、P(data) に到達するまで反復的に処理しているからです。蛇行した経路を一歩一歩辿っているわけで、推論コストが非常に高くなります。
Gary: 直感的に考えると、その蛇行経路をショートカットできる、より短い経路があるはずですよね。
Francois: それがまさにフローマッチングの核心です。LipmanらはMetaでこう言いました。「途中の中間ステップはすべて忘れてよい。ノイズとデータの間にはグローバルなベロシティ、つまり一本の直線が存在する。今どこにいるかに関わらず、その直線の方向に進めばよい。」これだけです。あなたがノイズ空間のどこにいても、ひたすらその一本の直線の方向に進み続けるようにモデルを訓練する。それがフローマッチングです。
3-2. 実装の極限的シンプルさと高いドメイン汎用性
Gary: コードで実際に見せてもらいましたが、あれは本当に驚くほど短かったですね。
Francois: そうです。機械学習の歴史上最も強力な手続きが、わずか10〜15行のコードで実現できます。実際に説明すると、まず手元にはデータ、たとえばGaryの画像があります。次にガウスノイズをサンプリングします。そして拡散スケジュール上のある時刻tを指定します。そこからx(t)、つまりその時点でのノイズがかかった画像を生成します。これはtにデータを掛けて、1マイナスtにノイズを掛けて足し合わせるだけです。
Gary: その時点の混合比率をtで制御するわけですね。
Francois: そうです。そしてベロシティを計算します。ベロシティはtに依存しません。今どこにいるかは関係なく、ただ「ノイズマイナスデータ」、これだけです。これがグローバルベロシティです。そしてこの計算結果を訓練ループに返します。この訓練ループが私がこれまで書いた中で最も短いコードで、わずか5行です。バッチを取得し、時刻tをサンプリングし、先ほどの関数を呼び出してx(t)とベロシティを得て、モデルにx(t)を入力してベロシティを予測させ、予測ベロシティと真のベロシティの差を損失として最小化する。これだけです。
Gary: このコードにはモデルのアーキテクチャは含まれていないですよね。「モデル」というのは抽象化されたブラックボックスとして扱われている。
Francois: まさにその通りで、これが非常に強力な抽象化です。ここで使うモデルは何でも構いません。タンパク質を扱うならタンパク質用のモデル、テキストを扱うならLLM、画像ならビジョンモデルを入れればいい。フローマッチングの訓練コード自体は、画像とも、タンパク質とも、何とも関係がありません。天気データでも、株価データでも、ロボットのテレオペレーションで収集した軌跡データでも、DNAでも、まったく同じコードがそのまま使えます。
Gary: アーキテクチャについては、従来はU-Netが主流だったと思いますが、それもフローマッチングとは独立した話ということですね。
Francois: そうです。アーキテクチャとしてはRNN、U-Net、あるいは現代的なDiffusion Transformer(DiT)とクロスアテンション機構の組み合わせ、何を使っても構いません。アーキテクチャの選択はフローマッチングとは完全に独立しています。
Gary: これは非常に示唆深い結果だと思います。モデルが高度化するほど複雑になっていくという思い込みがありますが、この訓練ループは文字通り10行のコードで、私たちが「魔法のようなAIの結果」として体験している画像生成や動画生成の数学的・原理的な基盤をほぼ説明してしまっている。
Francois: おっしゃる通りです。もちろん、それを実際にスケールアップするためのエンジニアリングは別の話です。モデルが1000億パラメータのTransformerになり、データセンターとGPUが必要になる。そこが本当に難しい部分です。ただ、基礎となる機械学習の数学自体は実際にはかなりシンプルです。それからもう一つ付け加えると、拡散モデルの周辺にはさまざまな解釈が存在していて、確率的グラフィカルモデルとして見る人もいれば、隠れマルコフモデルとして見る人もいます。物理学の視点からは統計力学的な解釈をする人もいますし、確率微分方程式(SDE)として定式化する人もいます。どれも間違いではなく、それぞれの視点から理解を深めることは有益です。ただ、教える観点からすると、「ただのノイズです」というところからスタートするのが最もシンプルで、そこから理解を積み上げていくのが一番わかりやすいと私は思っています。
3-3. 現在の限界:拡散ステップ数の固定問題と蒸留による対処
Francois: フローマッチングを含む現在の拡散モデル全般について、私が率直に気に入らない点が一つあります。それは拡散ステップ数がテスト時に固定されてしまうという問題です。たとえば訓練時に100ステップの拡散スケジュールで学習したとします。テスト時にそのステップ数を変えてしまうと、うまく動きません。
Gary: ちょっと待ってください。フローマッチングはグローバルベロシティを学習するから、そのステップ数の依存性はあまり関係ないのではないですか?
Francois: いいえ、フローマッチングでも同じ問題があります。たとえばステップ数を100から200に倍にして、さらに高解像度の出力を期待したとしても、実際には出力が白くなるだけです。まったく機能しません。自分でも試しましたが、訓練時に使ったステップ数を超えることはできません。
Gary: それは重要な制約ですね。
Francois: そうです。この問題への対処として、知識蒸留(distillation)という手法が使われています。たとえば100ステップで訓練したモデルを、10ステップのモデルに蒸留するという方法です。10ステップのモデルに、100ステップのモデルの挙動を学習させるわけです。ただし、その場合でも10ステップで再訓練しなければなりません。つまり訓練時のステップ数と推論時のステップ数は、原則として一致させなければならないという制約は変わりません。ステップ数の圧縮自体は蒸留によってある程度は達成できますが、訓練をやり直す必要があるという点で根本的な解決にはなっていません。テスト時に自由にステップ数を増やしてより良い結果を得るというような使い方は、現時点では難しい状況です。これは今後の研究課題の一つだと思っています。
4. スクイントテストから見た拡散モデルとAGIへの示唆
4-1. スクイントテストの定義と自己回帰LLMへの適用
Gary: 「スクイントテスト」という概念について話してもらえますか?どこから来た概念で、どういう意味なのかを教えてください。
Francois: Yann LeCunが面白い講義の中で、飛行の発見について語っています。私たちはずっとコウモリの羽ばたきを模倣しようとしていて、それが無駄だったという話です。その点については彼は100%正しいと思います。ただ私はこう付け加えたい。私たちは確かに「羽ばたく翼」は必要なかったけれど、「2枚の翼」は必要でした。ライト兄弟の最初の飛行機を見て、目を細めて(squint)鳥と見比べると、「ああ、似ているな」と感じます。その後ヘリコプターやジェット機、ロケットなど様々な形に発展しましたが、基本的な構造としての翼は残りました。つまり「飛行」という目標を達成する手段の集合には複数の要素があり、それぞれ異なる長所と短所を持っています。「知性」という目標についても同様です。私たち人間はその唯一の存在証明ですが、きっと他の要素も集合の中に存在するでしょう。LLMが広い意味でそこに到達できるかもしれません。ただ、スクイントテストを通過するかどうか、という観点で見ると、現時点では疑問が残ります。
Gary: LLMに対してそのスクイントテストを適用するとどうなりますか?
Francois: LLMの構成を見ると、まずモノリシックなTransformerが積み重なった一枚岩のスタックがあります。訓練には3つのフェーズがあります。事前学習(pre-train)、SFT(supervised fine-tuning)、そしてポストトレーニングです。そしてその後は一切の学習が行われません。出力は常に1トークンずつ、順番に生成され、後戻りすることは絶対にありません。
Gary: 1トークンずつ逐次的に出力するという制約が本質的な問題だということですね。
Francois: そうです。一方で脳を見ると、まったく異なる構造が見えます。脳には大規模な再帰があります。学習プロセスは常に一つで、生涯を通じて継続されます。左脳と右脳という2つの半球が脳梁を介して行ったり来たりしながら思考を形成しています。そして私自身の思考プロセスを振り返っても、1トークンずつ考えているわけでは決してありません。たとえばコードを書くとき、一文字ずつ書いていくことはしません。後戻りしながら再帰的に改善し、また前に戻り、さらに改善し、という反復的なプロセスを繰り返しています。概念を思い浮かべて、より高レベルの概念に昇華させ、またそれを具体的な低レベルの表現に落とし込む、という動的なプロセスが常に動いています。
Gary: LLMの内部にも実は同様の処理が起きているかもしれないけれど、それが最終的な出力の形式によって制約されているということでしょうか。
Francois: おそらくそうだと思います。LLMの内部では再帰的な思考が起きているかもしれない。しかし訓練の構造上、1ステップで1トークン以上のことはできないように縛られてしまっています。そのすべての能力がLLMの内部にあったとしても、アクションスペースが「1トークンずつの出力」に限定されているため、その能力が外に出てこられない。蓋をされている状態と言えるかもしれません。
4-2. 拡散モデルがAGIに近づける2つの本質的要素
Gary: では拡散モデルはそのスクイントテストをどの程度通過できると思いますか?
Francois: 拡散モデルがAGIへの道を完全に開くとは思っていません。スクイントテストを完全に通過するとも言えない。ただ、脳が確実にやっていることのうち、少なくとも2つの要素を拡散は提供してくれます。
一つ目はランダム性の活用です。生物学と自然界のすべては、ランダム性を積極的に利用しています。ランダム性は良いものです。そして拡散がやっていることは、まさにランダム性を活用することです。データを取ってきてノイズをかける、そのノイズからデータについて学ぶ。では脳は入力データにノイズを加えることができるか?絶対にできます。ニューロンは本質的にランダムです。スパイクのパターンや対数正規分布など、脳の動作には大量のランダム性が組み込まれています。拡散がノイズを使って学習するというアプローチは、この意味で脳の動作原理と深く共鳴しています。
Gary: ランダム性が知性にとって欠かせない要素だという視点は面白いですね。
Francois: そうです。そして二つ目は概念単位での出力と反復的な修正です。1トークンずつ出力するのではなく、まず大きな思考の塊を生成し、それを見直して修正し、また修正し、という動的なプロセスです。拡散モデルはノイズから出発して段階的にデータを生成するプロセスを持っていて、これはある種の「下書きを何度も修正していく」という思考プロセスに近いものがあります。LLMが1トークンずつ直線的に出力するのとは根本的に異なるダイナミクスです。
Gary: つまり拡散は、ランダム性の活用という観点でも、概念単位での思考と反復的な修正という観点でも、少なくともLLMより脳に近い構造を持っているということですね。
Francois: 少なくともその2点については、確実に脳がやっていることと対応しています。完全なスクイントテストの通過には至っていないかもしれませんが、LLMが持っていない重要な性質を拡散は持っている。それが私がAGIの文脈で拡散モデルを真剣に見ている理由です。
5. 創業者・研究者へのアドバイスと市場機会
5-1. モデルを訓練する側へ:全応用領域で拡散手続きを検討せよ
Gary: ここまで拡散モデルの仕組みと可能性について深く議論してきました。では、この研究領域に対して、研究者として貢献しようとしている人や、新しいプロダクトを作ろうとしている創業者は、どのように向き合えばよいでしょうか?
Francois: 大きく二つのグループに分けて考えると整理しやすいと思います。まず「自分たちでモデルを訓練している」側の人たちへのメッセージです。アプリケーションが何であれ、拡散手続きを真剣に検討してください。これは強い言い方をしているのではなく、本当にそう思っています。たとえそれが最終的なモデルそのものではなく、潜在空間(latent space)を獲得するためだけに使う場合であっても、拡散を訓練ループの基礎的な一部として組み込む価値があります。機械学習のどんな応用領域においても、拡散手続きを深く検討しない理由は私には見当たりません。
Gary: 特定のドメインに限らず、あらゆる領域のモデル開発者に向けたアドバイスということですね。
Francois: そうです。タンパク質でも、ロボティクスでも、テキストでも、自動運転でも、天気予報でも、拡散は有効です。Section 3でお見せしたフローマッチングのコードが、画像にもタンパク質にも天気データにもまったく同じコードで対応できるというのがその証拠です。モデルを訓練する立場にある人は、自分の領域に関係なく、まず拡散を出発点として考えてほしいです。
5-2. モデルを使う側へ:5年後の進化予測を今すぐ更新せよ
Francois: 一方で、モデルを自分では訓練せず、既存のモデルを活用してプロダクトやビジネスを構築している人たちへのメッセージは少し異なります。こちらへのアドバイスはシンプルで、「これらの技術がどれだけ急速に良くなっているかについて、自分の事前確率(prior)を今すぐ更新してください」ということです。
Gary: 過去5年間の進化の速さは本当に驚異的でしたよね。
Francois: そうです。Midjourneyが最初に登場した頃の画像生成と、今のVO、Sora、Flux、SD3を比較してみてください。おそらく1000倍は良くなっています。その答えはシンプルで、スケールアップです。時間とお金とデータをかけてスケールアップしただけで、ここまで改善した。これと同じことが今、タンパク質に対して起きています。DNAに対して起きています。ロボティクスの制御ポリシーに対して起きています。自動運転に対して起きています。パックが向かう先に先回りして滑れ、という言葉がありますが、これらすべての領域で同じことが起きるのはほぼ確実です。コストと時間がかかるのは事実ですが、それは解決可能な問題です。
Gary: そして拡散モデルそのものの手続きも改善し続けているわけですよね。
Francois: まさにそうです。スケールアップによる改善だけでなく、拡散という手続き自体がより単純に、よりよく機能するようになっています。これら二つの改善が同時に進んでいる。だからこそ、家庭用ロボットが本当に機能するようになると私は確信しています。タンパク質折り畳みの精度はさらに上がり、その次はDNA、メタボロミクス、あらゆる生命科学の領域に応用が広がっていきます。モデルを使う側の創業者は、今この瞬間にもその未来が近づいていることを意識したうえで、どの領域に賭けるかを判断してほしいと思います。
5-3. 拡散がまだ制覇していない領域と今後の展望
Gary: 一方で、拡散がまだ最先端ではない領域もありますよね。
Francois: はい、現時点で拡散が制覇していない領域は正直に言って二つだけです。一つは自己回帰型LLM、つまりテキスト生成の領域です。もう一つはAlphaGoのようなゲームプレイで、モンテカルロ木探索(MCTS)が依然として最先端です。この二つの領域ではまだ拡散が自己回帰的なアプローチを超えるには至っていません。ただし、より多くの研究が必要というだけであって、原理的に不可能とは思っていません。
Gary: NeurIPSでも拡散LLMが大きなトピックになっていましたね。
Francois: そうです。連続拡散LLMと離散拡散LLMの両方が非常に注目を集めていました。コード生成にも適用されつつあり、テキストの領域での拡散の進出は今まさに始まっている段階です。自己回帰型LLMが唯一の選択肢ではなくなる日は、そう遠くないかもしれません。
Gary: 創業者の観点から見ると、モデルを開発する側と、それを活用してプロダクトを作る側の両方で、新しい世代の企業が生まれているように見えます。
Francois: そうです。ロボティクスや、テキスト生成、動画生成のために拡散を使った新しいモデルを開発している創業者もいれば、そうした手法を他のところから持ってきて、その上にプロダクトやビジネスを構築している創業者もいます。どちらの側でも新しい世代の企業が生まれています。私はこれが経済全体を再定義していくと思っています。拡散という一つの技術的手続きが、これほど多くの産業に同時に波及していくというのは、歴史的に見ても非常に稀なことです。創業者としてこの瞬間にいるというのは、本当に希有な機会だと思います。
Gary: 今日は本当に深いところまで話してもらえました。拡散モデルに関連する機械学習研究のトピックはこれからも掘り下げていきたいと思います。次回もぜひよろしくお願いします。
Francois: こちらこそ、ありがとうございました。
