
2025/12/23 4:15
**イラスト付きトランスフォーマー**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
記事は「Attention is All You Need」で紹介されたTransformerアーキテクチャと、従来の再帰型や畳み込み型ニューラル機械翻訳モデルに比べてその注意力ベース設計がトレーニングを高速化する方法について説明しています。
Transformerはエンコーダスタック(通常6層)とデコーダスタック(同じく6層)で構成されます。各層には以下の要素があります:
- 自己注意では、トークン埋め込み(512次元ベクトル)がクエリ・キー・バリュー行列にそれぞれ64次元へ射影されます。ドット積スコアは (\sqrt{64}) で縮小し、softmax を適用して値を重み付けし、合計します。
- マルチヘッド注意では、各層に8セットの Q/K/V 射影が使用されます。すべてのヘッドからの出力は連結され、最終的な重み行列 (W_O) を通じて射影されます。
- フィードフォワードニューラルネットワーク(ReLU の間にある2つの線形層)。
すべてのサブレイヤは残差接続とその後のレイヤ正規化で包まれています。
位置エンコーディング(512次元の正弦/余弦ベクトル)は埋め込みに加算され、モデルがトークン順序を知り、訓練時より長いシーケンスを扱えるようにします。デコーダでは自己注意がマスクされ、将来位置は (-\infty) に設定されるため、オートレグレッシブ生成が保証されます。
最終的なデコーダ出力は線形射影されてロジットベクトル(次元はターゲット語彙サイズ ≈10 000 単語)となり、その後 softmax で単語確率を得ます。訓練では、これらの分布とワンホットエンコードされた目標トークン間のクロスエントロピー損失が最小化され、逆伝播により最適化されます。
デコーディングは貪欲法またはビームサーチで行うことができ、記事では将来的にデコーディング戦略と大規模語彙や長いシーケンスへの訓練を改善する予定だと述べています。本文は元論文、Tensor2Tensor コード、Jupyter ノートブック、および後続のTransformerバリアントを参照し、Twitter での訂正を歓迎しています。
産業界において、Transformers を採用すると NLP プロジェクトが加速し、翻訳品質が向上し、言語集約型サービスへの展開が拡大します。
本文
ディスカッション
- Hacker News(65ポイント、4コメント)
- Reddit r/MachineLearning(29ポイント、3コメント)
翻訳
アラビア語、中国語(簡体字)1、中国語(簡体字)2、フランス語1、フランス語2、イタリア語、日本語、韓国語、ペルシャ語、ロシア語、スペイン語1、スペイン語2、ベトナム語
視聴
MIT の Deep Learning State‑of‑the‑Art 講義でこの投稿を参照
講座に掲載
スタンフォード、ハーバード、MIT、プリンストン、CMU など
更新:この投稿は今や書籍化されました!
LLM‑book.com をご覧ください。最新の Transformer モデル(マルチクエリアテンション、RoPE 位置埋め込み)をカバーした更新版・拡張章 3 が収録されています。
1. はじめに
前回の記事では Attention ― ニューラル機械翻訳を劇的に向上させた普遍的手法 ― を検討しました。
本記事は、Attention を活用して高速学習を実現しつつ Google の Neural Machine Translation モデルを特定タスクで上回る Transformer に焦点を当てます。最大の利点は並列化が容易な点です。これにより、Google Cloud は自社の Cloud TPU への参照モデルとして推奨しています。
Transformer は Attention Is All You Need で初めて紹介されました。
TensorFlow 実装は Tensor2Tensor パッケージにあり、Harvard の NLP グループは論文を添付した PyTorch ガイドを提供しています。本稿は専門知識が浅い読者でも基本概念を掴めるよう、過度に簡略化して解説します。
2025年アップデート:アニメーション付きの無料短期コースで本投稿を最新状態に保ちます。
2. 高レベル概要
機械翻訳用 Transformer はブラックボックスです。入力言語の文を受け取り、別言語への翻訳文を出力します。内部構成は以下の通りです。
- エンコーダースタック – 同一構造の 6 層(数は可変)
- デコーダースタック – エンコーダーと同じく 6 層
各エンコーダーには次の 2 層があります。
- 自己注意 ― トークンが入力中のすべてのトークンに注目できる
- フィードフォワードニューラルネットワーク (FFNN) ― 各位置で独立して適用
デコーダーも同様の 2 層を持ち、さらに エンコーダ―-デコーダー注意 層が追加されます。これにより、デコーダーはエンコーダー出力の関連部分に注目できます。
3. テンソルとフロー
- 埋め込み – 各入力単語を 512 次元ベクトルへ変換
- 最下層エンコーダーはこの埋め込みを受け取り、上位エンコーダーは前のエンコーダー出力を入力
- エンコーダー内では各トークンが自己注意 → FFNN のパスをたどり、トークン間で並列実行可能
4. 自己注意(概念)
自己注意はトークンが他の位置を「見る」ことでより豊かな表現を構築します。例として
The animal didn't cross the street because it was too tired
で it を処理するとき、自己注意は animal と関連付けます。
5. 自己注意(数式詳細)
各入力ベクトル (x_i) に対し
-
射影
[ q_i = x_i W_Q,\quad k_i = x_i W_K,\quad v_i = x_i W_V ] ただし (W_Q, W_K, W_V \in \mathbb{R}^{512\times 64}) -
スコア
[ s_{ij} = \frac{q_i^\top k_j}{\sqrt{d_k}},\qquad d_k=64 ] -
Softmax – スコアを正規化
-
加重和
[ z_i = \sum_j \text{softmax}(s_{ij}), v_j ]
これらはベクトル化して実行されます。
[
Q = XW_Q,; K = XW_K,; V = XW_V,;
Z = \text{softmax}!\left(\frac{QK^\top}{\sqrt{d_k}}\right)V
]
6. マルチヘッド注意
Transformer は (h=8) ヘッドを使用します。
- 各ヘッドに対して別々の射影行列 (W_Q^h, W_K^h, W_V^h) を用意
- 上記と同様に各ヘッドで (Z^h) を計算
- すべての (Z^h) を連結し、(W_O) で再射影
これによりモデルは複数の表現空間を同時に捉えることができます。
7. 位置エンコーディング
自己注意は順序不変なので、各埋め込みに位置ベクトル (p_i) を足します:
[ x'_i = x_i + p_i ]
エンコーディングは正弦・余弦パターン(偶数インデックスは sine、奇数は cosine)で構成され、長いシーケンスへの一般化を可能にします。
8. 残差接続とレイヤノーマライゼーション
各サブレイヤーは残差接続でラップされ、その後レイヤノーマライゼーションが適用されます:
[ \text{output} = \text{LayerNorm}(x + \text{sub-layer}(x)) ]
これはエンコーダーとデコーダーの両方に当てはまります。
9. デコーダー機構
- マスク付き自己注意 – 将来位置への注目を防ぐ(下三角行列でマスク)
- エンコーダ―-デコーダー注意 – エンコーダ出力をキー・バリュー、現在のデコーダ状態をクエリとして使用
- 最終線形層がデコーダ出力を語彙に対するロジットへ射影し、softmax で確率分布を生成
10. 学習概要
- 語彙 – サイズ (V)(例:10,000)のワンホットベクトル
- 損失 – 予測確率分布とターゲットワンホットとのクロスエントロピー
- 逆伝播 がすべての重みを更新
デコード時は greedy または beam search により最高確率単語を選択します。
11. さらに読む・リソース
- Attention Is All You Need(論文)
- Tensor2Tensor リポジトリと Jupyter ノートブック
- Łukasz Kaiser 等による講演
フォローアップ研究
Depthwise Separable Convolutions, One Model to Learn Them All, Discrete Autoencoders for Sequence Models, Image Transformer, Training Tips, Relative Position Representations など。
12. 謝辞
Illia Polosukhin、Jakob Uszkoreit、Llion Jones、Łukasz Kaiser、Niki Parmar、Noam Shazeer に以前の草稿へのフィードバックをいただき感謝します。
Twitter で修正やご提案があれば遠慮なくどうぞ。