MATLAB で基本的なオートエンコーダーをトレーニングしようとしています。私のデータは 430 の 10 次元ポイントで、オートエンコーダー コードは次のようになります。
n_features = 25;
autoenc = trainAutoencoder(data, n_features, ...
'SparsityRegularization', 1, ...
'SparsityProportion', 0.1, ...
'L2WeightRegularization', 0.001, ...
'MaxEpochs', 1000, ...
'DecoderTransferFunction','purelin');
ご覧のとおり、線形デコーダーを使用しています。これをデータセットで実行するとautoenc
、定数関数を学習するだけになります。すべての入力重みは最終的に異なりますが、実行predict(autoenc, data)
すると、各データ ポイントに対して同じベクトルが得られます。何が起こっているのでしょうか?
編集:もう少し調べてみたところ、オートエンコーダーがデータの平均値を単純に学習してそれを1日と呼ぶことがあるというのは一般的な現象のようです。どうやらこれは最適化エラーであり、これは極小値です。関連リンク; 多少関連するリンク。どちらも満足のいく答えを提供しません。私が知る限り、MATLAB のオートエンコーダーは共役勾配のみを提供します。