ブログ紹介
- Sebastian Raschkaの書籍 "Build a Large Language Model (from Scratch)" をベースにしたブログシリーズの8本目の記事。
- 今回の記事では、"trainable self-attention" を実装する方法を扱っている。
GPT型デコーダ専用トランスフォーマーベースLLMの動作方式
- 文字列をトークンに分割し、各トークンをベクトル列にマッピングしてトークン埋め込みを生成する。
- 位置埋め込みを生成して入力埋め込みシーケンスを作る。
- 入力埋め込みを使って各トークンに対する注意スコアを生成する。
- 注意スコアを正規化して注意重みを生成する。
- 各トークンに対するコンテキストベクトルを生成する。
スケーリングされた内積注意メカニズム
- 入力シーケンスを3つの行列(クエリ、キー、値)に射影して注意スコアを計算する。
- 注意スコアを正規化して注意重みを生成し、これを使ってコンテキストベクトルを計算する。
- この一連の処理はすべて効率的な行列積によって実行される。
行列を使った空間間の射影
- 行列はベクトルを別の次元の空間へ射影するために使われる。
- 入力埋め込みをクエリ、キー、値の空間へ射影して注意スコアを計算する。
注意スコアの正規化
- 注意スコアを正規化するためにソフトマックス関数を使う。
- 次元の平方根で割って正規化し、小さな勾配の問題を解決する。
コンテキストベクトルの生成
- 注意重みを使って各トークンのコンテキストベクトルを計算する。
- 入力埋め込みを値空間へ射影し、注意重みによる加重和でコンテキストベクトルを生成する。
次のステップ
- 因果的自己注意とマルチヘッド注意を扱う予定。
- 自己注意メカニズムの「なぜ」についても掘り下げる予定。
結論
- このブログ記事は自己注意メカニズムを理解する助けになる。
- 追加の質問や意見はコメントで残せる。
まだコメントはありません。