为什么使用 softmax 而不是将每个激活除以总和?

人工智能 神经网络 激活函数
2021-10-18 12:08:29

只是想知道为什么在实践中通常在大多数神经网络的输出上使用 softmax,而不是仅仅对激活求和并将每个激活除以总和。我知道这大致相同,但是 softmax 背后的数学推理是什么而不是正常求和?在某些方面更好吗?

1个回答

可能有多种不同的解释和推理,但我可以为您提供一种。如果您的输出向量包含负值,则获得与概率相关的内容(所有分量为正,总和为1) 你不能按照你的建议去做,因为你可能会得到一个没有意义的负概率。在这种情况下,softmax 中使用的指数函数的良好特性是它不能给出负值,所以不管你的输出向量如何,你永远不会得到负概率。

您可以建议添加一些正偏移向量d到您的输出向量以摆脱负值,但有几个问题。首先,您无法提前知道负输出值的范围,因此您可以知道使用什么偏移向量来覆盖所有可能的情况。其次,在某些情况下,使用这种策略可能会得到不切实际的结果。例如让我们假设输出向量是[0.1,0.2,0.3]T和偏移向量是[0.1,0.1,0.1]T. 如果你把这两个加起来,你会得到[0,0.3,0.4]T. 头等舱的概率是0因为分子是0. 这是非常自信的结果,我们可能不希望得到结果0对于这堂课。结果将根据偏移矢量而改变。假设现在的偏移向量是[0.3,0.3,0.3]T. 偏移向量和输出向量相加得到[0.2,0.5,0.6]. 在这种情况下,头等舱的概率现在是0.2/(0.2+0.5+0.6)=0.15. 我们看到改变偏移向量会改变概率的值并作为偏移向量的组成部分所有类别的概率0.33. 无论向量值的大小如何,我们都可能希望获得相同的结果,我们只关心它的相对关系。softmax 的另一个优点是它是移位不变的

pi=exi+dj=1nexj+d=edexiedj=1nexj=exij=1nexj
所以我们看到概率i-th 分量独立于偏移向量。显然,softmax 并不关心值的规模,它设法捕获组件的相对关系。