LLM理解に必須の数学はこれだ!
引用元:https://news.ycombinator.com/item?id=45110311
物理学の修士で学んだ数学(ベクトル、線形代数、エントロピーなど)がプログラミングではあまり役立たなかったけど、LLMの登場で一変!バックプロパゲーションやエントロピー最小化、行列乗算、微分可能といった部分で物理学の知識がめちゃくちゃ使えるようになった!昔の知識をまた使えて楽しいね!
この156ページの論文「Geometric Deep Learning: Grids, Groups, Graphs, Geodesics, and Gauges」をチェックしてみて!https://arxiv.org/abs/2104.13478
CNNs、RNNs、GNNs、TransformersといったNNsの数学フレームワークを提供し、物理知識をNNsに取り入れる方法も教えてくれるよ。これを読んだら、大学時代のEE数学を復習して、新しい微分幾何学も学べたんだ。
高度な数学の教育はあまりないんだけど、AIを理解するために必要な数学を学びたいんだ。前に紹介された論文にいきなり挑戦すべきかな?それとも、先に必要な数学の基礎を学んだ方がいいかな?アドバイスが欲しい!論文を紹介してくれてありがとう!
Khan Academyの線形代数コース(https://www.khanacademy.org/math/linear-algebra)から始めてみてはどうかな?必要な前提知識も学べるよ。昔の知識を復習したいなら、math-is-fun(https://www.mathsisfun.com/)もすごく良いよ。簡潔な説明があって、短時間でさっと復習できるんだ。
論文を共有してくれてありがとう!でも、リンクが壊れてるみたいだから、末尾のコロン(:)を削除した方がいいかもね。
以前の物理学の知識は、画像や動画、テキストを生成するDiffusionモデルやフローベースモデルを調べるときに、もっと役立つはずだよ。
画像生成速度のブレークスルーは、統計力学の物理論文から得られた、より良い微分方程式をDiffusionに応用したことから生まれたんだよ!この動画も見てみて!https://youtu.be/iv-5mZ_9CPY
僕にとって、一般相対性理論の基本的な部分が、cotangent空間とtangent空間の違いを理解するのに役立ったんだ。Riemannian manifolds上での最適化は、非自明なmetricを使った、もっと面白いtensor calculusを応用する機会になるかもしれないね。
俺も制御理論で修士取ったけど、LLM理解に線形代数や微分方程式がすごく役立つって同じ経験したよ。
なんで今までコンピューターグラフィックスやらなかったの?あれ全部線形代数だし、実際の物理も関係してるのにさ。
曲がった空間での微積分についてだけど、これ紹介するよ: https://arxiv.org/abs/2505.18230
(これは俺の宣伝だけど)これに時間をどう組み込むか知ってたら、興味あるね。
物理の数学って面白いよな、俺たちはその直感を学ぶ必要なくて、ただの手段だったんだ。大学を数学的に盲目なまま過ごすのが通過儀礼だったって感じ。
TensorflowやJaxみたいな最新の数値計算フレームワークは、自動微分で導関数を計算してくれるんだぜ。
俺の場合、Karpathyの動画シリーズを「ただ見る」んじゃなくて、「取り組みながら」やったことで、LLMの仕組みをものすごく理解できたし、もっと高度な資料を読む自信もついたよ。
正直、彼の動画で得た知識だけでもう十分。CPUの仕組みをざっくり理解して、興味ない最適化を無視するみたいな感じ。Andrej、動画にかけた時間と努力に感謝するよ!
わかる!彼がStanfordで教えてたcs231nの授業も、俺にとってすごく良い基礎になったんだ。
「動画に取り組む」って、具体的にどういう意味か教えてくれる?このプレイリスト、数週間前からToDoリストに入ってて興味あるんだ。
アンドレイ・カルパシーの“Zero to Hero”プレイリストについて話してたんだよ。
これね: https://youtube.com/playlist?list=PLAqhIrjkxbuWI23v9cThsA9Gv…
作者が言ってる『Build a Large Language Model (from Scratch)』って本、誰か読んだ?
カルパシーの動画[1]見てから、もっと深く学ぶための良い資料を探してたんだよね。
本[0]: https://www.manning.com/books/build-a-large-language-model-f…
動画[1]: https://www.youtube.com/watch?v=7xTGNNLPyMI
うん、あの本はマジで良いよ。作者が「embedding vectors」って正確な言葉を使ってたのも嬉しかったな。「vector embeddings」って言う人が多い中でね。
俺のこだわりについて、もっと詳しく知りたいならここを見てね: https://tanelpoder.com/posts/embedding-vectors-vs-vector-emb…
これが本で使われてるコードだよ: https://github.com/rasbt/LLMs-from-scratch
良い本だと思ったよ。詳細に踏み込んでて、ステップバイステップで分かりやすい例も載ってた。
基本的なアーキテクチャでトレーニングもシンプルだけど、もっと複雑なアーキテクチャを理解するための基礎ができたよ。
いいよ。今ちょうど読んでるところ。
動画じゃない、活字版はないかな?
動画を見るよりも、自分のペースで読んだり理解する方が好きなんだよね。
親コメントの最初のリンクを見てみて。
あれ、本へのリンクだよ。
LLMの仕組みについて、ハイレベルな基礎理解を得たいなら、[1]の動画は見る価値ある?
うん、すごくよくできてるよ。
記事がめっちゃ良いね。
これはLLM(Large Language Models)の話じゃないよ。単語ベクトルやトークン埋め込みの数学を説明してるだけ。多くの人がLLMを次単語予測だと思ってるけど、それは2020年以前の話だよ。1.8兆以上のパラメータを持つTransformerを無視してるね。埋め込みはTransformerの入力にすぎず、その中の trillions のパラメータで何が起こってるかは正確にはわかってないんだ。
いや、LLMはやっぱりそういうことをしてるんだよ。信じられないくらいの精度かもしれないけど、結局は次トークンを予測する統計的なプロセスだよ。
必ずしもそうとは限らないよ。LLMは文字やトークン、単語をどんな順番でも生成できるし、拡散モデルみたいに一気に全部書くこともできる。次トークン生成はGPTのデザイン選択で、実用的な理由からだよ。LLMは単に単語を統計的に予測してるんじゃなくて、世界をモデル化し、概念や関係を理解し、考えて計画し、ある程度の推論もできる。古いアルゴリズムとは違って、単語の頻度関係だけじゃなく、これら全てを学習してるんだ。Trillions のパラメータはそれ以上のことをしてるよ。
もっとコメントを表示(1)
でも、LLMを理解し始めるにはこの記事の数学が必要なのは確かだよ。完全に理解するにはこれだけじゃ足りないけどね。
どのレベルの理解を求めるか、誰に向けて話すかによるよ。一般人にはTransformerのアーキテクチャや仕組みは全然関係ない。彼らにはAIが入力と学習サンプルをマッチさせて、続きを吐き出すものだと説明するのが一番いいかも。AIを理解したい1%の人にはTransformerアーキテクチャが重要。Transformerの数学を知るのは、ゼロから実装する人にだけ関係する話だね。埋め込みは数学じゃなくて表現の話で、TransformerやANNの理解には重要だけど、別のトピックだよ。
いや、私たちは知ってるよ。次トークンを予測するために一連の数学関数が適用されてるんだ。魔法みたいに見えるけど、そうじゃない。まるで暗黒時代で Merlin が帽子からウサギを消したみたいに振る舞ってる人がいるけど、違うんだ。
LLMが“世界をモデル化する”って主張の根拠を教えてくれる?
“知る”の定義によるね。次トークンを予測してるのはわかるけど、なんでそういう出力になるのかは理解してる?LLMには詳しくないけど、小さいモデルでも解釈可能性は大きな課題だと思うんだ。
多くの人がTransformerの数学やデザインを理解する必要がないのは同意するけど、それはLLMの技術的な説明としては良くない。そんなメンタルモデルを持つ人は、全くモデルを持たずにLLMをブラックボックスとして使う人よりも、むしろ悪い状況になるだろうね。
え、じゃあLLMって高次元行列の掛け算じゃないってこと?
LLMは実世界の経験がないのに、どうやって世界をモデル化できるの?それは言語モデルであって世界モデルじゃないよ。現実世界と対話する機会もないし、ただ言葉を出して結果を予測するだけ。訓練データも他人の二次情報やフィクション、コードの寄せ集めで、実世界モデルを構築するには貧弱すぎる。窓のない部屋で他人の日記を読んで育つようなものだよ。AGIが現実世界で学習を始めれば別だけど、今のLLMは言葉の世界をモデル化してるに過ぎないと思うな。
これってかなり明白だと思うんだけど。言語が世界をモデル化してて、LLMは言語をモデル化してるんでしょ?AがBをモデル化して、BがCをモデル化してるなら、AもCをモデル化してることになるんじゃないの?
私はそうは思わないな。非技術者の妹がAIに気味悪がってたよ。LLMは結局、訓練データに基づいて次の単語を予測するだけ。文脈のマッチングがすごいから「確率的オウム」だけじゃ不十分だけど、概念的にはそれは間違ってないし、理解の基礎になる。非技術者には、AIを黒い箱や意識のあるコンピューターだと思うより、「確率的オウム」として理解する方がいいと思うな、特にそれでAIを怖がるならね。
僕たちは、自分で経験してないことでも常にメンタルモデルを構築してるよね。そういうモデルは直接経験した人ほど詳細じゃないけど、それでもすごく役立つんだ。実際、野球ボールを触ったことのない物理学生が、メジャーリーグのピッチャーよりもカーブボールについて正確で精密なメンタルモデルを持ってることだってあるんだよ。
言語が“世界をモデル化する”っていう主張のソースを教えてくれる?
与えられたモデルの重みと入力については、うん、間違いなく理解してるよ。でも、LLMが示す“ほぼ知能”と見える創発的特性とか、それがLLMや僕たちにとって何を意味するのかとかは、全然わかってないよね。
“必要だけど十分じゃない”ってことだね。
すべては“ただの”1と0だけど、そう言っても理解の役には立たないよね。
“LLMは統計的に単語を予測するだけじゃなく、世界をモデル化し、概念とその関係を理解し、考え、計画し、推論して次のトークンを生成する”っていう記事の主張は、ちょっと大げさじゃないかな。僕たちが知ってるのは、LLMが何百万もの人間のテキスト出力を賢く処理してトークンを生成するってことだよね。LLMがモデル化、理解、思考してるように見えるのは、実際にそうしてる人間の行動を平均してるからだと思うんだ。この振る舞いが、単に人間の出力を平均してるだけじゃないって思う根拠は何?
LLMは学習データしか反映しないんだよな。カーブボールの空気力学の理論モデルが物理教授を名投手にするわけじゃないし、自動運転車も説明書じゃなくて実世界やシミュレーターで学習すべきだろ?LLMは統計モデルであって、実世界の知識を持つものとは違うってことだよ。
クラウドベースの音声処理や監視インフラが常態化してることにゾッとするのは当然だろ。AI技術なんて分からなくても、詳細に無知な方が全体像をよく捉えられることだってあるんだよな。
LLMが人間の出力の平均を出してるって考えは違うな。機械学習は統計とは別分野で、「平均」じゃなくて「汎化」を学習するんだ。Deep Learningはエッジケースにも強いし、OpenAIとかがやってるRLHFみたいな後処理は、人間の出力の平均に頼らず計画や推論能力を向上させてるんだよ。
君は論点ずらしてるな。OPはLLMが世界をモデル化し理解できるって言ってて、君は「実世界経験がないとダメ」って反論してるけど、OPはLLMが万能エージェントだなんて言ってないぞ。人間だって数学みたいに直接経験できない領域をモデル化できるだろ。LLMが人間と同じじゃないってのは認めるけど、世界をモデル化してるって主張を否定するのは言い過ぎだよ。
単語のシーケンスを出力するプロセス(人間の脳も含む)なら、どれも同じじゃないか?次に来る単語を予測する統計的分布は、常に存在するだろ。
大胆な主張だけど、Stochastic parrotの概念やThe Platonic Representation Hypothesisが関連してるな。残念ながらChatGPTやClaudeみたいな大規模LLMはブラックボックスだから、研究者でも内部を詳しく探るのは難しいんだ。
https://en.wikipedia.org/wiki/Stochastic_parrot#Interpretabi…
https://phillipi.github.io/prh/
マシンは設計通りに動くし、全部ゲート上のアセンブリ命令だよな。レジスタの値は変わるけど命令は変わらない。それが僕らの心に、なんか変に役立つことをしてるんだ。
答えは簡単だよ。重みとバイアスっていうのは、訓練セットを近似する数学関数なんだ。これを作る方法は微積分で昔からよく知られてる。魔法なんてないんだよ。みんなが驚くのは、僕らの脳がパターン認識を得意としてて、言語を使うと知能と結びつけちゃうからだ。火星の顔が単なる地形と同じで、ここに知能なんてまったくないよ。
LLMの数学ってのは全く同じだよ。どんなに規模が大きくても、行列の掛け算と活性化関数で表せないニューラルネットワークの数学なんてないからね。
みんな数学をざっと見て、LLMはただの確率的なオウムで、次の単語を盲目的に予測してるだけ!って結論を出しがちだよね。でも、それは昔の話。今じゃLLMの中には世界の(不完全で、ごちゃごちゃした、変な)モデルが構築されてるんだ。
LLMを深く知りたいならベクトル埋め込みの数学はまだ役立つよ。ただ、アーキテクチャから導く結論が間違ってる人が多いってことだね。
LLMの興味深い数学的側面は、LLMがlogitを出力し、それに不確実性が伴うことだね。Agentのネットワークが話題だけど、これって不確実性を積み重ねてるだけ。連鎖したLLM呼び出し3回で完全に崩壊するのも見たよ。だからこそ『human in the loop』や、単一のOrchestratorによるワークフローが推奨されるんだ。これら全部、LLMの数学と繋がってるんだよね。
これはLLMの計算の技術的な詳細に過ぎないよ。最低レベルのMLライブラリを書いてる人(つまり、ほとんどみんなじゃない)以外には全く無意味。これでLLMがどう動くかなんて理解できないよ。
まるでICE carの仕組みを、ガソリンの化学的性質から説明し始めるようなものだね。確かにそれが基礎だけど、車の仕組みを説明し始めるところじゃないでしょ。
>ICE carの仕組みをガソリンの化学から説明するようなもの
でも、もしタイトルが『内燃機関の理解を始めるのに必要な化学』だったら、その化学の説明ってアリじゃない?
筆者がやったことも同じだよ。タイトルは『LLMの数学…』だったし、記事はLLMに関連する数学を説明することでタイトル通りになってる。君はタイトルと合わない別の記事を書いてほしかっただけみたいだね。
『LLMを理解し始めるのに必要な数学』だって?
いや、LLMを理解し始めるのに、あの数学は必要ないよ。
むしろ、そこから始めるのは有害だと俺は思うね。もし君の目標が『LLMを動かすために人類が絶対的な基礎から何を解明してきたかという壮大な旅に連れて行ってくれ』ってことじゃない限りはね。
もっとコメントを表示(2)
>最低レベルのMLライブラリを書いてる人以外には全く無意味。これでLLMがどう動くかなんて理解できない。
もしかしたら、まさにそういう人たちが特定の『数学』を必要とするLLM理解のターゲット層なのかもね。
HNで、基本的な数学を軽視せず、でもみんなをPyTorchモンキーにして、結局自分のモデルがクソな理由もわからなくなるような人を捜すなんて無理だよ。
LLMを動かしたいなら、ハードウェアで計算しなきゃいけない。だから、行列の掛け算が得意なハードウェアを選ぶのが重要なんだ。LLMをゼロから開発してなくてもね。この基本的な数学を知っていれば、近年GPUやTPUが買い占められてる理由もわかる。
でも、それ全部ちょっと論点がずれてるかもね。技術に対する好奇心と、そのメンタルモデルを研ぎ澄ますのは良いことだよ。LLMが線形代数の塊だと知らなければ、何ができるか、何ができないかについて歪んだ見方をするかもしれないからね。
好奇心は良いことだよ、何の問題もない。
俺が上で問題にしたのは、質問の核心じゃない低レベルな数学にみんなをそらそうとする試みだってこと。
それに、LLMを動かしたい人で、自分で行列の掛け算を書く人なんていない。MLやAIをやってる人は、そんなこと全然考えないよ。全部抽象化されてるからね(Nvidiaみたいなところで基盤ライブラリを書いてる少数の人たちを除いてはね)。
「低レベルの数学で議論を脱線させようとするな」って意見があるけど、ML/AI分野の参入障壁はそんなに低くないでしょ。経験豊富な人は線形代数を「低レベル」だとは思わないはずだよ。
「低レベル」って何?ML/AIへの参入障壁はめちゃ高いけど、それは実践的なモデル訓練や設計の理解が必要だから。数学力とは関係ないよ。数学ができたって良いAI研究者になれるわけじゃないし、「Attention Is All You Need」も数学よりコンセプトがすごいんだ。
「数学が上手かったら、もっと良いAI研究者になれたのに」なんて意見は初めて聞いたわ。反知性主義なのか無知なのか…。最近のAI/ML論文の質は落ちてるよね。適当にパラメータいじったPyTorchノートブックの焼き直しが多いし。
数学は重要だけど、すごくニッチな領域だよ。LLMは数学から生まれたわけじゃないし、数学者が作ったわけでもない。実際には、数学はライブラリとして使われるだけで、AIを開発してる人たちは新しい数学を発明しようとしてるわけじゃないんだから。
ライブラリを組み合わせるだけならそうだろうね。でも、ML研究に関わるなら、それらがどう動くのかは知っておくべきだよ。
実際のML研究者は内部構造を知ってるけど、直接コードを書いたり、複雑な数学表記を扱ったりすることはほとんどないよ。もっと抽象的なレベルで考えてるし、そういう人たちはもうLLMを理解してるんだ。
開発者が何でもできる万能なエンジニアってのは神話だよ。みんな長年普通のプログラミングをしてきただけ。ここにいる多くの人の教育には、線形代数が含まれてないかもしれないね(これは大胆な主張だけど)。
KarpathyのシリーズでLLMの基礎はわかるよ。LLMはロジットを出すから、不確かさが危険だね。単語埋め込みはLLMの入力であって全体じゃない。ネットワークの数学は単純で、なぜこんなにうまくいくのかが謎なんだ。AI研究は最小限の数学とデータエンジニアリング、計算力、試行錯誤の組み合わせだよ。
タイトルは誤解を招くね。ブログで解説されてるのはLLMを構築するための数学であって、LLMがなぜ動くのかを数学的に解明する「理解のための数学」はまだ発展途上だよ。それがLLM Explainabilityのテーマなんだから。
要するに、基本的な線形代数、確率、解析(exp関数とか)、勾配が必要だね。PyTorchでこれらの概念を実践的に学べるステップバイステップの入門をGitHubで公開してるよ。見てみてね:https://github.com/stared/thinking-in-tensors-writing-in-pyt…
「理解」って、公式を書けるってことなの?それとももっと深いもの?
公式を使えるのは理解の最初の一歩だね。その次は、色々なレベルの抽象化や類推ができることなんだけど、「理解」ってキリがない道のりだよ。
じゃあ楕円曲線暗号は?公式を思いつくのが理解じゃないと思うんだ。むしろ、導出を通して理解が深まる最終段階が公式でしょ。MLはそこが逆なんだよね。
ある意味そうだよ。車が物理法則だけでどう動くか純粋に理解する、みたいな感じ。
Deeplearning.AIの「Mathematics for Machine Learning and Data Science Specialization」に取り組んでるけど、線形代数の最高の入門書だね。月50ドル払う価値は十分あるよ。
同時に「Math and Architectures of Deep Learning」っていう本も読んでて、コースで学んだことを補強してくれてる。
[0] https://www.coursera.org/specializations/mathematics-for-mac…
[1] https://www.manning.com/books/math-and-architectures-of-deep…
この記事のステップはRAGでも同じだね。ドキュメントやチャンクを埋め込みベクトル化して、ユーザーのプロンプトもベクトルにして、コサイン距離を使って最も意味的に関連性の高いドキュメントを見つけるんだ。検索後にドキュメントをリランキングするような小技もあるけど、基本はこれだよ。
ここが分かりやすいね。
http://wordvec.colorado.edu/website_how_to.html
足し算と掛け算。NNって、その裏にある数学はめちゃくちゃシンプルなのに、みんな複雑だと思わせてるよね。なんであんなにうまくいくのか、誰も知らないのが実情だよ。AI研究って、数学が5%、データ収集とエンジニアリングが20%、計算能力が50%、試行錯誤が25%って感じじゃない?
勾配降下法って、ブラックボックスを叩きまくって、探してる答えが出るまでやり続ける感じだよね。知ってることはこれくらいだよ。まさに錬金術2.0。これを可能にしているのは半導体製造技術であって、数学は比較的にあんまり関係ないね。
「なぜこれほど上手くいくのか誰も知らない」っていうのは、この分野の専門家たちも言ってたことだね。想定以上のパフォーマンスを発揮する機械が作られちゃった、ってのは興味深い事実だよ。
線形回帰モデルの「ax + b」って、一番シンプルなのに、今でもかなり使えるよね。このモデルにフィットする現象を発見するってのは面白いけど、それは人がコントロールできることじゃない。何年も(高額な費用をかけて)何百万もの重みを学習させて、最終的に「e = mc^2」くらいシンプルな法則だと分かる、なんてこともあるかもね(c^2は定数だから、実質線形だし)。