我正在尝试在MATLAB中训练一个基本的自动编码器 . 我的数据是430个十维点,我的自动编码器代码就像
n_features = 25;
autoenc = trainAutoencoder(data, n_features, ...
'SparsityRegularization', 1, ...
'SparsityProportion', 0.1, ...
'L2WeightRegularization', 0.001, ...
'MaxEpochs', 1000, ...
'DecoderTransferFunction','purelin');
正如你所看到的,我正在使用线性解码器 . 当我在我的数据集上运行它时 autoenc
最终只是学习一个常量函数 . 所有输入权重最终都不同,但运行 predict(autoenc, data)
为每个数据点提供相同的向量 . 会发生什么事?
编辑:我再看了一遍,这似乎是一种普遍的现象,自动编码器有时只是简单地学习数据的平均值并称之为一天 . 显然这是一个优化错误,这是一个局部最小值 . Relevant link; somewhat relevant link . 都没有提供满意的答案 . 就我所知,MATLAB的自动编码器仅提供共轭梯度 .