読者です 読者をやめる 読者になる 読者になる

Keras で自己符号化器を学習したい

Kerasブログの自己符号化器のチュートリアルをやります。
Building Autoencoders in Keras


このチュートリアルではMNISTの手書き数字のデータを例に色々な種類の自己符号化器を示しています。スクリプトは全て記事内に示されているので割愛します。上記の記事内でのモデルは Sequential() で生成したインスタンスに層を add していくのではなく、Model (functional API) で組み立てています。 この方法だと自己符号化器(エンコーダ + デコーダ)全体を学習して後からエンコーダ(デコーダ)部分のみ利用するというのが容易にできました。

以下はチュートリアル内で紹介されているモデルの理解のためのお絵描きです(この記事はお絵描きだけです)。

モデル1: 単純な自己符号化器

f:id:cookie-box:20170507160835p:plain:w600
このモデルの自分の環境での実行結果は以下のようになりました。
f:id:cookie-box:20170507160620p:plain:w770

モデル2: エンコーダがスパースな自己符号化器

f:id:cookie-box:20170507181112p:plain:w600
エンコーダの重みベクトルについてL1正則化項をペナルティにしてスパースにします。

モデル3: 多層な自己符号化器

f:id:cookie-box:20170507182856p:plain:w600

モデル4: 畳み込み自己符号化器

f:id:cookie-box:20170507222625p:plain:w800

モデル5: ノイズ除去モデル

f:id:cookie-box:20170507223517p:plain:w480

モデル6: 系列データに対する自己符号化器

f:id:cookie-box:20170507224843p:plain:w480
系列データに対する自己符号化器はこのように実現するらしいですが実例はありませんでした。

モデル7: Variational autoencoder(VAE)→ 別の記事

VAE についてのお絵描きと実行結果は以下の記事に書きました。
Keras で変分自己符号化器(VAE)を学習したい - クッキーの日記