0%

ML-softmax 理解

softmax 含义

softmax把一些输入映射为0-1之间的实数,并且归一化保证和为1,因此多分类的概率之和也刚好为1。

首先简单理解softmax的含义。顾名思义,softmax由两个单词组成,其中一个是max。对于max我们都很熟悉,比如有两个变量a,b。如果a>b,则max为a,反之为b。
另外一个单词为soft。max存在的一个问题是什么呢?如果将max看成一个分类问题,就是非黑即白,最后的输出是一个确定的变量。更多的时候,我们希望输出的是取到某个分类的概率,或者说,我们希望分值大的那一项被经常取到,而分值较小的那一项也有一定的概率偶尔被取到,所以我们就应用到了soft的概念,即最后的输出是每个分类被取到的概率。

softmax 计算

计算过程如下图
softmx

假设有一个数组V,$ V_i $表示V中的第i个元素,那么这个元素的softmax值为:
$$ s_i = \frac{e^i}{\sum_{j = 1} ^{i}e^j} $$
该元素的softmax值,就是该元素的指数与所有元素指数和的比值。

这个定义可以说很简单,也很直观。那为什么要定义成这个形式呢?原因主要如下。

1.softmax设计的初衷,是希望特征对概率的影响是乘性的。
2.多类分类问题的目标函数常常选为cross-entropy。即 $ L = - \sum_{k} t_k \cdot \ln P(y = k)$,其中目标类的 $ t_k $为1,其余类的$ t_k $为0。

softmax求导

在多分类问题中,我们经常使用交叉熵作为损失函数
$$ Loss = - \sum{t_i} \ln{y_i} $$
其中,$ t_i $表示真实值,$ y_i $表示求出的softmax值。
当预测第i个时,可以认为$ t_i = 1 $。此时损失函数变成了:
$$ Loss_i = −\ln {y_i} $$

接下来对$ Loss $求导。根据定义:
$$ y_i = \frac{e^i} {\sum_j e_j} $$

我们已经将数值映射到了0-1之间,并且和为1,则有:
$$ \frac{e^i} {\sum_j e^j} = 1 - \frac{ \sum_{j \neq i} e^j} { \sum_j e^j} $$

求导