神经网络如何权衡不同维度的多个输入/特征?

人工智能 神经网络 深度学习 特征
2021-11-09 08:09:58

我对神经网络如何权衡不同的特征或输入感到困惑。

考虑这个例子。我有 3 个特征/输入:图像、金额和评级。但是,由于一个特征是图像,我需要用非常高的维度来表示它,例如128×128=16384像素值。(我只是以“图像”为例,我的问题适用于任何需要高维表示的特征:字数、单热编码等)

16384代表图像的“特征”完全压倒了其他两个特征,即美元金额和评级?理想情况下,我认为网络会相对平等地考虑三个真实特征中的每一个。这个问题会在训练过程中自然解决吗?训练会变得更加困难吗?

2个回答

如您的示例所述,三个特征是:图像、价格、评级。现在,您想要构建一个使用所有这些特征的模型,最简单的方法是将它们直接输入神经网络,但由于以下原因,它效率低且存在根本缺陷:

  • 在第一个密集层中,神经网络将尝试将原始像素值与价格和评级线性组合,这将产生对推理没有意义的特征。

  • 它可以通过优化成本函数来表现良好,但模型性能将远不及它在良好架构下的表现。

因此,神经网络并不关心数据是原始像素值、价格还是评级:它只会对其进行优化以产生所需的输出。这就是为什么有必要为给定的问题设计一个合适的架构。

您给定示例的可能架构:

  1. 将原始特征(即像素值)和高级数据(即价格和评级)分开

  2. 为原始特征堆叠 2-3 个密集层(以查找图像中的复杂模式)

  3. 堆叠 1-2 个密集层以获得高级特征

  4. 将它们组合在一起形成最终的密集层

如果你想淡化图像的重要性,只需将第一个密集层 16,384 连接到另一个连接较少的层,比如 1024,并从高级数据中获得更多连接,比如 2048。

所以,再一次,这是可能的架构

  1. 原始特征 -> 密集层 (16384) -> 密集层 (1024)
  2. 高级特征 -> 密集层 (2048)
  3. 将 1 和 2 与另一个密集层组合

ssh 的答案是正确的。您的结果可以进一步改进 i) 通过卷积(而不是全连接)架构提取图像特征,以及 ii) 通过利用迁移学习。

为了利用迁移学习,你 i) 选择一些广泛使用的模型,例如。ResNet-18,ii) 使用 ImageNet 预训练参数对其进行初始化,iii) 用您自己随机初始化的全连接层替换其全连接层(产生 1000 维 softmax 输入的层)。如果您有兴趣,请查看详细说明