神经网络:对于二进制分类,使用1或2个输出神经元?


26

假设我要进行二进制分类(属于A类或B类)。在神经网络的输出层中可以执行以下操作:

  • 使用1个输出节点。输出0(<0.5)被视为A类,输出1(> = 0.5)被视为B类(在S型情况下)

  • 使用2个输出节点。输入属于具有最高值/概率(argmax)的节点的类别。

是否有书面论文对此进行了讨论?要搜索哪些特定关键字?

这个问题已经在此站点上问过,例如,看到此链接时没有真实答案。我需要做出选择(硕士论文),因此我想深入了解每种解决方案的优点/缺点/局限性。


我认为链接问题的OP有一个优点,唯一的区别是选择2的参数数量更多,更灵活但更容易过度拟合。
dontloo '16

1
在Udacity ML Nanodegree中,我了解到,如果结果互斥,则最好使用一个输出节点,这仅仅是因为网络具有较少的错误。我认为在那种情况下使用2个输出节点没有任何优势,但我
对此

Answers:


25

在第二种情况下,您可能正在写有关softmax激活功能的文章。如果是这样,那么乙状结肠只是softmax函数的一种特殊情况。这很容易显示。

y=11+ex=11+1ex=1ex+1ex=ex1+ex=exe0+ex

如您所见,乙状结肠与softmax相同。您可以认为您有两个输出,但是其中一个输出的所有权重均等于零,因此其输出将始终等于零。

因此,对于二进制分类,更好的选择是使用一个具有Sigmoid的输出单元,而不是使用具有两个输出单元的softmax,因为它将更新得更快。


当您说其中一个权重全部为零时,您是说模型在训练期间甚至没有考虑其中一个权重吗?实际上,我们是否可以仅使用一类训练数据来训练该二进制分类器?
死代码

x>0x<0x0

1
请注意,存在退化形式的解决方案exp(x+alpha) / (exp(alpha) + exp(x+alpha))-实际上有无限数量的形式-与权重全为0的所有结果都具有相同的分类结果。权重可能不会训练为全零,而是会训练为退化权重全为0的解。通过仅使用一个输出神经元来避免(毫无意义和浪费)退化的解。
Dan Nissenbaum

2

机器学习算法(例如分类器)在此通过确定属于不同类别的输入的概率对输入数据进行统计建模。对于任意数量的类,通常在模型上附加一个softmax层,因此,根据设计,输出将具有概率属性:

y=softmax(a)1ieai×[ea1,ea2,...,ean]

0yi1 for all i
y1+y2+...+yn=1

a

这对于两个类别完全有效,但是,只要其输出满足以下条件,就可以使用一个神经元(而不是两个):

0y1 for all inputs.
ay

sigmoid(a)σ(a)11+ea

有用的数学属性(微分,0和1之间的界线等),计算效率以及具有合适的斜率,以使更新网络的权重对于优化目的而言,输出的变化很小但可测量。

结论

我不确定@itdxer的显示softmax和sigmoid的推论是否有效,但是他对于二分类器选择1个神经元而不是2个神经元是正确的,因为需要较少的参数和计算。由于“它是多余的”,我也因使用两个神经元进行二进制分类而受到批评。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.