.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

自己符号化器(AE:オートエンコーダ)、自己識別機とも呼ばれる。

歴史

特徴

教師あり、なし

入出力を一致させる。

特徴表現の獲得

隠れ層の次元を小さくして情報量を小さくした特徴表現を獲得する。
(入力の情報を圧縮される。→ 学習の結果、重みとして要約される。)

※ EncoderもDecoderもニューラルネットワーク

種類

様々な種類があるもよう。

できること

様々な用途で利用されている。

詳細

変分オートエンコーダ(VAE)

仕組み

潜在変数z

最適化

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による誤差

KLダイバージェンス

Encoderによる誤差

損失関数

復元誤差KLダイバージェンスの展開式を損失関数として利用することでVAEを最適化出来る

Transformer

RNN Encoder-DecoderのAttention機構と同じ目的を達成するが機構は異なる。

アーキテクチャ

パフォーマンス

RNN Encoder-Decoder(Sequence-to-Sequence)系よりも早くて精度が高い

タスクの概要と構造

オートエンコーダ

#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 Block

Transformer ≒ Transformer Block

#ref(): File not found: "Transformer5.png" at page "自己符号化器(AE:オートエンコーダ)"

https://agirobots.com/multi-head-attention/

Multi-head Attention

Multi-head AttentionSingle-Head Attention

#ref(): File not found: "Transformer6.png" at page "自己符号化器(AE:オートエンコーダ)"

#ref(): File not found: "Transformer7.png" at page "自己符号化器(AE:オートエンコーダ)"

https://agirobots.com/multi-head-attention/

数式

ますが本質的なところで言うとこちらです ねソフトマックスの 12:59 ルートDK分の9KTを計算しているに すぎません 13:05 具体的な例を見た方が分かりやすいと思い ますので 具体例を見ていきましょう 13:10 ここではクエリーに任意の単語を表す ベクトルをそして 13:16 キーとバリューには文章を単語ごとに ベクトル化して 並べた行列を入力するということを考え 13:23 たいと思います ちなみに単語のベクトル化においては 13:28 埋め込み層と呼ばれるものを使用すること ができます例えば今回は 13:34 Ihaveapentという単語文章を 単語ごとにトークン化してベクトル化する 13:40 ことを考えてみましょう 単語ごとということですので 13:46 Ihaveapenピリオドですねこの5 つについてベクトル化した時に右のように 13:55 なったとしますそれぞれ 列ベクトルとなっています 14:00 ここではベクトルの値については考えませ んがベクトルの違いというのは色の違いで 14:07 表してやりますここでクエリとしてhas を表すベクトルこちらですねこれを 14:15 与えることとしますそして キーとバリューには 各ベクトルを 14:21 順番に並べた行列そうですねこちらを行列 化したものですねこれ 14:27 これを入力することを考えます この時ソフトマックス関数の入力である 14:35 ルートDK分の9KTこれはどれかという とこちらですねソフトマックス関数はここ 14:42 にあるのでここまでの処理ですちょっと マスクについては後で説明しますがまあ 要するにここですね 14:49 ルートDK分の 9ktということで 14:54 この 計算はクエリのベクトルと入力文章の全 14:59 ベクトルはいクエリーのベクトルと入力 文章の全ベクトルですね 15:06 に関して内積を計算し金の長さこれは トークン数になりますのでここですね 15:14 のルートでスケール化したベクトルとなり ますすなわち 15:19 Ihaveapenを構成するトークン こちらに対してハーブを表すベクトルに 15:25 それぞれのベクトルがどの程度近いのかを 内積を使って 15:31 計算するのです スケール化についてはソフトマックス関数 の兼ね合いで必要になっているという形 15:38 です内積ですのでスケール化しないと 値がものすごく大きくなってしまいます 15:44 値が大きくなるとソフトマックス関数の 性質上 勾配がですねどんどんあまりよろしくない 15:52 わけですよね ですのでその 全体をスケール化してあげて 15:58 その値をソフトマックス関数に入力すると いうことを行っております 16:05 でソフトマックス関数は皆さんクラス分類 の機械学習の出力層とかでよく使うと思う 16:11 んですけれどもこれによってですね 類似している単語ほど1に近く相違して 16:18 いる単語ほどゼロに近くかつ全体の和は1 というような変換を 16:24 施すことができますこの結果を用いて valuと内積を計算するということです 16:31 一言でまとめると スケールドットプロダクトアテンションと 16:37 はクエリーベクトルと キーの各ベクトルの類似性に基づいて 16:43 valuの 各ベクトルの線形結合を計算するという ことになりますここまでの流れを全て図に

参考

Qiita

YouTube?

AIcia Solid Project

AI教室 AIRS-Lab

https://www.youtube.com/playlist?list=PLcd5jOpoEDGBDqiRMS4eqkfBwl28ixRYc

AGIRobots

以下はブログ側


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS