神经网络中的分类特征值

Posted

技术标签:

【中文标题】神经网络中的分类特征值【英文标题】:categorical feature value in Neural Networks 【发布时间】:2018-10-22 02:28:13 【问题描述】:

假设一个神经网络 (NN),其中每个训练示例都有一堆特征,其中一个特征是性别信息(男性或女性)。

因为它是一个分类数据,我经常看到类似的东西:

If male, gender = 0
If female, gender = 1

当 NN 由输入特征馈送时,如果性别 = 男性,则 (gender x any_weight) 的结果将始终为 0。如果性别 = 女性,则 (gender x any_weight) 将等于权重值。

在我看来,反向传播更新权重的能力会受到某种限制,因为无论您如何更改权重,如果性别 = 男性,(gender x any_weight) 将一直​​为 0。

从这个角度来说,听起来更好:

If male, gender = 1
If female, gender = 2

这样,我们确保 (gender x any_weight) 的结果不会是 0。

但我可能会在这里遗漏某些东西,因为我一直看到分类(在大多数情况下)似乎从 0 开始。 也许在这里有更多经验的人可以更好地澄清它并解释我在这里误解了什么?

使用 0 和 1 是否与使用 1 和 2 相同?或者如果没有,我们应该选择哪一个?

【问题讨论】:

【参考方案1】:

分类数据通常使用 one-hot 编码进行编码。因此,在您的情况[1,0] if male else [0,1] 中,您可以考虑在给定索引处只有 1 的零向量。由于这些不同的“路径”,权重将根据您拥有的功能被激活,从而使网络相对更容易使用这些功能。另一种方式是使用 -1 和 1 对其进行编码,standardising data 还有其他方式。

要回答您的问题,就多层感知器而言,这无关紧要,当输入为 0 时,权重确实不会更新,但隐藏层会被调整以识别,通过识别我的意思是您仍然有可以补偿 0 输入的偏差(感谢您的评论)。同样,当输入为 1,2 时,权重会调整以区分它们。对于二进制数据,-1,1 可以很好地工作,因为它就像任何权重的开关一样。我建议你尝试一下你的想法,看看会发生什么,有很好的demos online。

【讨论】:

有趣的是,即使权重乘以零,也总是存在“偏差”的影响。因此,偏见将对男性发挥重要作用,而权重将弥补对女性的偏见。 感谢您的回答。上面的两个答案都非常有意义。考虑到偏差的影响,将其设置为 0 和 1 应该没有什么坏处。但是对于性别 = 0 的情况,权重的值仍然没有用。然后我还想知道一件事。如果输入特征的很大一部分是分类的(设置为 0 或 1(可能是 2)),您认为我们如何设置输入特征(如 0、1、2 或1,2,3) 会对 NN 的性能产生影响(即它的学习速度或与每层中相同的 # 个隐藏层和单元的收敛程度如何)? 如果你有超过 2 个类,那么 one-hot 或变体会产生很大的不同。当您只有 1,2,3 时,您的隐藏层必须学习如何将输入空间分成 3 个子空间,而使用 one-hot 他们只需要“选择”一个您已经分离成不同权重的特征。 非常感谢您的进一步澄清。很有价值!

以上是关于神经网络中的分类特征值的主要内容,如果未能解决你的问题,请参考以下文章

用于分类的深度学习网络

Python 音频信号分类 MFCC 特征神经网络

论文笔记-卷积神经网络中的感受野

应该在神经网络中的 dropout 层之前还是之后进行特征嵌入?

从朴素贝叶斯分类到贝叶斯网络

文本分类任务简介