【问题标题】:The number of hidden nodes in autoencoder with small number of features具有少量特征的自动编码器中隐藏节点的数量
【发布时间】:2017-12-20 23:50:57
【问题描述】:

我有一个包含 2 个特征和 10000 个样本的数据集。我想将这两个功能转换(集成)为一个功能,以进行进一步分析。所以我想使用特征提取方法。由于两个特征之间的关系不是线性的,我想使用传统 PCA 以外的方法。

因为样本的数量远远大于特征的数量,所以我认为自动编码器是一种很好的特征提取方式。但是输入特征只有2,那么autoencoder的形状就只有2-1-2,是线性提取。

是否可以设置隐藏节点超过输入的数量并制作堆叠自动编码器,例如2-16-8-1-8-16-2节点?

另外,使用自动编码器进行这种数据集成是一个不错的选择吗?如果没有,有没有更好的解决方案?

【问题讨论】:

  • 寻求指导设计和训练神经网络的问题对于 Stack Overflow 来说是无关紧要的,除非在解决实现细节时,情况似乎并非如此。另请注意,要求示例代码也不是一个好问题。如果您需要自动编码器背后的理论背景方面的帮助,请参阅Cross Validated。如果您在使用 TensorFlow 实现模型时偶然发现了一个具体问题,那么写一个minimal reproducible example 对我们理解这个问题很重要。
  • 感谢您的评论。我同意这是一个适合交叉验证的问题,因为自动编码器的设计是主要问题。我将把它移到交叉验证。

标签: neural-network deep-learning feature-extraction feature-selection autoencoder


【解决方案1】:

为什么这是线性提取?如果您在隐藏层和输出层中使用任何不规则性,您将获得它们之间的非线性关系。您的编码本质上是 sigmoid(Ax + b)。

如果你真的想让你的网络更复杂,我建议在单个神经元层之前使用多个 2 个神经元层。所以像这样的 2 - 2 - 2 - 1 - 2 - 2 - 2 个节点。我看不出有什么理由需要把它变大。

【讨论】:

  • 但我认为,如果两个输入节点之间存在关系,则使用单个节点的单个隐藏层会产生类似于线性 PCA 的结果。另外,我认为简单地添加隐藏层,例如 2-2-1-2-2 不会改变结果,因为更深的隐藏层可能会为每个输入选择相同的权重(0.5 和 0.5)。
  • 但是通过使用非线性作为激活函数,您不会得到线性关系,而是非线性关系。如果您想拥有更复杂的功能,请使用多个 sigmoid。我没有看到先放大信息然后缩小信息的好处。如果您担心不需要使用深度网络,请使用跳过连接。
  • 感谢您的回答。那么你认为这种工作除了自动编码器还有其他更好的选择吗?其实我之前尝试过带内核的t-SNE和PCA,但是autoencoder的性能要好很多。
  • 降维本身就是一个分支。我已经成功地使用度量学习学习了基于数据标签的表示。这自然不适用于回归问题。您可以尝试其他方法,但我认为它们不会产生更好的结果。无论如何,此类技术的评估工作称为:基于感知的多维数据可视化投影方法评估。也许其他方法之一适用于您的用例。
  • 感谢您的建议。我可以再问一个问题吗?我的最终目标是将两个数据集“整合”(或合并)为一个数据集,以进行进一步分析,例如像皮尔逊相关性这样的单变量特征选择更容易。您认为降维技术适合这项工作吗?
猜你喜欢
  • 1970-01-01
  • 2021-05-22
  • 2021-06-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
相关资源
最近更新 更多