为什么需要 softmax 函数?为什么不简单归一化?
Why is softmax function necessory? Why not simple normalization?
我不熟悉深度学习,所以这可能是一个初学者问题。
在我的理解中,多层感知器中的 softmax 函数负责每个 class 的归一化和分布概率。
如果是这样,我们为什么不使用简单的归一化?
比方说,我们得到一个向量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函数有什么好处呢?
这取决于训练损失函数。许多模型都使用 log loss 算法进行训练,因此您在该向量中看到的值估计每个概率的 log。因此,SoftMax 只是转换回线性值并归一化。
经验原因很简单:SoftMax 用于产生更好结果的地方。
归一化并不总是产生概率,例如,当您考虑负值时它不起作用。或者如果值的总和为零怎么办?
但是使用 logits 的指数改变了这一点,理论上它永远不会为零,并且它可以将 logits 的整个范围映射到概率中。所以它是首选,因为它确实有效。
我不熟悉深度学习,所以这可能是一个初学者问题。 在我的理解中,多层感知器中的 softmax 函数负责每个 class 的归一化和分布概率。 如果是这样,我们为什么不使用简单的归一化?
比方说,我们得到一个向量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函数有什么好处呢?
这取决于训练损失函数。许多模型都使用 log loss 算法进行训练,因此您在该向量中看到的值估计每个概率的 log。因此,SoftMax 只是转换回线性值并归一化。
经验原因很简单:SoftMax 用于产生更好结果的地方。
归一化并不总是产生概率,例如,当您考虑负值时它不起作用。或者如果值的总和为零怎么办?
但是使用 logits 的指数改变了这一点,理论上它永远不会为零,并且它可以将 logits 的整个范围映射到概率中。所以它是首选,因为它确实有效。