什么是Softmax,本文是对Softmax函数的简单解释。什么是Softmax,如何使用它,以及如何在Python中实现它。
Softmax将任意实值转换为概率,这在机器学习中通常很有用。它背后的数学原理很简单:给定一些数字,
- 取e(数学常数)的每一次方。
- 把所有的指数(e的幂)加起来。这个结果是分母。
- 用每个数的指数作为它的分子。
- Probability=
写得更妙的是,Softmax对n个数字,,…执行以下转换:
s() =
Softmax变换的输出总是在[0,1]范围内,并且加起来等于1。因此,它们形成一个概率分布。
一个简单的例子
假设我们有数字-1,0,3和5。首先,我们计算分母(Denominator):
Denominator = + + + = 169.87
然后,我们可以计算分子和概率:
x越大,其概率越大。同样,注意概率加起来都是1,如前所述。
用Python实现Softmax
使用numpy使这个超级简单:
np.exp()将e的幂提高到输入数组中每个元素的幂。
为什么Softmax有用?
想象一下建立一个神经网络来回答这个问题:这是一张狗还是猫的图片?
该神经网络的一个常见设计是输出两个实数,一个表示狗,另一个表示猫,并对这些值应用Softmax。例如,假设网络输出[-1,2]:
这意味着我们的网络对这张猫的图片有95.3%的信心。Softmax让我们用概率回答分类问题,这比简单的答案(例如二进制的yes/no)更有用。