深度学习中的Softmax函数
深度学习中的Softmax函数
1. 回归与分类
在深度学习中,有回归和分类这两类问题。回归问题预测的是一个连续值,比如预测房价;而分类问题输出的是多个值,输出i就代表将结果预测为i的置信度。


2. 对类别进行编码
\[\bm{y}=[y_1,y_2,...,y_n]^T
\]
\[y_i=\left\{
\begin{matrix}
1 \ if \ i=y \\
0 \ otherwise
\end{matrix}
\right.
\]
比如,一共有5个类别,那么第一个类别的编码就是[1,0,0,0,0],第二个类别是[0,1,0,0,0],以此类推。假设现在神经网络得到的各个类别的预测值分别是 o1, o2, o3, 那么就选择置信度最大的值作为预测值:
\[\hat{y}=\underset {i}{argmax} \ o_i
\]
一个好的分类网络应该要让正确类别获得的置信度远远大于其他类别。
3. 指数化和归一化
我们希望输出的每个类别的置信度能够表示成概率的形式(代表结果匹配某一类别的概率),这就要求每一个类别得到的“分数”和为1且非负。可以使用以下这一公式将置信度转换为概率:
\[\bm{\hat y}=softmax(\bm o)
\]
\[\hat {y}_i=\frac{exp(o_i)}{\sum_k exp(o_k)}
\]
那么自然就需要将概率\(\bm{y}\)和\(\hat y\)之间的区别作为损失函数。
4. 交叉熵损失函数
如何衡量两个概率之间的差别呢?一般我们用交叉熵来做这件事。交叉熵的定义:
\[H(\bm p,\bm q)= \underset {i} \sum -p_i log(q_i)
\]
其中,\(p_i\)和\(q_i\)代表了两个不同的概率。
那么将\(y_i\)和\(\hat y_i\)代入上式,就可以得到这两个概率向量之间的区别,将其作为损失函数,如下所示:
\[l(\bm y, \bm{\hat y})= - \sum_i y_i log \hat y_i = -log \hat y_y
\]
-
因此,Softmax回归是一个多类别的分类模型
-
使用Softmax操作子可以得到每个类的预测置信度
-
使用交叉熵来度量预测和标号的区别

浙公网安备 33010602011771号