优秀外文博文搬运 + 翻译
原作者: Victor Zhou
链接: asimpleexplanationofthesoftmaxfunction @ victorzhou
本文为了转载翻译内容,文章内容的版权归原作者所有
本文翻译已获得原作者授权
以下为翻译内容(斜体加粗部分为博主补充内容,非原文内容):
什么是软件最大? 怎么用? 如何在Python上实现Softmax?
Softmax将任意实数转换为概率,常用于机器学习。
Softmax函数背后的数学原理很简单。这里作者的描述有点点不是很能理解,直接上公式吧:
对于n n n个数字的输入,Softmax对每个数字处理如下:
s(xI ) s(xI ) j=1nexjs(x_I ) ) FRAC ) e^{x_I}}{_sum_{j=1}^ne^{x_j}}s ) Xi ) ) j=
Softmax变换输出后的结果始终在[ 0,1 ]的范围内,所有结果的和为1,因此表示概率分布。
在一个简单的示例中,假设有几个数字-1、0、3和5。 我们先计算一下分母。 denominator :
dnominator=E1 E0 e3e5=169.87 denominator=e ^ {-1 } e ^ 0e ^ 3e ^5=boxed { 169.87 } denominator=E1 E0 e3e5=169.87
然后,分别计算分子和概率。
XXX编号器(exe ^ xex )概率) ex169.87(FRAC ) e ^ x 169.87 ex )-10.3680.002010.006320.090.1185148
要在Python上实现Softmax,很容易在Numpy模块上实现:
import numpy as np# np.exp ()是输入数组中的每个数字defsoftmax(xs ) : return NP.exp (xs )/sum (NP.exp ) xs ) ) xs=NP.axp 0.11824302,0.87370431 )注:对于许多高级朋友来说,可以在LogSumExp中实现此函数,以避免出现停机/上溢问题
为什么Softmax有用? 想象一下,为了解决问题,有必要建立神经网络。 图中的动物是猫还是狗?
该神经网络最常见的设计是输出两个实数,一个是狗,另一个是猫,并将这两个数扔给Softmax。 例如,我们的神经网络的输出是[-1,2 ] :
动物x x x e x e^x ex概率狗-10.3680.047猫27.390.953这意味着我们网络上有95.3% 的信心认证图上的动物是猫。
与简单地回答yes或no相比,Softmax可以使用概率来回答分类问题。 (实际上在非 binary classification ,即分类超过两种以上的问题中,我们经常用 softmax 来确定结果)