はじめに
LLM(Large Language Model)。
最近はどこを見てもこの言葉が出てきます。
ChatGPT、生成AI、Transformer、Attention、Embedding……。
正直に言います。
私はLLMについて1mmも理解していません。
数式を見るとわくわくするけど混乱して、
解説図を見ても「なるほど(分からん)」で終わります。
それでも、ずっと思っていました。
中で何が起きているのか、雰囲気だけでも掴めないだろうか?
理解する前に、
とりあえず動かしてみることにしました。
しかも選んだのは――
Excel VBA です。
何を作ったのか
Excel上で、
入力された文字列を分解し
数値っぽいものに変換し
脳みたいなネットワークに流し込み
何かすごい計算をしているっぽい雰囲気を出し
最後に「次に出そうな言葉」を1つ選ぶ
そんな **「LLMの中身っぽい挙動」**を
見える形で再現してみました。
正確かどうかは知りません。
でも、それっぽさはあります。
まずは触ってみる
B2セルに文字を入れます。
AIは電気羊の夢を見るか?
そして「GOD MODE 実行」ボタンを押すと、
Excelが突然それらしいことを始めます。
SYSTEM BOOT SEQUENCE...
TOKENIZING INPUT...
GENERATING EMBEDDINGS...
MULTI-HEAD ATTENTION FIRING...
CALCULATING SOFTMAX DISTRIBUTION...
もうこの時点で、
雰囲気は完全にLLMです。
画面で起きていること(なんとなく技術寄りに)
トークン化っぽい処理
入力された文字列を 1文字ずつ分解しています。
Private Function Tokenize(ByVal text As String) As String()
Dim res() As String
Dim i As Long
ReDim res(1 To Len(text))
For i = 1 To Len(text)
res(i) = Mid$(text, i, 1)
Next i
Tokenize = res
End Function
本物のLLMとは全然違うと想いますが、
「文字列を細かい単位に分ける」
という感覚は、これで伝わると思います。
Embeddingっぽいもの
数字が降ってくる Matrix風の演出を表示します。
DrawMatrixRain_Fast ws, T, 8
何を意味しているかは、正直よく分かりません。
でも、
文字が数値に変換されている感
は、かなり出ます。
脳っぽいネットワーク
ノードを円形に並べ、ランダムに接続します。
BuildBrainTopology ws, brainNodes
ノードが光る
線がつながる
たまに発火する
これだけで、
「あ、今なんか考えてるな」
という気分になります。
Attentionっぽい挙動
特定のノードが急に強く光ります。
AnimateBrainFiring ws, brainNodes
どこに注目しているのかは分かりません。
作者にも分かりません。
でも、
Attentionってこういうイメージだよね?
という納得感はあります。
Softmaxっぽい最終決定
候補の単語たちが、
バーの長さで競い合います。
AnimateSoftmaxCompetition(ws, outNodes)
伸びたり、縮んだりして、
最後に1つだけ勝ち残ります。
最終出力
画面に大きく表示されます。
PREDICTED TOKEN:
魂 16.0%
なぜ「魂」なのか?
なぜ16.0%なのか?
分かりません。
でも不思議と、
「まあ、そんな感じはする」
と思えてしまいます。
これはLLMなのか?
違うと思います。
学習しません
重みも保存しません
数学的にも正しくありません
でも、
ブラックボックスだったLLMを
「動くもの」として想像するには、十分でした。
ブラックボックスだったものが、
動くイメージとして頭に残りました。
なぜExcelでやったのか
理由は単純です。
誰でも持っている
図形が動く
数字も文字も混ざる
中身が全部見える
分からないものほど、見える形にしたかった。
おわりに
この記事は、
LLMの解説ではありません。
ただ、それっぽい動きを
Excelにさせたかっただけです。
分からない技術に、どう向き合ったか
その記録です。
理解してから作る、ではなく
作りながら雰囲気を掴む。
私にとってのLLM入門は、
これで十分でした。
もし、
●LLMがよく分からない
●数式を見ると逃げたくなる
●でも中身は気になる
そんな方がいれば、
Excelで遊んでみるのも悪くないと思います。
意味が分からなくても、
作ってみてさっぱり分からなくても、
動けばちょっと楽しいです。
実装全体のコードは GitHub に置いています。
VBA コードをそのまま置います。
始めて貼るのでうまくいってなければ教えてください。
