連載「Self-Attentionを実装する」
公開順に読み進められる連載です。
- Self-Attentionの「it」は本当に「animal」を見ているのか。QKVとスケーリング、causal maskを自分で実装して確かめてみた
Transformerのself-attentionを実際にPythonで実装し、有名な「it」が「animal」に注目するという説明図が無条件に成り立つのか、なぜ1/√d_kでスケーリングするのか、causal maskで何が変わるのかを、実データと数値で検証してみた
- Self-Attentionにとって文はただの「単語の集合」だった。位置エンコーディングを実装して、順序という情報がどう埋め込まれるかを確かめてみた
前回のSelf-Attention実験の続編。QKVの計算そのものには語順の情報が一切含まれないことを実証したうえで、sin/cos位置エンコーディングを実装し、「相対位置は線形変換で表現できる」という有名な主張を数値で検証してみた
- 自分のブログ49記事でミニGPTを学習させたら、「位置エンコーディング」と「.envを呼ぶ」を書き出した
これまでの記事で実装してきた部品——Self-Attention、位置エンコーディング、手書きMLP、Adam——を全部組み立てて、2層Transformerの文字レベルGPTをnumpyだけで作った。学習データはこのブログ自身の全49記事12万字。数値微分との一致(相対誤差1e-8)で実装の正しさを確認した上で6000ステップ学習させると、生成文は「ランダムな漢字の羅列」から「文法らしきもの」を経て、最終的にこのブログ特有の語彙とmarkdown記法まで再現するようになった。意味は通らないのに、文体だけが確かに自分のものになっている