【问题标题】:In a feedforward neural network, am I able to put in a feature input of "don't care"?在前馈神经网络中,我可以输入“不关心”的特征输入吗?
【发布时间】:2018-01-05 13:51:58
【问题描述】:

我在 Java 中使用 DL4J 创建了一个前馈神经网络。

为了简单起见,假设这个神经网络是正方形和圆形的二元分类器。

输入,一个特征向量,将由... 5 个不同的变量组成:

[number_of_corners,
number_of_edges,
area,
height,
width]

到目前为止,我的二元分类器可以很好地区分这两个形状,因为我给了它一个完整的特征向量。

我的问题:是否可以只输入这些特征中的 2 或 3 个?甚至1?我知道这样做时结果会不太准确,我只需要能够这样做。

如果可以,怎么做?

对于输入向量中有 213 个不同特征的神经网络,我该如何做?

【问题讨论】:

  • 您是否有一些数据向量缺少特征的场景?
  • 用于训练、验证和测试神经网络的所有数据都是完全完整的,因为输入向量中的所有特征都存在并且具有有意义的值。但是,我的网络的另一个可能用例确实涉及对缺少某些字段的数据进行分类

标签: machine-learning neural-network artificial-intelligence


【解决方案1】:

例如,假设您知道area、height 和width 功能(因此您不知道number_of_corners 和number_of_edges 功能)。

如果您知道一个形状最多可以有 10 个角和 10 个边,您可以输入 10 个具有相同面积、高度和宽度的特征向量,但每个向量的 number_of_corners 值不同和number_of_edges 功能。然后你可以对网络的 10 个输出取平均值,然后四舍五入到最接近的整数(这样你仍然得到一个二进制值)。

同样,如果您只知道area 功能,您可以在给定输入值的几个随机组合的情况下对网络的输出进行平均,其中唯一的固定值是area,其他所有值都不同。 (即area 特征对于每个向量都是相同的,但每个其他特征都有一个随机值。)

这可能是一个“技巧”,但我认为随着(几乎)随机向量数量的增加,平均值会收敛到一个值。

编辑

如果您有很多功能,我的解决方案将不是一个好的选择。在这种情况下,您可以尝试使用 Deep Belief Network 或一些自动编码器来推断给定少量其他特征的值。例如,一个 DBN 可以“重建”一个嘈杂的输出(当然,如果你训练得足够);然后,您可以尝试将重构的输入向量提供给您的前馈网络。

【讨论】:

  • 这个解决方案适用于我所描述的简单神经网络。对于计算复杂性使事情几乎不可能的更复杂的神经网络,如何做到这一点?例如,我的实际神经网络是一个基于 213 个不同特征的二元分类器,其中一些特征的值本质上是布尔值 (0, 1),而其他特征的值是 0 到 7 位之间的任何位置的两倍
  • 如果输入向量比较复杂,那么如果你想得到一个好的平均值,恐怕实现我的解决方案的唯一方法就是增加输入评估的数量。
  • 所以在 213 个功能的情况下,我的解决方案很可能不是一个好的解决方案 :)
  • 在给定 M 总数中的 N 个特征的情况下推断其他特征的值几乎正是我想要做的。 dbn 可以很好地进行二进制分类吗?鉴于我的变量是已在 0 和 1 之间归一化的完全数字连续数,我将用什么填充其他向量以避免 NullPointerException?该字段的平均值?
  • DBN 并非用于分类,而是用于“重构”(可以说 DBN 是 生成 模型,而前馈网络是 判别式 模型——尝试用谷歌搜索这些术语以了解更多信息)。但是,在生成输入的重建后,您可以将其传递给二进制分类器。因此,您将拥有:[输入向量] -> DBN -> [重构输入向量] -> FFNN -> 二进制结果
猜你喜欢
  • 2018-10-20
  • 2015-12-23
  • 2015-05-16
  • 2011-07-30
  • 2019-06-22
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
  • 2019-11-04
相关资源
最近更新 更多