Tensorflow 神经网络中的分类特征值

Tensorflow 神经网络中的分类特征值,tensorflow,machine-learning,neural-network,keras,convolutional-neural-network,Tensorflow,Machine Learning,Neural Network,Keras,Convolutional Neural Network,假设一个神经网络(NN),其中每个训练示例都有一组特征,其中一个特征是性别信息(男性或女性) 由于这是一个分类数据,我一直看到这样的情况: If male, gender = 0 If female, gender = 1 当NN由输入特征输入时,如果性别=男性,则(性别x任意_权重)的结果将始终为0。如果性别=女性,则(性别x任何重量)将等于重量值 在我看来,反向传播更新权重的能力在某种程度上会受到限制,因为无论你如何更改权重,(性别x任何_权重)如果性别=男性,将继续给出0 从这个角度来看

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

由于这是一个分类数据,我一直看到这样的情况:

If male, gender = 0
If female, gender = 1
当NN由输入特征输入时,如果性别=男性,则(性别x任意_权重)的结果将始终为0。如果性别=女性,则(性别x任何重量)将等于重量值

在我看来,反向传播更新权重的能力在某种程度上会受到限制,因为无论你如何更改权重,(性别x任何_权重)如果性别=男性,将继续给出0

从这个角度来看,说:

If male, gender = 1
If female, gender = 2
通过这种方式,我们确保(性别x任意_权重)的结果不会为0

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


使用0和1是否与使用1和2相同?如果不是,我们应该选择哪一种?

分类数据通常使用一种热编码。因此,在你的例子中,
[1,0]如果你还有[0,1]
,你可以想象一个在给定索引处只有1的零向量。由于这些不同的“路径”,权重将根据您拥有的功能激活,从而使网络使用这些功能相对容易。另一种方法是使用-1和1对其进行编码,还有其他方法


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

有趣的是,记住,即使权重乘以零,也总是有“偏差”的贡献。因此,偏见将对男性起重要作用,而体重将补偿女性的偏见。谢谢你的回答。以上两个答案都很有道理。考虑到偏见的影响,将其设置为0和1应该没有什么坏处。但对于性别=0的情况,权重值仍然是无用的。我还想知道一件事。。如果很大一部分输入特征是分类的(设置为0或1(可能是2)),您认为我们如何设置输入特征(如0、1、2或1、2、3)会对NN的性能产生影响(即它学习的速度有多快,或者它在每一层中收敛到相同的隐藏层和单位有多好)?当您有两个以上的课程时,一个热门或变体会产生很大的差异。当你只有1,2,3时,你的隐藏层必须学习如何将输入空间分割成3个子空间,而对于一个热点,它们只需要“选择”一个你已经分离成不同权重的功能。非常感谢进一步的澄清。非常宝贵!