微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何评估用于降维的自动编码器

如何解决如何评估用于降维的自动编码器

我正在使用自动编码器作为降维技术,将学习到的表示形式用作可用于进一步分析的低维特征。

代码段:

# Note: implementation --> based on keras 
encoding_dim = 32

# Define input layer
X_input = Input(shape=(X_train.shape[1],))
# Define encoder:
encoded = Dense(encoding_dim,activation='relu')(X_input)
# Define decoder:
decoded = Dense(X_train.shape[1],activation='sigmoid')(encoded)
# Create the autoencoder model
AE_model = Model(X_input,decoded)
#Compile the autoencoder model
AE_model.compile(optimizer='adam',loss='mse')
#Extract learned representation
learned_feature = Model(X_input,encoded)

history = AE_model.fit(X_train,X_train,epochs=10,batch_size=32)

我一直在寻找一种衡量学习的表示质量的方法。我发现一种方法是测量重建误差。我使用以下代码来做到这一点:

import math
reconstr_error = AE_model.evaluate(X_train,verbose=0)
print('The reconstruction error: %.2f MSE (%.2f RMSE)' % (reconstr_error,math.sqrt(reconstr_error )))

结果我得到了0.00 MSE(0.05 RMSE)。但是,我不确定上面的代码是否正确,无法测量重建误差? 另外,如果有其他替代方法,请告诉我。

解决方法

您出于什么目的进行压缩?如果您的项目中有以下分类器模型,则可以使用常规(未输入AE)数据训练该模型,并查看准确性或要测量的内容。然后在使用AE压缩数据后训练相同的模型。那么如果您也获得了不错的效果,则意味着您正在使用自动编码器提取有用的东西。尤其是如果您不使用所有数据来训练AE,并查看压缩在AE训练中未看到的示例将如何影响准确性。

例如,在其他技术(例如PCA)中,主要成分是特征向量,而这些特征向量的相应特征值实际上是非常有意义的,它们告诉您数据中每个方向上有多少信息变化,就像方差一样。但是在AE中,尤其是在Deep中,这样的分析并不直观,或者至少存在我的知识。但是在1层AE中,也许您仍然可以做一些类似的事情,实际上,以MSE为目标的1层AE非常接近PCA。您可以在隐藏层中提取这些权重,也可以在数据协方差矩阵上应用PCA或特征分解。然后计算这些隐藏层权重与特征向量之间的余弦距离之类的值,看它是否保留了有意义的值。

我不知道还有什么可以做的,但是如果这对您很重要,也许您可​​以找到一些论文来解决这些问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。