自己符号化器,AutoEncoderの実装

機械学習プロフェッショナルシリーズの「深層学習」のChapter5を参考に,PyTorchでAutoEncoderの実装を行いました.

 

パラメータとしては,

 入出力層が28x28次元,

 中間層が100次元,

 (28x28 -> 100 -> 28x28)

 中間層の活性化関数はReLU,

 出力層の活性化関数は恒等写像

 重みはガウス分布(σ=0.01)で初期化,

 SGD(重み減衰λ=0.1,モメンタムµ=0.5

 Loss関数は二乗誤差

にしました.

 SGDよりもAdamの方がLossが落ちたのでAdamに変更しました.

 

結果としては,

f:id:akmtn:20170518183029p:plain

このようになり,数字は認識できます.画像全体として(背景が?)白くなっているのは,重み0が濃淡256階層の中央に来るように調整することで治るのかもしれません.

中間層のユニットを100個よりも大きくすると,よりLossも下がり,よりくっきりとした画像が得られました.中間層のユニットの数が特徴の表現力を表していることを実感できます.

 

コードはここにあります.