本文へ
ハクソク

世界を動かす技術を、日本語で。

視覚でわかるトランスフォーマー

元記事: 原文(poloclub.github.io)

概要

  • Transformer はAI分野を根本から変革したニューラルネットワークアーキテクチャ
  • 自己注意機構 により長距離依存関係を効率的に捉える
  • テキスト生成だけでなく画像認識や音声生成など幅広い応用
  • GPT-2 などのモデルが代表例、原理理解に最適
  • モデルの基本構成は Embedding・Transformer Block・出力層

Transformerとは何か

  • Transformer は2017年の論文「Attention is All You Need」で初登場したニューラルネットワークアーキテクチャ
  • OpenAIのGPT、MetaのLlama、GoogleのGeminiなど多くの生成AIモデルの基盤
  • テキスト生成、音声生成、画像認識、タンパク質構造予測、ゲームプレイなど多用途
  • テキスト生成モデルは 次トークン予測 を原理とし、与えられたプロンプトの次に来る最も確率の高いトークンを出力
  • 自己注意機構(Self-Attention) により従来モデルよりも文脈理解力が高い

Transformerの基本構成

  • Embedding層 :入力テキストをトークン単位に分割し、数値ベクトル(埋め込み)に変換
  • Transformer Block :自己注意機構とMLP(多層パーセプトロン)から構成
    • Attention Layer :トークン間の情報伝達・文脈把握
    • MLP Layer :各トークンの表現を独立に洗練
  • 出力層 :最終的な埋め込みを確率分布に変換し、次トークンを予測

Embeddingの詳細

  • トークナイゼーション :テキストを単語やサブワード単位のトークンに分割
    • 例:「Data」「visualization」は独立トークン、「empowers」は2つのトークンに分割
    • GPT-2の語彙数は 50,257
  • トークン埋め込み :各トークンを768次元ベクトルで表現(GPT-2 smallの場合)
    • 類似する意味のトークンは高次元空間で近くに配置
  • 位置エンコーディング :トークンの順序情報を追加
    • GPT-2は独自の位置エンコーディング行列を学習
  • 最終埋め込み :トークン埋め込みと位置エンコーディングを加算して得る

Transformer Blockの仕組み

  • 複数のTransformer Block を積み重ねてモデルを構成(GPT-2 smallは12層)
  • 各ブロックでトークン表現が進化し、文脈理解が深まる

マルチヘッド自己注意機構

  • 自己注意 :各トークンが他の全トークンとの関係性を動的に計算
  • Q(Query)、K(Key)、V(Value) ベクトルに変換
    • Query:検索語、Key:候補、Value:内容という検索エンジンの比喩で理解
  • マルチヘッド :複数の視点で関係性を学習(GPT-2 smallは12ヘッド)
  • マスク付き自己注意 :未来のトークン情報を隠して次トークン予測を実現
    • Dot Productで関連度スコア計算
    • スケーリング・マスク処理後、Softmaxで確率化
    • Dropoutによる正則化

MLP(多層パーセプトロン)層

  • 自己注意後の出力 をさらに高次元空間へ投射し表現力を強化
  • 2層の線形変換+GELU活性化関数を使用
    • 768→3072次元に拡張、再び768次元に圧縮
  • 各トークンを独立に変換し多様なパターンを学習

出力確率とトークン生成

  • 全Transformer Blockを通過した後、 最終線形層 で各トークンのlogit(スコア)を出力
    • 語彙数(GPT-2なら50,257)の各トークンに対応
  • Softmax関数 で確率分布に変換し、次トークンをサンプリング
  • Temperature パラメータで出力の多様性を調整
    • 1未満:確定的、1超:ランダム性増加
  • top-k、top-pサンプリング で候補トークンを絞り込み、より自然な生成を実現

まとめ

  • Transformer は自己注意機構による強力な文脈理解力と拡張性が特長
  • Embedding→自己注意→MLP→出力層 というシンプルかつ強力な構成
  • テキスト生成モデルの基本原理と仕組み理解に最適なアーキテクチャ

提供: ハクソク · 要約更新:

AIによる日本語要約です。内容は原文とあわせてご確認ください。

Hacker Newsの議論を読む

Hackerたちの意見

くそ、あのページが俺のChromebookをダウンさせた。こんなの初めてだわ。。

└

2回も…

└

「Examples」セクションの下にあるテキスト…「GPT-2モデルがダウンロード中(600MB)の間に例を試してみてください」って。結構なダウンロード量だし、計算も大変そうだね。

いいサイトだね、直感的な説明が分かりやすい。俺も過去に[1]がすごく役立ったよ。 [1] https://bbycroft.net/llm

└

これすごいね、シェアしてくれてありがとう!

よくできてるね。俺が一番興味深いと思うのは、アテンションヘッドのところで、アテンション行列がすでに計算されていて、バリューベクトルと掛け算される部分だよ。これって、普通のネットワークのDense層を通してバリューベクトルを押し込むのと全く同じ動きなんだ。アテンション行列がその層の重みを形成してるからね。だからアテンションヘッドは、キーとクエリから動的にこの小さな単層ネットワークを構築するように訓練されてるんだ。それがポイントだよ。LLMのアーキテクチャの説明ではあまり強調されないけど、これがこんなにうまく機能するのは本当にすごいと思う。この特定のビジュアライゼーションでは、クリックするとこのメカニズムが簡単に観察できるよ。

└

もうちょっと詳しく説明してくれない?もう少し簡単にしてくれたら嬉しいな。重要そうに聞こえるけど、アテンションの部分がまだピンと来ないんだよね。

└

Welch LabsのYouTube動画で、Vision Language Action Modelsについての美しいビジュアライゼーションがあるんだけど、プロンプトのアテンションがその行列の中の画像の正確な元のピクセルに追跡できるんだ。

└

確かに多くの入門説明の一部だけど、MLPをよく知ってるけどトランスフォーマーを知らない人にはちょっと微妙な位置にあるんだよね。今はそういう人が減ってきてるし。誰かがこれに全くの初心者か、両方を知ってるかだから、初心者向けのトランスフォーマーの説明はMLPに深く精通していることを前提にすることがほとんどない。だけど、トランスフォーマーブロックは基本的に入力に依存して密な層の重みベクトルを決定するものと考えられる。古典的なMLPのようなネットワークでは、入力に依存する値同士の掛け算はなかった(Squeeze-and-Excitation層のような例外はあるけど)。掛け算は常に、入力に依存しないパラメータと、入力に依存する活性化の間で行われる。トランスフォーマーでは、アテンションが入力に依存する活性化の間で多くの掛け算的相互作用を提供するんだ。あと、義務的に: シュミットフーバーがこれについてずっと前に話してたよ。

これはGPT-2を説明するためのものだってのは分かるけど、素人がこれを現代のモデルの例として使わないことを願ってる(例えば、絶対位置エンコーディングはもう使われてない)。編集:現代的じゃないって言ってるのは知ってるけど、こういう細かい点がモデルが学べる表現に大きな影響を与えるから、実際には最も重要な部分なんだよね!

└

これが教育法の仕組みだよ。何かを簡単にする必要があるんだ。

└

うん、ちょっと変だよね。特にRoPeは概念的にはもっとシンプルだと思うし。

Hacker Newsで議論の続きを見る