我不熟悉深度学习,所以这可能是一个初学者的问题。 据我所知,多层感知器中的softmax函数负责每个类的归一化和分布概率。 如果是这样,为什么我们不使用简单的规范化?
让我们说,我们得到一个向量x = (10 3 2 1)
应用softmax,输出将为y = (0.9986 0.0009 0.0003 0.0001)
。
应用简单规范化(将每个元素除以sum(16)
)
输出将为y = (0.625 0.1875 0.125 0.166)
。
似乎简单的规范化也可以分配概率。 那么,在输出层使用softmax函数有什么好处呢?
答案 0 :(得分:2)
规范化并不总是产生概率,例如,当您考虑负值时,它不起作用。或者如果值的总和为零会怎么样?
但是使用logits的指数变化,理论上它永远不会为零,并且它可以将整个范围的logits映射到概率。因此它是首选,因为它确实有效。
答案 1 :(得分:1)
这取决于训练损失功能。许多模型都使用 log loss 算法进行训练,因此您在该向量中看到的值估计每个概率的 log 。因此, SoftMax 只是转换回线性值并进行标准化。
经验理由很简单: SoftMax 用于产生更好结果的地方。