Transformer (機械学習モデル)
アテンションの重み a i j {\displaystyle a_{ij}} はクエリベクトル q i {\displaystyle q_{i}} とキーベクトル k j {\displaystyle k_{j}} の内積(dot product)として計算され、勾配の安定化のためにキーベクトル k j {\displaystyle k_{j}} の次元の平方根 d k {\displaystyle {\sqrt {d_{k}}}} で除算され(scaled)、さらに softmax 関数で重みの合計が 1 に正規化される。
クエリの重み W Q {\displaystyle W_{Q}} とキーの重み W K {\displaystyle W_{K}} は異なる行列であり、アテンションが非対称になりうることに注意が必要である。トークン i {\displaystyle i} がトークン j {\displaystyle j} に関心を向ける(すなわち q i ⋅ k j {\displaystyle q_{i}\cdot k_{j}} が大きい)場合であっても、トークン j {\displaystyle j} がトークン i {\displaystyle i} に注意を向ける (すなわち q j ⋅ k i {\displaystyle q_{j}\cdot k_{i}} が大きい)とは限らない。
Transformer の基本的な構成要素は、Scaled dot-product attention unit と表現されるアテンション単位である。文が Transformer モデルに渡されると、アテンションの重みがすべてのトークン間で同時に計算される。アテンション単位は、コンテキスト内の全てのトークンの埋め込みを生成するが、そこにはトークン自体の情報だけでなく、他の関連トークンとの関連(についてアテンションの重みで重み付けされたもの)も含まれる。
具体的には、Transformerモデルは、各アテンション単位について、クエリの重み行列 W Q {\displaystyle W_{Q}} 、キーの重み行列 W K {\displaystyle W_{K}} 、値の重み行列 W V {\displaystyle W_{V}} の 3 つを学習する。 i {\displaystyle i} 番目のトークンに対し、入力の埋め込み x i {\displaystyle x_{i}} に重み行列のそれぞれを乗じることで、クエリベクトル q i = x i W Q {\displaystyle q_{i}=x_{i}W_{Q}} 、キーベクトル k i = x i W K {\displaystyle k_{i}=x_{i}W_{K}} 、値ベクトル v i = x i W V {\displaystyle v_{i}=x_{i}W_{V}} ができる。
トランスフォーマー登場以前には、自然言語処理の分野で注意機構(アテンション)を回帰型ニューラルネットワークモデルに追加するモデルが広く採用されていた。