使用 MLP 进行特征提取和降维
Posted
技术标签:
【中文标题】使用 MLP 进行特征提取和降维【英文标题】:Using MLP for Feature Extraction and Dimension Reduction 【发布时间】:2022-01-15 15:00:00 【问题描述】:我正在尝试构建一个的模型。在此过程之后,该模型可以将数据从 204 维转换为 80 维。提出的模型如下:
-
具有原始数据输入的 512 维密集层(204 维)
一个 256 维的密集层,输入为 512 维
一个 80 维密集层,输入为 256 维
建议的训练epoch为1,将MLP的输出作为进一步模型(如LR、SVM等)的输入
我的问题是:在训练 MLP 时,我应该设置什么损失函数? MSE损失可以吗,还是我应该使用其他损失函数?谢谢!
【问题讨论】:
关于降维,要不要做一个自动编码器? 【参考方案1】:你会用什么来训练这个 MLP? (目标 80 维“Y”是什么?)
MLP 与模型同时用于学习特征。例如,如果您想要一个 MLP 进行线性回归并且学习一组 80 维的特征,您可以创建如下内容:
model = keras.models.Sequential()
model.add(layers.Dense(80, input_dim=512, activation=MY_ACTIVATION))
model.add(layers.Dense(1))
model.compile(loss="mean_squared_error")
在最后一层,网络将学习找到“最佳”权重和偏差,以将 Y 捕获为提取的 80 个特征的函数。这些特征又是 X 的函数——网络通过调整这些特征捕获 Y 的能力来学习的函数(这是反向传播)。
因此,如果没有关于这些特征应该做什么的问题陈述,那么创建 MLP 只是为了学习特征是没有意义的。
因此,我建议使用诸如主成分分析或奇异值分解之类的方法。这些将数据投影到捕获数据中最大方差(信息)的 k 维空间。
【讨论】:
以上是关于使用 MLP 进行特征提取和降维的主要内容,如果未能解决你的问题,请参考以下文章