这是多类回归的一个很好的对数损失吗?
Posted
技术标签:
【中文标题】这是多类回归的一个很好的对数损失吗?【英文标题】:Is this a good log loss for multiclass regression? 【发布时间】:2017-04-08 05:08:53 【问题描述】:我有多个类要同时预测,因此我将问题视为对作为真实输出的二进制标签/类的非线性回归。
也就是说,损失函数是每个标签的对数损失的总和,然后对批次中的每个示例进行平均。这是我的损失函数:
prediction = tf.sigmoid(hidden_out) # Prediction output, from 0.0 to 1.0
# Avoid infinite gradients for extreme cases
# by remapping the prediction from 0.005 to 0.995:
pred = prediction*0.99+0.005
# Log loss: mean is on batch_size, sum is on labels:
loss = tf.reduce_mean(
tf.reduce_sum(
- labels*tf.log(pred) - (1.0-labels)*tf.log(1.0-pred),
reduction_indices=1
)
)
我怀疑这有什么问题。我正在尝试训练一个带有残差初始层的深度卷积神经网络。我以低学习率快速获得了一些 NaN
损失值。
我的日志丢失是否正确?有什么建议吗?
【问题讨论】:
【参考方案1】:您可以使用已经为多类逻辑回归实现的损失来代替您的损失:sigmoid_cross_entropy_with_logits。它经过精心设计以避免出现数值问题。
此外,与裁剪预测相比,裁剪渐变可能会更好。例如,请参阅here。
【讨论】:
哦,非常感谢!我以为这个损失函数只存在于softmax
xent的API中。以上是关于这是多类回归的一个很好的对数损失吗?的主要内容,如果未能解决你的问题,请参考以下文章