Softmax的简单解释
原文地址
基础介绍Softmax将任意实数值转换为概率,这在机器学习中通常很有用。其背后的数学非常简单:给定一些数字,
将它们作为 e) (一个数学常数) 的幂加总所有以e为底的指数,结果作为分母每个单独指数为分子概率等于分子除以分母更确切地说,Softmax对n个给定的$x_1 \ldots x_n$数字作以下转换 :
$$
s(x_i) = \frac{e^{x_i}}{\sum_{j=1}^n e^{x_j}}
$$
输出始终在$[0, 1]$之间,并且加总为0.因此,它们形成一个概率分布。
例子假设我们有数字-1、0、3和5。首先,我们计算分母:
$$
\begin{aligned}
\text{分母} &= e^{-1} + e^0 + e^3 + e^5 \\
&= \boxed{169.87} \\
\end{aligned}
$$
然后,我们可以计算分子和概率:
$x$分子 ($e^x$)概率 ($\frac{e^x}{169.87}$)-10.3680.002010.006320.090.1185148.410.874x越大,概率越高。另外请注意,所有概率加起来为1.
在Python中实现Softmax使用 numpy 实现起来非常容易:
import numpy as np
def softmax(xs):
return np.exp(xs) / sum(np.exp(xs))
xs = np.array([-1, 0, 3, 5])
print(softmax(xs)) # [0.0021657, 0.00588697, 0.11824302, 0.87370431]np.exp() 将xs作为幂,e作为低
为什么Softmax如此有用?想象建立一个 神经网络 来回答这个问题: 这张照片是狗还是猫?
该神经网络的一种常见的设计是:它输出2个实数,一个表示小狗,另一个表示猫猫,并应用Softmax处理这些值。例如,假设网络输出 $[-1, 2]$:
动物$x$$e^x$Probability概率狗-10.3680.047猫27.390.953这意味着我们的网络有95.3%的置信度相信图片是猫。Softmax让我们用概率回答分类问题,比简单的答案(例如,二进制是/否)更有用。
版权属于:作者名称
本文链接:https://www.sitstars.com/archives/45/
转载时须注明出处及本声明