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の議論
文脈を理解する賢さが非常に不可思議。
人間は非常に賢いし、曖昧に思うことはない。
計算機でやらせると、曖昧になってしまう。
日本語:AはBだ。なんでもくっつけることが出来る。言語として変ではない。意味合いは変。
空気を読んだ回答を行うことが出来るようになる。