我使用自動編碼器作為降維技術,將學習到的表示用作可用于進一步分析的低維特征。代碼片段:# Note: implementation --> based on keras encoding_dim = 32# Define input layerX_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 modelAE_model = Model(X_input, decoded)#Compile the autoencoder modelAE_model.compile(optimizer='adam', loss='mse')#Extract learned representationlearned_feature = Model(X_input, encoded)history = AE_model.fit(X_train, X_train, epochs=10, batch_size=32)我一直在尋找一種方法來衡量學習表示的質量。我發現一種方法是測量重建誤差。我使用以下代碼來這樣做:import mathreconstr_error = AE_model.evaluate(X_train, X_train, verbose=0)print('The reconstruction error: %.2f MSE (%.2f RMSE)' % (reconstr_error , math.sqrt(reconstr_error )))結果我得到了 0.00 MSE (0.05 RMSE)。然而,我不確定上面的代碼在測量重構誤差方面是否正確?另外,如果有其他方法可以這樣做,請告訴我。
1 回答

慕絲7291255
TA貢獻1859條經驗 獲得超6個贊
您出于什么目的進行壓縮?如果您的項目中有以下分類器模型,您可以使用正常(未輸入 AE)數據訓練該模型并查看準確性或您正在測量的任何內容。然后訓練相同的模型,但在使用 AE 壓縮數據之后。那么如果你也得到了比較好的結果,這意味著你正在提取一些對自動編碼器有用的東西。特別是如果您不使用所有數據來訓練 AE 并查看 AE 在其訓練中未看到的示例的壓縮將如何影響準確性。
在 PCA 等其他技術中,主成分是特征向量,這些特征向量對應的特征值實際上非常有意義,它們告訴你數據中有多少信息在每個方向上變化,就像方差一樣。但在 AE 中,尤其是 Deep 中,這種分析并不直觀,或者至少超出我的知識范圍(如果存在的話)。但是在 1 層 AE 中也許你仍然可以做一些類似的事情,實際上,以 MSE 為目標的 1 層 AE 非常接近 PCA。您可以在隱藏層中提取這些權重,也可以在數據協方差矩陣上應用 PCA 或特征分解。然后計算那些隱藏層權重和特征向量之間的余弦距離,看看它是否保留了一些有意義的東西。
我不知道是否可以做更多的事情,但如果這對您很重要,也許您可以找到一些論文來解決這些問題。
添加回答
舉報
0/150
提交
取消