当使用神经网络进行分类时,可以说:
在TensorFlow中计算softmax交叉熵的方法似乎与以下几行有关:
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction,labels=y))
因此输出可以直接连接到最小化代码,这很好。
我对sigmoid输出的代码,同样基于各种教程和示例,遵循以下方式:
p = tf.sigmoid(tf.squeeze(...))
cost = tf.reduce_mean((p-y)**2)
我原本以为这两个应该在形式上相似,因为它们以几乎相同的方式执行相同的工作,但上面的代码片段看起来几乎完全无法比拟。此外,sigmoid版本明确地平方误差,而softmax不是。 (平面是在softmax的实现中发生的,还是正在发生的其他事情?)
以上其中一项是不正确的,还是有理由说它们需要完全不同?
答案 0 :(得分:1)
Sigmoid的soft-max交叉熵成本和平方损失成本是完全不同的成本函数。虽然它们似乎密切相关,但它不是一回事。
如果作业被定义为“是分类网络的输出层”,那么两个函数都是“做同样的工作”。同样,你可以说“softmax回归和神经网络正在做同样的工作”。确实,这两种技术都试图对事物进行分类,但方式不同。
具有交叉熵成本的Softmax层通常优于具有l2损失的sigmoids。具有交叉熵的Softmax具有其自身的优点,例如输出层的更强梯度和对概率向量的归一化,而具有l2-损失的sigmoids的导数更弱。 您可以在this beuatiful book中找到大量解释。
祝你好运!