見出し画像

【自作LLM実験①】LLMの中身を2本にしたら賢くなるのか? 実際に作って試してみた

人間による前書き

以前の記事で紹介したモデル達はClaude Opus5の暴走により実験データ、モデルコードなど全部消えてしまいました。。。

ということで全く新しい発想でモデルを作って比較実験して遊んでました。

スバリ、2本のLLMを通信させたら性能あがるのか?


LLMの内部では、入力された文章が何層ものTransformerを通りながら処理されていく。

普通はこれが一本だ。

そこで単純な疑問が浮かんだ。

これを二本にしたらどうなるんだろう?

普通

入力 → ○ → ○ → ○ → 出力


2本化

       ┌→ ○ → ○ → ○ ─┐
入力 ──┤                ├→ 出力
       └→ ○ → ○ → ○ ─┘

二つの流れに同じ文章を別々に処理させ、途中で情報交換させる。

一人で考えるより、二人で考えた方が賢くなるような気もする。

実際に作って試してみた。

「同じところ」と「違うところ」、どっちを使う?

最初に作ったのは、二本の共通している部分を見ながら情報交換するモデル。

イメージとしては足し算。

A + B

次に、二本の違っている部分を使うモデルを作った。

こちらは引き算。

A - B

300M token学習した結果がこれだった。

NLL(負の対数尤度)は、モデルが正解の次単語にどれだけ高い確率を与えたかを示す指標です。
値が小さいほど正解を高い確率で予測できており、言語モデルとしての予測性能が高いことを意味します。

引き算が勝った。

どうやら二人が同じことを考えている場所より、「二人の考えがズレている場所」を見た方が役に立つらしい。

じゃあ両方使えば?

次に当然、足し算と引き算を両方使うモデルも作った。

さらに、

違いが役立つなら、役立つ違いそのものをLLM自身に作らせたら?

という仕組みも追加した。

結果は、

ほぼ引き算型と同じ。

さらにいろいろ強化したモデルでは、

NLL 3.5984

まで下がった。

ここまでは、

「LLMを二本にするの、結構いいんじゃない?」

という結果だった。

でも、もっと単純な方法があった

二本にすると、当然ながら計算量も増える。

だったら同じ計算量を使って、普通のLLMを一本のまま大きくしたら?

そこで、二本モデルとほぼ同じ計算量になる大きな一本モデルを作った。

そして同じ300M token学習。

結果。

大きな一本が全部に勝った。

しかも僅差ではない。

引き算型との比較では、固定した64個の文章のうち、

63個で大きな一本が勝った。

計算量はほぼ同じ。

結局、二人より「でかい一人」が強かった

今回試した範囲では、小さなLLMを二つ並べて相談させるより、その計算能力を一つの大きなLLMに集中させた方が強かった。

足し算も試した。

引き算も試した。

両方も試した。

自分から二つの考えを違わせる仕組みも試した。

かなり強化もした。

それでも最後は、

一本を大きくした方が強かった。

という、かなりシンプルな結果になった。

もちろん今回試した二本化の方法が、あらゆる二本化を代表するわけではない。

それでも、現在のLLMの多くが一本の大きなTransformerを中心に作られているのは、単なる慣習ではなさそうだ。

二つの小さな頭を持たせるより、一つの大きな頭に計算能力を集中させる。

少なくとも今回の実験では、それが一番強かった。


今回の2本化Transformerは、訓練前には同じ状態だった二つのTransformerが、事前訓練を通して自然と役割や機能を分化させていく設計でした。

訓練中のモデル内部を観察すると、確かに二つの性格は違っていきました。しかし、その違いをうまく活かせる通信システムではありませんでした。せっかく別々の意味空間が育ってきたのに、その違いを利用して、より情報量の多い意味空間を作る仕組みも作れませんでした。

今回、比較のために、計算量がほぼ同じになるように二つのモデルを作りました。

一つは、大きな一本のTransformer。12層・幅1024です。

もう一つは、2本化Transformer。12層・幅768のTransformerを二本並列に走らせます。

一本の大きなTransformerが作る、大きく高精細な意味空間。

二つの小さなTransformerが作る、異なる二つの低解像度な意味空間。

どちらの方が性能が良いのか?

よくよく考えたら、大きな高解像度の意味空間の方が性能が良いに決まっています。

ですから、もし2本化Transformerが大きな一本に勝つためには、異なる二つの低解像度の意味空間から、大きな高解像度の意味空間よりも情報量の多い意味空間を作る必要があると思います。

画像処理の世界では、AIを使って複数の低解像度画像から、より高解像度な一枚を復元することが行われています。

では、意味空間でも同じようなことができるのでしょうか?

数学的な操作と構造によって、異なる二つの低解像度な意味空間から、それぞれが単独では持てなかった情報を備えた、より高精細な意味空間を作れるのか?

それが、次に取り組もうとしている問いです。


いいなと思ったら応援しよう!

AIと対話する愚者 この言葉の海を渡り、ここまで辿り着いてくださり感謝します。もしあなたの心に小さな灯火がともったなら、チップという形でその光を分けていただけませんか。いただいた光は、まだ見ぬ真理の暗闇を照らす、大きな松明のエネルギーとさせていただきます。あなたの光が、誰かの道をも照らします。