transformerのエンコーダ - Shinichi0713/LLM-fundamental-study GitHub Wiki

概要

Transformerのエンコーダは、入力データを高次元の特徴空間に変換し、後続のデコーダや他の処理ステージがその特徴を利用できるようにする役割を持っています。

1. 入力の埋め込み(Embedding)

  • 単語やトークンの埋め込み
    入力データ(例えば、単語やトークン)を高次元のベクトルに変換します。これにより、各単語やトークンが意味的に豊かな表現を持つようになります。
  • 位置エンコーディング
    入力シーケンス内の各トークンの位置情報を埋め込みベクトルに追加します。これにより、モデルはシーケンス内の位置関係を学習することができます。

2. 自己注意機構(Self-Attention Mechanism)

  • 自己注意(Self-Attention)
    入力シーケンス内の各トークンが他のトークンとどのように関連しているかを計算します。これにより、文脈情報を取り入れ、各トークンの表現を文全体の情報に基づいて更新します。
  • スケールド・ドット・プロダクト注意(Scaled Dot-Product Attention)
    クエリ(Query)、キー(Key)、バリュー(Value)を計算し、スケールされたドットプロダクトを用いて注意重みを計算します。

3. フィードフォワードニューラルネットワーク(Feed-Forward Neural Network)

ポイントワイズフィードフォワードネットワーク
自己注意機構の出力に対して、各トークンごとに独立して適用される2層の完全連結フィードフォワードネットワークを通じて非線形変換を行います。

4. 正規化と残差接続(Normalization and Residual Connections)

  • 残差接続(Residual Connections)
    各サブレイヤー(自己注意機構やフィードフォワードネットワーク)の出力に対して、入力を直接加えることで、勾配消失問題を緩和し、学習を安定化させます。
  • レイヤーノルム(Layer Normalization)
    各サブレイヤーの出力を正規化し、学習の安定性を向上させます。

5. エンコーダのスタック(Stacking Encoders)

複数のエンコーダ層:エンコーダは通常、複数の同一構造のエンコーダ層をスタックして構成されます。各層が前の層の出力を入力として受け取り、より高次の抽象的な特徴を学習します。

まとめ

  • 入力データを高次元の埋め込みベクトルに変換する。
  • 自己注意機構を使用して、各トークンが他のトークンとどのように関連しているかを学習する。
  • フィードフォワードニューラルネットワークを通じて非線形変換を行う。
  • 残差接続と正規化を通じて学習を安定化させる。
  • 複数のエンコーダ層をスタックして、より高次の特徴を学習する。

GPTの議論

image

文脈を理解する賢さが非常に不可思議。
人間は非常に賢いし、曖昧に思うことはない。
計算機でやらせると、曖昧になってしまう。

日本語:AはBだ。なんでもくっつけることが出来る。言語として変ではない。意味合いは変。
image 空気を読んだ回答を行うことが出来るようになる。