假设一个神经网络(NN),其中每个火车示例都有一堆特征,其中一个特征是性别信息(男性或女性)。
由于这是一个分类数据,我不断看到如下内容:
If male, gender = 0
If female, gender = 1
当NN由输入要素输入时,如果性别=男性,则(性别x any_weight)的结果将始终为0。如果性别=女性,(性别x any_weight)将等于权重值。
在我看来,反向传播更新权重的能力会受到某种程度的限制,因为无论你如何改变体重,(性别x any_weight)如果性别=男性就会继续给予0。
从这个角度来看,这听起来更好一点:
If male, gender = 1
If female, gender = 2
通过这种方式,我们确保(性别x any_weight)的结果不会为0.
但我可能会在这里失踪,因为我一直看到分类(在大多数情况下)似乎从0开始。 也许在这里有更多经验的人可以更好地澄清它并解释我在这里误解的内容?
使用0和1与使用1和2相同吗?或者如果没有,我们应该选择哪一个?
答案 0 :(得分:3)
分类数据通常使用单热编码进行编码。因此,在您的情况[1,0] if male else [0,1]
中,您可以想到一个零向量,在给定索引处只有1。作为这样的不同“路径”,权重将根据您使用的功能激活,使网络使用这些功能相对容易。另一种方法是使用-1和1对其进行编码,还有其他方法standardising data。
要回答你的问题,就多层感知器而言,它应该无关紧要,当输入为0时,权重确实不会更新,但隐藏的层将被调整以识别,通过识别我的意思是你仍然有偏见来补偿0输入(感谢评论)。类似地,当输入为1,2时,权重将调整以区分它们。对于二进制数据,-1,1很好地工作,因为它像任何重量的开关一样。我建议你尝试一下你的想法,看看会发生什么,有很好的demos online。