「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
自己符号化器(AE:オートエンコーダ)、自己識別機とも呼ばれる。
隠れ層の次元を小さくして情報量を小さくした特徴表現を獲得する。
(入力の情報を圧縮される。→ 学習の結果、重みとして要約される。)
※ EncoderもDecoderもニューラルネットワーク
様々な種類があるもよう。
様々な用途で利用されている。
x をより良く表現する p(X) のパラメータを学習するには、周辺尤度 logp(X) の最大化を考える。
記号 | 説明 |
X | 再構成されるデータ |
p(X) | 再構成されるデータの確率分布 |
z | 潜在変数z |
p(z) | 潜在変数zの確率分布 |
p(X|z) | 潜在変数zが与えられた時のxの確率分布(Decoder) |
q(z|X) | データXが与えられた時のzの確率分布(Encoder) |
Decoderによる誤差
Encoderによる誤差
復元誤差とKLダイバージェンスの展開式を損失関数として利用することでVAEを最適化出来る
※ RNN Encoder-DecoderのAttention機構と同じ目的を達成するが機構は異なる。
RNN Encoder-Decoder(Sequence-to-Sequence)系よりも早くて精度が高い
#ref(): File not found: "Transformer0.png" at page "自己符号化器(AE:オートエンコーダ)" | #ref(): File not found: "Transformer1.png" at page "自己符号化器(AE:オートエンコーダ)" |
https://qiita.com/omiita/items/07e69aef6c156d23c538 |
I | have | cats | |
I | 0.88 | 0.10 | 0.02 |
have | 0.08 | 0.80 | 0.12 |
cats | 0.03 | 0.14 | 0.83 |
#ref(): File not found: "Transformer2.jpg" at page "自己符号化器(AE:オートエンコーダ)" | #ref(): File not found: "Transformer3.jpg" at page "自己符号化器(AE:オートエンコーダ)" | #ref(): File not found: "Transformer4.jpg" at page "自己符号化器(AE:オートエンコーダ)" |
https://nlpillustration.tech/?p=2171 |
Transformer ≒ Transformer Block
#ref(): File not found: "Transformer5.png" at page "自己符号化器(AE:オートエンコーダ)"
https://agirobots.com/multi-head-attention/
Single-Head Attention | Multi-head Attention |
#ref(): File not found: "Transformer6.png" at page "自己符号化器(AE:オートエンコーダ)" | #ref(): File not found: "Transformer7.png" at page "自己符号化器(AE:オートエンコーダ)" |
Multi-head Attention内部で行われる計算 | |
#ref(): File not found: "Transformer8.png" at page "自己符号化器(AE:オートエンコーダ)" | |
#ref(): File not found: "Transformer9.png" at page "自己符号化器(AE:オートエンコーダ)" | |
① 行列をかける。Q = K = V = Xなのでそれぞれを変形させる。 ・QWiqはh=8なのでXの次元を1/8にする。= Xのどの部分を処理するか?を変える。 ・KWikは内積を取る前にXの角度を変える。= どの部分に注目するか?注目の仕方を変える。 ・VWivは出力する前にXの角度を変える。= 出力の様子を調整する。 | |
② Scaled Dot-Product Attentionを行う(後述)。 | |
③ Concatで横に繋げる(1/hにしたものをh倍にする)。 | |
④ 行列Woをかける。 | |
https://agirobots.com/multi-head-attention/ |
#ref(): File not found: "Transformer10.png" at page "自己符号化器(AE:オートエンコーダ)" | #ref(): File not found: "Transformer11.png" at page "自己符号化器(AE:オートエンコーダ)" |
・Qは横ベクトルqの縦ベクトル ・Kは横ベクトルkの縦ベクトル ・Vは横ベクトルvの縦ベクトル(KV(kv)はペアになっている) | |
QをqにしてSingle-Head Attentionで考えると、qtKは、同様に、qkの内積(類似度)の横ベクトルになる。また、√dkは、次元が大きくなると長くなるので補正する。コレを同様にSoftmaxで重み(Attention_Weight)に変換し、この重み(Attention_Weight)とVのdot積=加重和がCi(文脈を加味した単語ベクトル)になる。 | |
Attention(q, K, V)では、qとkiが似ていて場合 Pi≒1 他≒0となる場合、kiとの類似度に応じたVの加重和はほぼviになる。Attention(Q, K, V)はバッチで処理。 | |
https://agirobots.com/multi-head-attention/ |
文のベクトル | #ref(): File not found: "Transformer12.png" at page "自己符号化器(AE:オートエンコーダ)" | #ref(): File not found: "Transformer14.png" at page "自己符号化器(AE:オートエンコーダ)" | |
QKVのベクトル | #ref(): File not found: "Transformer13.png" at page "自己符号化器(AE:オートエンコーダ)" | ||
QKVから計算して得たCi(文脈を加味した単語ベクトル) | |||
#ref(): File not found: "Transformer15.png" at page "自己符号化器(AE:オートエンコーダ)" | #ref(): File not found: "Transformer16.png" at page "自己符号化器(AE:オートエンコーダ)" | #ref(): File not found: "Transformer17.png" at page "自己符号化器(AE:オートエンコーダ)" | |
並列に並んでいる各Single-Headが異なる注意表現を獲得している | |||
#ref(): File not found: "Transformer18.png" at page "自己符号化器(AE:オートエンコーダ)" | |||
https://agirobots.com/multi-head-attention/ |
以下はブログ側