深層学習の「最終ボス」

ディープラーニング
この記事は約33分で読めます。

深層学習の成功は目覚ましいものであるが、その理論的基盤は依然として不明瞭である。現在の大規模言語モデルは膨大なパターン認識能力を持つ一方で、基本的な算術演算やアルゴリズム的推論において予測可能な失敗を示す。幾何学的深層学習は対称性を利用してニューラルネットワークに構造的制約を組み込む手法として発展してきたが、その枠組みは可逆変換に限定されており、情報を破壊する計算プロセスを扱うことができない。本動画では、カテゴリー理論を用いて深層学習の統一的な理論的枠組みを構築しようとする試みが紹介される。この「カテゴリカル深層学習」は、群論による対称性の記述を超えて、リスト処理、再帰的計算、重み共有といったより一般的な計算構造を形式的に表現する。二つのカテゴリーと二射を用いることで、従来は経験的にしか扱えなかった重み共有やアーキテクチャ設計を原理的に導出できる可能性が示される。これは深層学習における周期表を見出そうとする野心的な取り組みであり、ニューラルネットワークを単なる補間器ではなく、計算の意味論を保存する構造として理解する新たな視点を提供するものである。

The "Final Boss" of Deep Learning
We often think of Large Language Models (LLMs) as all-knowing, but as the team reveals, they still struggle with the log...

言語モデルの計算能力の限界

言語モデルは足し算ができません。本当にできないんです。できると主張する人を見かけるたびに、私はChatGPTなどで確認してみるんですが、やはりできないんです。彼らができるのは、多くの場合うまくいくパターンを学習することだけで、常にトリックで引っかけることができます。

例えば、ChatGPTに8がたくさん並んだ数と、最後に2がついた1がたくさん並んだ数を足すとどうなるかと聞くと、正しい答えが返ってきます。これは、トリックを認識できるからです。「ああ、これは1とゼロがたくさん並ぶだけだ」と分かるんです。あなたが騙そうとしていることを察知するわけです。

しかし、今度は8のうちの一つを7に変えてみると、実際に何をしているのか本当に理解していなければなりません。7のところまで来て、ゼロの伝播を止めなければならないんです。でもそれができない。完全に失敗します。でたらめな答えを作り出すか、どちらにせよ1とゼロがたくさん並んだ答えだと言ってしまいます。

私たちがアルゴリズム的に、そして人間が学ぶ基本的な方法で知っているような足し算は、確実にできないんです。ですから、ニュートンの運動の三法則のような、非常に基本的なレベルで、それを本当に捉えているのか、VOやGenieといったこれらのモデルが物理法則を100%正確に捉えているのかという点を、本当に注意深く見極める必要があります。現時点では捉えていません。これらは一種の近似であり、カジュアルに見る限りはリアルに見えますが、例えばロボティクスに依存できるほど十分に正確ではないんです。

非常に強力なツールを言語モデルに接続することで、ある程度の進歩を達成できるからといって、これらのモデルの次世代がどのようなものになるか、どうすれば本質的に改善できるかを考えるべきでないということにはなりません。世界最高のツールを持っていたとしても、そのツールに対する正しい入力を予測できなければ、あなたを救うことはできないからです。

現在の最先端モデルの一部でさえ、ご存知の通り、たった一つのトークンを出力するために何千億もの乗算を実行します。それにもかかわらず、比較的小さな数同士でも、失敗せずに確実に掛け算することができません。これは私にとって、私たちがこれらのシステムを訓練する目的、それらを構築する方法、そして下流で何に使いたいかの間に、大きな不整合があることを示唆しています。

ツール使用だけでは不十分

特に推論や科学を行う場合には重要な問題です。しかし、例えばLLMに適切に教えれば、記憶の失敗まで含めて足し算を教えることができるように思えます。人間と同じように、桁を忘れたり、繰り上げを忘れたり、アルゴリズムを間違えたりすることがある確率はありますが、それまでの範囲では、長い桁の数字を足すこの手続きを学習できます。それがニューラルなのか記号的なのか、何かしらのアルゴリズム、おそらく記号的な何かをやっているのですが、それをニューラルな機構で行っているんです。そしてニューラルな機構は、膨大な世界知識を吸収し、概念の曖昧さに対処することも可能にします。つまり、物事が古き良き記号的AIの理論に正確には当てはまらないことがほとんどだという事実にも対処できるんです。

私たちは皆MCPサーバーで遊んでいますし、これらのシステムにツールを接続できることも知っています。では、電卓を呼び出せばいいじゃないかという話ですが、アンドリューは、ツール使用だけでは十分ではないと主張しています。その下にある実際のアーキテクチャについて考える必要があり、それでもやはり重要なのだと。

内部化することは、はるかに安定したものになる可能性があると思います。ニューラルネットワークとツールの関係は、やや複雑です。多くのことができると思います。興味深い探索もできますが、いくつかの欠点があります。一つは、モデルを何度も呼び出さなければならない可能性があることです。答えは得られるかもしれませんが、期待していた答えではない可能性があるからです。

そうなると、考え直して戻らなければなりません。例えば、何か複雑な推論問題があって、その過程で一連の小さな足し算をしなければならない状況を想像してください。これとこれ、それからああ、これはいくつあるんだっけ、という具合にです。

そしてこれはいくつ、といった具合です。ツールを呼び出し、戻り、またツールを呼び出し、戻るということを繰り返すのは、かなり複雑になる可能性があります。モデル自体が特定の種類の基本的な計算や推論を内部的に実行できるようになれば、大きな効率性の向上があるように思えます。

幾何学的深層学習を超えて

幾何学的深層学習は、かなり興味深いエピソードでしたし、私自身の研究にとっても非常にエキサイティングな時期でした。チームと一緒に行ったことですね。私たちが一緒に行った最初のエピソードの中にすでに、幾何学的深層学習だけでは必ずしも十分ではないかもしれないという議論のヒントがありました。

幾何学的深層学習で何を意味するかについて、私たちのレンズを広げる必要があるかもしれません。そしてこれは、私たちがすでに非常に積極的に考えていることです。共著者の一人であるタコ・コーエンは、実際にこのことについてもっと深く考えていたと思います。私は、幾何学的深層学習の基礎となる群だけでは、計算への整合という私の個人的な動機に合わせるには十分ではないかもしれないということをほのめかしました。

ご存じない方のために説明すると、幾何学的深層学習は基本的に、対称変換に対して同変であるような方法でニューラルネットワークを構築するという概念に基づいています。簡単に言えば、何らかの方法で入力を変換した場合、その変換が無関係だと思われるものであれば、ニューラルネットワークで予測可能な出力が得られるべきだということです。

標準的な例は、画像の平行移動です。猫の写真があって、それを一定のピクセル数だけシフトすることにしたとしても、それは依然として猫の写真です。それは変わっていません。その猫を見る方法を変えただけです。ですから、そのようなシフトを適用しても、これは確かに猫だという同じ出力が得られるように、平行移動同変と呼ばれるモデルを構築したいわけです。

同様に、私が個人的に非常に情熱を持っているグラフ機械学習という分野は、分子のようなグラフ構造データから有用な表現を抽出することを扱っています。グラフには、モデルに見せる方法が多数あるという固有の性質があります。通常、ノード×ノードのような隣接行列を使って提示する必要がありますが、これらのノードを見せる順序を入れ替えることにしたらどうなるでしょうか。行列の行と列をそれに応じて入れ替えることになります。これは依然として同じグラフです。そのグラフに対して全く同じ出力を得たいはずです。

ですから、ノードを入れ替えても、入れ替えられたグラフに対して予測可能な出力、基本的には入れ替えまでは同じ出力が得られることを保証する、置換同変という概念をモデルに組み込むことができます。

これは非常に重要な性質です。なぜなら、そのようなシステムを満足のいく動作まで適合させるために必要なデータ量を、ほぼ指数関数的に削減するからです。トランスフォーマーの中心が置換同変モデルであることは驚くべきことではありません。トークンの埋め込み、位置埋め込みをトークンに入れれば、好きなだけ入れ替えることができます。

全く同じ応答が得られます。トークンの単純なMLPでそのような対称性を学習したいとしたら、現在これらのモデルを訓練するために使っている何兆ものデータよりも指数関数的に多くのデータが必要になります。おそらく見つけることができないデータです。私たちは幾何学的深層学習を群対称性の観点から見ていました。これは空間的な規則性や空間的対称性を記述する非常に素晴らしい方法ですが、例えばアルゴリズムに見られるような一般的な計算の不変性について語るには、必ずしも最良の方法ではありません。つまり、特定の前提条件を満たす入力があり、この関数を通してプッシュしたら、特定の事後条件を満たすべきだということについて何か言いたいわけです。これは、群論の言語を使って非常に簡単に表現できるような種類のものではありません。しかし、カテゴリー理論の言語を使えば、もっとうまく表現できるかもしれません。

高レベルの事前知識の重要性

非常に高レベルの事前知識はおそらく良いアイデアで、おそらく必要でさえあると思います。私の博士課程では、対称性に関する知識をニューラルネットワークに組み込むことに多く取り組みました。多くの問題において、対称性に関する知識は、まず第一に、少ない労力で多くの成果を得られるものだと思います。

物理学からすでに知られていますし、現在では機械学習の経験的な結果からも、これらをニューラルネットワークに組み込むこと、あるいは対称性に基づいて物理理論に制約を課すことが、多くの情報を与えてくれることが分かっています。あるいは、仮説空間を本当に制限してくれます。同時に、あなたの問題が実際にこの対称性を持っているのであれば、モデルにバイアスをかけることにはなりません。

ですから、私たちが探すべきはこの種のものだと思います。この種の非常に高レベルで抽象的な事前知識です。先ほど挙げた例に戻りますが、電気のスイッチが電気をつけるという事実をエンコードしようとするのではなく、それはインターネット上の大規模なテキストを読むことから、あるいはおそらく対話的環境での試行錯誤学習から、データから把握できます。3次元空間のような空間があり、2次元画像はそれを投影したものだという事実は、おそらく有用な事前知識です。

カテゴリー理論とは何か

カテゴリー理論は非常に見る人次第です。私にとって、カテゴリー理論、カテゴリーというのは、私の出身である純粋数学からすれば非常にありふれたものです。カテゴリー理論とは、それ自体のためにカテゴリーを研究することを意味しますが、誰もがカテゴリーを使います。

問題は、それらが正確には何なのかということです。私は本当に代数学出身で、私の動機の多くは代数学の研究から来ています。カテゴリーについて考える一つの方法は、色付きの代数学です。典型的な代数学を想像できます。例えば、正方行列を掛け算しているとしましょう。

各正方行列を小さな磁石として考えることができ、それらをただくっつけていくだけで、どんどん大きな磁石になっていって、すべてが理にかなっています。しかし今度は、各側に色がついた特別な磁石があって、色が同じ場合にのみ接続できるとしたらどうでしょう。

奇妙に聞こえるかもしれませんが、それは非正方行列で起こることそのものです。二つの行列を掛け算するとき、数が一致しない限り、それらを掛け算することは許されないというルールに従わなければなりません。M×N行列があって、左からL×M行列で掛け算したい場合、Mが同じなのでそれはできますが、そうでなければできません。

一種の色の違反です。要点は、物事を合成できる、つまりくっつけることができる状況ですが、常にできるわけではないということです。それが基本的にカテゴリーが対処するように設計されているものです。そして、行列の例が示すように、それらはそれほど神秘的なものではありません。

例えばニューラルネットワークでよく行うように、多くの異なるサイズのベクトル空間について同時に話したい場合、異なるサイズの次元を持つハイブリッドな形状があるため、この部分的な合成可能性を考慮に入れたいものが必要になってしまいます。

カテゴリー理論による一般化

そこで説明した幾何学的深層学習の設計図は一般化できると思います。カテゴリー理論は、私にとって多くのことが腑に落ちるきっかけとなりました。あるいは、期待を込めて言えば、この幾何学的深層学習と同変性の方法論を、対称性だけでなく、はるかに一般的な種類の構造と構造保存写像について推論できるように一般化できるだろうということです。モデルにこれらの幾何学的事前知識を与え、これらの高解像度の事前知識が私たちがいる物理世界を記述すると考える点で、このカテゴリー的思考が、それらすべてを何らかの新しい方法でまとめることを可能にするでしょうか。

まあ、それらがすべて同じものの実例であることは確かに分かります。それらのことを一度学べば、あらゆるところに現れ始めます。

カテゴリー理論的な考え方の非常に素晴らしい点は、極めて体系的であり、正しい方向へと導いてくれる傾向があることです。なぜなら、すでに挙げた例が示すように、同変性という概念は、群と群表現などについて考えている人が思いつき、数学的推論にとって非常に有用な概念だと気付くものだからです。

しかし、すでにカテゴリー理論を知っていて、ここで関連するカテゴリーを定義するだけなら、自動的に出てきます。例えば、群をカテゴリーとして定義し、定義に従うだけです。私のカテゴリーから集合のカテゴリーへの関手とは何かを見ると、それが群表現の定義を与えます。そして、そのような関手間の自然変換とは何かを見ると、定義を書き出すと、ああ、この場合は同変写像だということが分かります。そして、それは、数学領域の専門家が独立して思いついたであろう意味のある定義を生み出す傾向があります。非常に頻繁にそうなります。ですから、怠け者のため、あるいは創造性のない人のためのものです。賢くある必要はありません。

ルールに従って非常に体系的であるだけでよく、これらの非常に自然な定義が出てきて、ちょうどうまく機能する数学の一種が得られます。すべてがレゴブロックのようにぴったりと合うんです。そうですね。それによって、良い性質を持つこれらの精巧な数学的構造を構築できるんです。

深層学習の統一的枠組みを求めて

心に留めておく価値のある歴史的な類推があります。周期表以前、陽子と電子を理解する前、錬金術師たちは実際の進歩を遂げましたが、原理的な基盤がありませんでした。今日の深層学習は似た位置にあるかもしれません。私たちは強力な経験的結果を持っていますが、新しいアーキテクチャを偶然見つけるのではなく、導出できるようにしてくれる基礎理論が欠けています。

カテゴリカル深層学習は、ニューラルネットワークのための周期表を見つける試みです。深層学習は、その顕著な成功にもかかわらず、アドホックな設計選択に満ちた分野です。ニューラルネットワークアーキテクチャには、まだ正式に正当化できないあらゆる種類のノブや調整があります。深層学習のための統一的枠組みはありません。

確率論的視点、神経科学的視点、そして単に勾配ベースの反復更新の視点を説明する統一的枠組みはありません。実際、将来、私たちは深層学習を非常に異なった形で見るかもしれません。そして私たちの主張は、カテゴリー理論が統一的な深層学習の枠組みになるだろうということです。

しかし、あなたはニューラルネットワークの補間関数空間がアルゴリズムを実世界の問題により近い形でモデル化でき、計算機科学者が古典的に提案したものよりも効率的で実用的な解決策を見つける可能性があると主張しているように思えます。私たちは高次元空間で作業していますが、それは必ずしも容易に解釈可能でも合成可能でもありません。なぜなら、例えば理論計算機科学で二つのアルゴリズムを合成したい場合、非常に抽象的な空間でそれらを扱っていることになり、一方の出力を他方の入力に結合することについて容易に推論できるのに対し、二つのニューラルネットワークの潜在空間については同じように簡単な主張ができないからです。

幾何学的深層学習は強力ですが、すべての変換が可逆であることを前提としています。計算が情報を破壊する場合はどうなるでしょうか。厳密に言えば、当時はそのようなことについて話すつもりはありませんでした。それは非常に進行中の作業であり、ちょうど可能性のあるアイデアの集まりとして私の頭の中に閉じ込められていただけで、遠隔的に実行方法を知っているようなものではありませんでした。しかし、当時私はアルゴリズム推論にも非常に情熱を持っていました。

今でもそうですし、古典的計算に整合できる機械学習モデルを構築することは、より良いデータセットを集めるだけでは簡単に埋められない欠点に対処するために、本当に本当に重要になると今でも信じています。根本的に、これらのものの一部は、訓練した分布の外側に容易に一般化できないように制限されている可能性が高いです。

そして特に推論問題においてはそうです。大規模言語モデルで行われたすべての大きな科学的進歩について考えると、例えば、今日まで、私が個人的に馴染みのあるもののほとんどは、大規模言語モデルとバックグラウンドのアルゴリズム的手続きを注意深く組み合わせた結果であり、それが実際にロバスト性の特性を与えることを保証していると私は主張します。

FunSearchやAlphaCode、AlphaGeometryのようなものを考えてください。これらのシステムはすべて、計算機科学、競技プログラミング、さらにはIMOの幾何学問題において新しい知識を発見しましたが、すべてのケースで、言語モデルを遺伝的アルゴリズムかクラスタリング機構か定理証明器に接続しており、それらはすべて非常に良い正しさの保証を持っています。そして、モデルをアルゴリズムを使って自己修正できるように十分な回数実行できれば、本当に素晴らしい解決策を得ることができます。幾何学的深層学習の問題は、私が言ったように、対称性について語るということです。置換や循環シフトは、一般的に非常に特定の厳密な振る舞いを持つものであり、通常、対称性について私たちが仮定することの一つは、それらが可逆であるということです。

つまり基本的に、ノードを入れ替えるときはいつでも、それらを元に戻すことができるということです。情報を失っていないんです。通常、画像でシフトを行うとき、実際にゼロで画像をパディングして、画像データが失われないようにし、そういったことを確実にします。ですから基本的に、それが依然として同じ入力であることを常に仮定しています。

情報を失っていません。さて、これが古典的なアルゴリズム計算への整合に本当に興味を持っている私にとってなぜ問題なのでしょうか。計算機科学者なら誰でも知っているように、あなたが書く多くのプログラムは、データの一部を削除したり破壊したりします。ですから、それはもはや対称性ではありません。反転できません。

おそらく一つの簡単な例は、理由もなくリストを取ってその要素の半分を削除するという単純な例以外に、経路探索があります。コンピュータサイエンスのカリキュラムの中で、ダイクストラやベルマン・フォードのようなアルゴリズムについて多く語ります。簡単に言えば、これらは有向重み付きグラフから始めて、そのグラフ内の最短経路長を予測するアルゴリズムです。

さて、ポイントは、全く同じ最短経路、場合によっては同じ最短経路長を持つことになる、異なる重みを持つ多数の異なるグラフが存在するということです。しかし、それらのグラフは異なります。ダイクストラのアルゴリズムやベルマン・フォードのアルゴリズムの変換を適用すると、そのアルゴリズムの最終出力に含まれるグラフに関する情報を失うことになります。

なぜなら、多くの異なるグラフが全く同じ出力に圧縮されるからです。ですから、これは対称性を使って記述できる操作ではありません。そしてこの旅は、徐々に、これについてどう形式化できるか、どうやってこれに何らかの理論を置けるかを理解するのに時間がかかり、さらに今でも、これを使って実用的なモデルをどう構築できるかという段階にあります。幸運なことに、ディープマインドの同僚であるアンドリューと話し始めることができました。彼はカテゴリー理論のバックグラウンドを持っていて、自身も過去にこれらの問題のいくつかについて考えてきました。ですから、彼との協力は素晴らしいマッチでした。なぜなら、一緒に、長い道のりではありましたが、群が与えてくれる制約を徐々に緩和することができたからです。まず可逆性の部分を取り除くことを検討し、それがモノイドにつながりました。そして、モノイドを使ったモデルにおける興味深い理論と非同期不変性を導き出しました。そして今、群の二番目の制約、つまりすべての計算が他のすべての計算と合成されなければならないという要件を取り除くことも検討しています。ご存知の通り、計算機科学では常にそれができるわけではありません。最初の関数の出力を二番目の関数の入力型に一致させなければなりません。そうでなければ、それらは合成できません。これが今、カテゴリーにつながっているわけです。そして、それが私たちを今、カテゴリカル深層学習に導いたんです。

意図性、計画、推論について

意図性や計画、システム2、推論といったものについてですが、あなたはそれらに何か標準的なものがあるという前提を置いているように思います。

ええ、その通りです。つまり、ある程度はそうなんです。なぜなら、これらのアルゴリズムの多くについて、十分な時間を与え、適切な文脈に置けば、最適な解決策に到達するという証明さえあるからです。実際、私はそれがシナジーになるべきだと思います。なぜなら、あなたが言ったように、現代の大規模深層学習システムでは、実際に本当に複雑でノイズの多い現実世界のシナリオを、それらのアルゴリズムが適用可能になるかもしれない空間にマッピングできる可能性があるからです。今、おそらく私たちがある部分で主張しようとしているのは、モデルにその翻訳とアルゴリズムの堅牢な呼び出しの両方を求めることは、おそらく少し要求しすぎだということです。なぜなら、とりわけ、あなたが言った固定計算予算は、入力が大きくなるにつれて、すでに失敗のレシピの一つだからです。例えば掛け算は、私が述べたように、まだ超効率的なアルゴリズムがない問題です。最もよく知られているものはn log nで、それは複雑な数論的構成のようなものに依存しています。

ほとんどの人は、掛け算のためのn二乗の二次アルゴリズムを知っているだけです。ですから、二つの数を確実に掛け算するために必要なリソースの量は、それらの二つの数のサイズに基づいて、時には超線形的に増加します。現在、私たちのシステムは、モデルにより多くの思考時間を与える思考の連鎖のようなものを追加すれば、暗黙的にそれに対処できます。

しかし根本的に、それらすべては、特定のクラスの問題に対しては役立つかもしれませんが、計算問題の空間全体がどれほど複雑であるかという性質のために、他のどこかで失敗するパッチです。ですから基本的に、私は、ニューラルネットワークが世界の理解、世界で起こっていることを抽象空間への翻訳を扱う未来を信じています。それは単に高次元埋め込みかもしれませんが、それもありえます。そして、事前知識を通じて、あるいは非常に慎重な損失を通じて、あるいはシステムをツールと組み合わせることを通じて、システムに組み込まれた何らかのコンポーネントがあり、それがすでに本当に本当に有用であることが証明されています。そのコンポーネントが、それについて推論できる方法で、その計算を実際に実行するんです。そして、私が推論という言葉で意味するのは、すべての単一入力に対して100%の精度ではないことを強調しておくべきです。

人間は推論でき、人間は与えられたすべての単一入力に対して100%正確ではないと思います。ご覧の通り、50桁の長さの二つの数を掛け算するように頼まれたら、私は確実に何らかの失敗をするでしょう。しかし要点は、システムがある種の計算を行うためにどれだけの努力が必要かを理解し、おそらく少なくとも、間違いを犯す可能性がどれくらいあるかの推定を私に与えてくれるか、あるいは、申し訳ありませんが、あなたが私に求めた問題は私の能力に対して計算的に大きすぎます、私はただ諦めて答えないことにしたいです、という何らかの概念を与えてくれることです。現在のシステムはそうするように訓練されていません。常にあなたに答えを与えようと訓練されています。

それは大きく異なります。ですから基本的に、私は間違いを犯すことは構いませんが、間違いがいつ起こるかもしれないか、そしてそれらがどれくらい大きくなるかについて、何らかの認識が本当に欲しいんです。アルゴリズムを適用すると、多くの場合それを持つことができます。正しさの保証や収束保証といったものを持つことができます。

構造主義数学とカテゴリー理論

しかし、おそらくあなたは、そもそもなぜこのような抽象的な数学を使う必要があるのかと考えているでしょう。まあ、この種の構造化された思考は、実際に何が重要かを見るのに役立つんです。

構造主義数学の概念を導入し、そして構造主義数学の最もよく知られた例であるカテゴリー理論について。解析的数学と総合的数学の区別から始めたいと思います。

これに対して通常挙げられる二つの例は、デカルトの幾何学とユークリッドの幾何学です。デカルトにとって、線は方程式の解の集合です。一方、ユークリッドにとって、線は正確に二点間に引き伸ばされたものです。ここでの本質的な区別は何でしょうか。解析的数学では、物は物でできています。常に、オーケー、すべてが構築される共通の基盤を持たなければならず、私のすべての補題、定理などは、最終的にすべてがそのより基本的な物質での計算に帰着するという問いがあります。一方、総合的数学では、線の内部が何であるかを知る必要はないようなものです。それは重要ではありません。要点は、線に対して、そして線同士の関係に対して、どのような原理で推論できるかだけを抽象化すればいいんです。

ポイントは、あなたの論理にアクセスできないすべてのものを取り除くということです。ですから、あなたが詳細と呼ぶかもしれないすべてのこのようなものを取り除きますが、それは詳細でさえありません。ノイズです。なぜなら、それはあなたが知ることができるものに対して何の内容も持っていないからです。ですから、それは完全に無関係です。

総合的数学はそれらすべてを取り除き、どのようにしてより多くの知識を生み出すことができるかだけに焦点を当てます。そして、少なくとも私が構造主義数学で意味するところを説明すると、私は構造の総合的数学が欲しいんです。構造とは何でしょうか。機械学習の文脈では、多くの概念があります。誰もが構造と言います。最もよく知られ、最もよく研究されている構造の例は群作用です。幾何学的深層学習はすべて群作用についてです。しかしそれは一つの針に過ぎません。金庫の中の一つの小さな点です。それはただ一つのことです。理論計算機科学に由来する他の多くのものがあります。物がリストであるという概念、あるいは物が木であるという概念、これらすべての他のさまざまな代数的構造です。ですから、これらすべてのさまざまな種類の構造をエレガントに記述できる単一の言語が欲しいんです。

これが正確に私たちがカテゴリー理論に訴える理由です。

最も単純な用語で言うと、二つのカテゴリーで何を意味しているんですか。

そうですね。ですから、カテゴリーを物の集まりとそれらの間の関係として語る場合、これらの関係は射と呼ばれるものとしてエンコードされます。これらは一般化された関数のようなものです。

これらはただの矢印です。私たちはそれらを矢印として描きます。

重み共有の形式理論

これ以上進む前に、重み共有が実際に何を意味するかを基礎づけましょう。RNNが単語ごとに文を処理することを想像してください。そして各時間ステップで、同じニューラルネットワークセル、同じ重みを使って各単語を処理します。それが重み共有です。計算の複数の部分に同一のパラメータを強制的に共有させることです。

従来の機械学習では、まさにこれを行います。コーディングしますが、これがいつ有効なのか、どのような構造を保存するのかを説明する形式的な理論はありません。抽象的に聞こえることは承知していますが、重み共有がいつ正しいかを証明でき、重み共有が実際に私たちが気にする構造を保存することが保証される新しいアーキテクチャを導出できるということを意味しているだけです。

しかし、しばしば二つの対象に焦点を当て、それらの間のすべての写像、すべてのこれらの射を見ると。これらはカテゴリーの中の集合です。射の集合があります。しかし今、カテゴリー理論の精神を取り入れて、単に物の集合を持つのではなく、それらの間の何らかの方法でその集合を関連付けようとすると。二つの対象の間のこの射の集合を見ます。

今、これらの射が関連付けられる方法、それらが満たす必要がある性質の概念を追加するか、記述し始めると、それもある種の合成ですが、二つのカテゴリーの概念に到達し始めます。それは対象、射、しかし二つの射はそれらを関連付ける方法です。

カテゴリー理論は、対象間のこれらの関係について射として語ります。しかし、射間の関係についてはどうでしょうか。

そうです。ですから、私たちが二射または二つのセルと呼ぶものがこれらです。そしてこれらは、ニューラルネットワークのいくつかの側面をモデル化するために使うものであり、私たちはそれらが重要だと考えています。

それらを単にカテゴリーとして考えるべきではありません。それらは単なる写像ではありません。しかし確かにこのように考えることはできますが、それはそれらについて持ちたい興味深いことの多くをエンコードしません。そして、これが高次カテゴリーのアイデアだと思います。純粋にカテゴリーで何かをモデル化し始めると、ああ、ずっと私はこの他の重要なことを忘れていたと気づくわけです。ですから、理論を一貫したものにしようとしながら、理論にもっと多くのものを入れ始めます。私たちがこれらの階層射をエンコードする特定の方法、あるいはそれらを何のために使うか、最も重要なことは重み共有だと思います。ですから、滑らかな空間、ベクトル空間に特に結びついていない方法で重み共有を行う包括的な理論が得られます。それは多様体に対しても機能します。

それはまた、私たちが今使っているもので、私と私の共同研究者が博士課程で使っているもので、ゲーム理論に接続するために使ったものです。そこでは、いくつかの戦略を持つ経済主体について語り、二つの主体が同じ戦略で動作することを望むなら、そこで重み共有を行います。ですから、これを指定できるすべての異なる分野があり、二つのセルの抽象化のレベルは、あなたが研究している種類のものについての特定性を組み込むことなく、その本質に本当に到達するものです。

おそらく三次に、四次に進むこともできるでしょう。自己注意トランスフォーマーでさえ、これらの二つのタプルをモデル化します。二次の関係のようなものですが、三次、四次などを持つこともできます。二射で十分ですか、それともそれより深く行くべきですか。まあ、誰に尋ねるかによって、非常に意見の分かれる答えが返ってきます。

しかし一般的に、私がカテゴリー理論を学び始めたとき、まあ、二つのカテゴリーには決して行かないだろうと思っていました。それは複雑に思えたからです。今では、二つのカテゴリーより高くは決して行かないと言っています。それは複雑すぎるように思えるからです。しかし人々は三つのカテゴリー、無限カテゴリーを行います。そして、これらの関係をどんどん高く構築していくことができ、ある意味で非常に異なる獣になるこの本当に包括的な理論を得ることができます。

私たちの脳がこのように機能するという考え方の学派があります。ですから、私たちはこれらの記号やこれらのカテゴリーなどを使って考え、そして宇宙は特定の方法であり、私たちはその種のインターフェースで宇宙を理解します。ですから、それはほとんど、これに対するドライバーは、ここにインターフェースがあり、ここに私たちの考え方があり、ここに宇宙の働き方があります。

そのようにコンピュータをプログラムしましょう、というようなものです。

それは大きな質問ですね。これらのもので起こることは、より多くのレベルを追加し始めると、より多いことは異なるということです。そしてそれが高次カテゴリーで見られ始めることです。異なる種類の関係と射を追加すると、おそらく創発的効果として最も適切に記述できるこれらのものが見られ始めます。なぜなら、二つのものがあり、それらの振る舞いを複合体として研究したい場合、それらの振る舞いを個々に研究して合同の振る舞いを見るか、システムを合成して複合体の振る舞いを見ることができるからです。私たちがしばしば見出すのは、これらは同じではないということです。多くの合成的なケースでは、これらは同型ですが、しばしば一方向に行く写像があっても他方向にはありません。ですから、これがもはや等式ではないので、この高次のセルを追跡し始めなければなりません。

しかし今、これ自体が、このたくさんのレベルとレベルの創発的効果を生み出す別のシステムの一部である可能性があります。ですから、高次カテゴリー理論の問題の一つは、私たちの心の複雑さでこれを行うことがとても難しいということです。ですから、これらのものをエンコードする最良の基盤が何であるかは確かに未解決の問いであり、人々はプログラミング言語理論において、データ構造やアルゴリズムだけでなく、これらのアルゴリズムがホストされる型理論を何らかのカテゴリー的な方法でエンコードすることに多くの仕事をしてきました。強い創発を信じる人々は、還元主義はないと考えます。しかし、基本的な弱い創発でさえ、異なるスケールでの理論間の分析的な近道は計算的に扱いにくいです。それらの間を行き来することは非常に困難です。

しかし、全体を捉える何らかの理論的枠組みを持ちたいですよね。創発的な組織化と、その下で何が起こっているかの両方を捉えるものです。ですから、これがカテゴリー理論の目標の一つだと言えます。これらの非常に単純な原理を生み出す何らかの基本的な抽象化を見つけることです。

しばしば、あるシステムや現象を見ると、それは非常に複雑です。しかし、運が良ければ、良い基礎を設定すれば、常に、ああ待って、ずっと非常に単純だったんだ、となります。私は間違った見方をしていた。ですから、これがどこに行く可能性があるか分かりません。しかし、私たちは確実に、物事をできるだけ合成的にしようと努力しています。

そして、豊富な実験的証拠があり、良い理論が欠けているこれらの多くの分野において、カテゴリー理論は非常に良い見晴らしの良い地点を持っており、立ち止まって、ここでの良い見晴らしの良い地点は何かを見るという実用的な利益がたくさんあります。

二射は重み共有について考えることを可能にしますか。

絶対にです。ですから、パラメトリックな射をAからBへのパラメータ付きの写像として考えるなら、私たちはしばしばパラメータ空間を変更したいと思います。しばしば重み共有を行いたいと思いますが、実際にはより小さな重み空間から始めて重みをコピーすることを意味します。二つのパラメトリック関数のカテゴリーにおける二射は再パラメータ化です。ですから、それは何らかの形で一貫性のある、満たされなければならない図式があるが、本質的にはある形の重み共有を前合成することによって一方が得られることをエンコードする、二つのパラメトリック射の間の写像です。しかしそれは単にコピーである必要はありません。それが私たちが見出していることです。重みの間の任意の関係である可能性があります。ですから、これらの二つのセルと二射が私たちに可能にすることの一つは、重みの間の関係としてエンコードされたこの代数的構造を見ることです。そしてそれは再び、カテゴリーが何についてのものかに戻ります。それは対象間の関係を見つけることについてです。ですから、絶対にそうです。

プログラミングへの鍵となる接続

ここでプログラミングへの鍵となる接続があります。関数型言語では、リストのようなデータ型を再帰的に定義します。リストは空であるか、要素とそれに続く別のリストです。カテゴリー的には、これは自己関手の代数です。代数の構造写像は、データ型のすべてのコンストラクタをまとめてパッケージ化します。

そして、この代数からの準同型は、プログラマーが畳み込みと呼ぶものそのものです。何らかの操作を再帰的に適用することによってリストを消費する関数です。ですから、この枠組みは再帰的計算の構造そのものを記述しているんです。コードを書くとき、構文エラーに遭遇します。意味論のエラーにはそれほど遭遇しません。ですから、構文は、普通のアルゴリズムを書いているときでも、ネットワークアーキテクチャなどを書いているときでも、実際に入力しているものの中に本当に根ざしています。意味論は、プログラムがどのように振る舞うことができるかについてはるかに多くのことです。その一つの例は、リスト型のようなものがあるということです。

ですから、リストは型コンストラクタによって定義されます。型tが与えられると、別の型リストofを持ちます。では、リストの意味論は何でしょうか。まあ、リストの意味論は本当に畳み込み可能な型のようなものです。畳み込み可能な型です。ですから、加算を伴う数のようなものは、一種の畳み込み可能な型です。数のリストがあれば、リストを除去するためにそれらを加算するだけです。

そして今、これらの畳み込み可能な型は、数学者にとって非常に異なる名前を持っています。モノイドです。これはより一般的な種類の群です。しかしいずれにせよ、それがリストの意味論のようなものです。そして、構文について何か言う前に、私たちの論文は本当に主に意味論的な角度から物事を探求していると言わせてください。

なぜでしょうか。それは、二つの異なる構文が同じものを非常に簡単に記述できるからです。算術理論を持つことができ、加算もあり、否定もあるかもしれませんし、代わりに減算を持つこともできます。そして、これら二つの異なる言語で同じものを記述できますが、言語は本当に異なります。

同じ意味論を与えますが、構文は異なります。ですから、数学的分析を行うとき、定理を証明するとき、意味論的な観点から作業することがしばしば本当に有益です。

しかし、この作業を同変性などに関する他の作業と比較したい場合、その作業はしばしば構文的な角度から行われていることを本当に強調する価値があります。

カテゴリカル深層学習の中心的主張

ですから、カテゴリカル深層学習の中心的主張を述べるために一時停止しましょう。提案は基本的に、ニューラルネットワーク層は、同じ自己関手の二つの代数間の準同型として見るべきだというものです。自己関手は、ネットワークが尊重する必要がある計算の種類を記述します。群作用であれ、リストの畳み込みであれ、オートマトンの遷移であれ。

そして、代数は、その計算が特定のデータをどのように変換するかを記述します。準同型は、計算構造を保存しながら、これら二つのデータ表現の間をマッピングする関数です。この準同型が群作用であるとき、幾何学的深層学習を回復します。しかし、枠組み自体ははるかに一般的です。

では、例えば群の作用の構文は何でしょうか。それは本当に、一種のものを持っているだけだと考えると言うようなものです。そして各群元素はそのものを取り、それを自分自身に送り返すようなものです。ですから、単一の型を持ち、各群作用がその型に何かをします。平面内にいくつかの点があり、私の群はそれらの点を動かす回転と反射かもしれませんが、私はまだ平面内にいます。しかし、この一つのソートされた構文は、計算機科学の基本的な型コンストラクタさえも捉えるには十分ではないことが分かります。

例えば、リストについては、単一のソートを使うだけではリストの構文を扱うことができません。多ソートの構文が必要です。ですから、これを行う方法は、ゼロタプル、ワンタプル、ツータプルなどを持つと言うようなものです。そして、kタプルが与えられたとき、私のkタプルの要素を取り、それらをいくつかのリストlsにすることによって、他の種類のタプル、lタプルを作ることができるかもしれません。ですから、それは構文であり、群元素が構文であったのと同じ方法であり、もし私がタプルから一連のリストに物をパッキングする方法を持っているなら、それらのリストを他のリストのタプルにパッキングできるので、合成性を持っています。しかし、これが第一に多ソートであり、また群のケースとは異なることは明らかです。なぜなら、これらすべては高度に非可逆だからです。物をリストにどんどんパッキングしていくことによって、最終的にリストを元に戻すことはできません。より多くのリストを得るだけです。

しかし、私たちは基本的に構文のモデルを構築します。そして、群の場合、集合におけるモデルは、群によって作用される集合を意味します。一方、例えばベクトル空間におけるモデルは、群のベクトル表現を意味します。一方、リストの構文の場合、私が以前畳み込み可能な型またはモノイドと呼んでいたものを得るだけです。

これらの構文操作を期待される方法で実行できるものです。元の対象だけに関心がある場合でも、対象の宇宙を少し拡大すれば、数学的推論がよりうまく機能するだけのものがあります。ですから、これは数学者が何度も学んだ教訓であり、多くの人が少なくとも最初のインスタンスでは意味論的な側面で作業することを好む理由の一種です。

数学において非常に非常に基本的なもので、私たちが皆小学校で学んだもので、GNNの設計において見過ごされてきたものがあることが分かります。それは繰り上がりの概念です。では、繰り上がりとは正確には何でしょうか。まあ、算術をモジュロ10で行うことができるデバイス、数字の輪を実装できるとします。

ですから、0から9までです。そして今度は、算術をモジュロ100で行うことができる一種の複合輪を構築したいとします。何をする必要があるでしょうか。輪が9から0に行くとき、次の輪を1つ回す小さなメカニズムが必要です。これは非常に単純ですが、GNNが過去に考えられてきた方法と極めて相容れません。なぜなら、過去には一般的に状態全体を送りますが、状態には情報がなく、情報は状態の変化にのみあるからです。しかし、それよりもさらに悪いです。状態の変化を送ったとしても、それは十分な情報ではありません。なぜなら、9から0に行ったのは、1を加えたからなのか、11を加えたからなのか、9を引いたからなのか、分からないからです。この種のことを勾配降下法の存在下で機能させることはかなり微妙であることが分かります。

ですから、それは何らかの形で、より複雑な計算操作をより単純なものから組み立てる方法の非常に基本的な側面です。つまり、CPUを記述する場合に最初に行うことの一つは、加算器を記述しなければなりません。これはすでに私たちがGNN用語で行うのに苦労していることです。この振る舞いは、離散数学を行うときには簡単に得られますが、連続数学を行うときには非常に複雑になることが分かります。

この数字の輪の例を簡単に挙げることができます。誰もが加算の仕方を知っているので、皆理解します。しかし、すべてが連続的であるような方法でそれを起こらせることは、本当に興味深いことが分かります。この現象の最も単純な例は、三次元多様体を扱うまで現れません。

ですから、四次元空間の中の物事について考える必要があるでしょう。そして、私たちが知っている最も単純な例は、いわゆるホップ振動です。これは、三次元球体を分解できる状況です。ですから、それは四次元の球体です。それを二次元球体に射影することができ、すべての逆像が一次元球体または円です。

そして、三次元球体は、一次元と二次元の球体の積とは非常に異なります。ちょうどZモジュロ100が、Zモジュロ10とZモジュロ10の積とは非常に異なるのと同じです。ですから、これは私が個人的に今非常に興奮していることで、この非同期性の作業から出てくることです。繰り上がりの現象を実際に作り出し、アルゴリズム推論のこの側面を適切にモデル化し、ニューラルネットワークで実際のCPUを構築し始める方法として、この種の幾何学的な微妙さを利用する方法はあるでしょうか。

彼らの主張は、結局のところ非常に単純です。深層学習には二つの言語、制約と実装があり、それらをきれいにリンクする単一の枠組みが欠けています。カテゴリカル深層学習は、パラメトリック写像の二つのカテゴリーにおける普遍代数を使って、その橋を生み出します。

幾何学的深層学習を特殊なケースとして回復しながら、再帰、重み共有、非可逆計算のようなものを自然に表現します。形式的な話が欲しければ、彼らの論文を読んでください。リンクは説明欄にあります。特に、par、重み共有、幾何学的深層学習の回復に関するセクションです。クールですね。ご視聴ありがとうございました。

コメント

タイトルとURLをコピーしました