Autoencoder
Autoencoderは(日本語では自己符号化器とも呼ばれる)はディープラーニングの流行のきっかけにもなったアルゴリズムの1つ。オリジナルは2006年、Geoffrey Hinton 。現在では実用に使われることはほとんど無いが*、チュートリアルでは定番。分かりやすいし面白い。
* 画像のノイズ除去に使われることがあるらしいがよく知らない、後で調べる。
"Autoencoding" is a data compression algorithm where the compression and decompression functions are 1) data-specific, 2) lossy, and 3) learned automatically from examples rather than engineered by a human. Additionally, in almost all contexts where the term "autoencoder" is used, the compression and decompression functions are implemented with neural networks.
https://blog.keras.io/building-autoencoders-in-keras.html
データ圧縮/復元。data-specific - データの種類ごと - 学習に用いた画像に似たものにたいしてしか役に立たない、非可逆、人力ではなく与えられたデータ(examples)から学習する。ほとんど必ずニューラルネットワークを用いた実装。
次元圧縮
Encoder は元となるデータの次元数を減らすことで圧縮を行う。Decoderは圧縮されたデータを可能な限り復元しようとする。
例:訓練データして手書きした数字の画像を用いる。グレースケールの画像データは 高さ x 幅 x (カラーチャンネル = 1) の2階テンソル。Encoderはこれを複数の畳み込み層(convolutional layer)でもっと簡単なデータにする。例えば2次元ベクトル(1階のテンソル)。画像の1つ1つを黒板の点に対応させるイメージ。この圧縮された表現を latent space と呼ぶ。
Decoderはこの点から元画像をできる限り再現する。
Variational Autoencoder という亜種を用いると、学習データに対応していない点からも「学習データに存在しない画像を復元」できる。人の画像を学習に使えば、実在しない人物の画像を生成できる。
2つのデータの間を保管することもできる。例えば画像Aがlatent spaceで点 (4, 2)、Bが (6, 4) に対応する場合、(5, 4) を選んでdecoderで復元すれば2つの画像の中間のような絵が得られる。