Home
avatar

dxk

Softmax简介

介绍

Softmax 函数将一组数字组成的向量 KK 转换成 KK 的概率分布。它用于解决多分布问题。

Argmax 是将向量 KK 转成 1 或 0 常量组成的向量。Argmax 的问题是没法利用结果来优化参数 WWbb,即无法应用反向传播。

用于求预测值时:y^=softmax(o)y^i=exp(oi)j=1Kexp(oj)写成函数形式:σ(o)i=eoij=1Keoj\begin{align*} \mathcal{{\scriptsize 用于求预测值时:} } \\ {\color{Orange} \mathbf{\hat{y}} = softmax(\mathbf{o}) } \\ {\color{Green} \hat{y}_i = \frac{exp(o_i)}{\sum_{j=1}^{K}exp(o_j)} } \\\\\mathcal{{\scriptsize 写成函数形式:} } \\ {\color{Violet} \sigma (o)_i = \frac{e^{o_i} }{\sum_{j=1}^{K}e^{o_j} } } \end{align*}

Softmax 转成的概率分布组成的向量,sum 的结果为 1。

举例

现在有一个对 Iris 进行预测的模型,输入一条数据,经过多层网络后得到:

Setosa 1.43
Versicolor -0.4
Viginica 0.21

此时就可以用激活函数 Softmax,把数据转为 0-1 范围内的概率。

t=e1.43+e0.4+e0.21y^setosa=e1.43t=0.69y^versicolor=e0.4t=0.10y^viginica=e0.21t=0.21\begin{align*} t = e^{1.43} + e^{-0.4} + e^{0.21} \\ \hat{y}_{setosa} = \frac{e^{1.43}}{t} = 0.69 \\ \hat{y}_{versicolor} = \frac{e^{-0.4}}{t} = 0.10 \\ \hat{y}_{viginica} = \frac{e^{0.21}}{t} = 0.21 \end{align*}

为什么使用指数函数

指数函数除了能把值映射到 0-1 范围,还有个优势是它的导数很好计算。

对于第 i 项数据,Softmax 函数的导数是:

yixj={yi(1yi)if i=jyiyjif ij}\frac{\partial y_i}{\partial x_j} = \begin{Bmatrix} y_i (1-y_i) \quad if \space i=j \\ -y_iy_j \qquad if \space i\ne j \end{Bmatrix}

计算过程略。

Softmax