「.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
Transformer ≒ Transformer Block | |
#ref(): File not found: "Transformer5.png" at page "自己符号化器(AE:オートエンコーダ)" | #ref(): File not found: "Transformer51.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/ |
Attention(Scaled Dot-Product Attention) | K、Vの値を決める重み、出力を調整する重みの学習 |
#ref(): File not found: "Transformer19.png" at page "自己符号化器(AE:オートエンコーダ)" | #ref(): File not found: "Transformer20.png" at page "自己符号化器(AE:オートエンコーダ)" |
https://www.youtube.com/@AIcia_Solid |
文のベクトル | #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/ |
#ref(): File not found: "GPT1.png" at page "自己符号化器(AE:オートエンコーダ)"
https://www.youtube.com/@AIcia_Solid
#ref(): File not found: "GPT2.png" at page "自己符号化器(AE:オートエンコーダ)"
https://www.youtube.com/@AIcia_Solid#ref(): File not found: "SparseTransformer.png" at page "自己符号化器(AE:オートエンコーダ)"
https://www.youtube.com/@AIcia_Solid一般的な扱い | GPT-3での扱い | |
Few/One-Shot | 少量の教師ありデータに基づく学習方法 | タスク説明と少量のデモンストレーションを入力とした予測 |
Zero-Shot | 学習時に存在しないクラスのデータを扱う枠組み | タスク説明のみを入力とした予測 |
GPT-nを少し改変しているので、高性能で汎用性が高く応用し易い。
#ref(): File not found: "BERT.png" at page "自己符号化器(AE:オートエンコーダ)"
https://www.youtube.com/@AIcia_Solid
高性能で汎用性が高く応用し易い。
マスクされた単語の前後のテキストを使って単語を予測する。
基本的にGPTと事前学習とファイン・チューニングと同じ。
リソースと時間が必要なので学習済みモデル(汎用事前学習モデル)をGoogleが無償で公開
以下はブログ側
https://ja.wikipedia.org/wiki/BERT_(%E8%A8%80%E8%AA%9E%E3%83%A2%E3%83%87%E3%83%AB)