Logsoftmax稳定性

问题描述 投票:2回答:2

我知道如何通过添加元素-max _i x_i来使softmax稳定。这可以避免溢出和下溢。现在,记录这个可能会导致下溢。 log softmax(x)可以评估为零,导致-infinity。

我不知道如何解决它。我知道这是一个常见的问题。我读了几个答案,我不明白。但我仍然对如何解决这个问题感到困惑。

PS:如果你提供一个简单的例子,它会很棒。

numerical softmax underflow numerical-stability
2个回答
2
投票

为了稳定Logsoftmax功能,大多数实现如Tensorflow和Thenao你可以查看由Ian Goodfellow打开的this线程,使用Nemo推荐的相同技巧。这个想法和你提到的Softmax完全一样,它可以形式化如下: 在从提名者和分母中取消exp(b)并知道log(exp(x))=x之后,这个等式变为: 如果我们设置,这个新方程同时具有上溢和下溢稳定性条件。 您还可以查看this链接以获取更多描述。


1
投票
logsoftmax = logits - log(reduce_sum(exp(logits), dim))

参考:https://www.tensorflow.org/api_docs/python/tf/nn/log_softmax

© www.soinside.com 2019 - 2024. All rights reserved.