最近看深度学习图像分类的相关知识的时候,发现对于Softmax损失函数的相关概念没有搞明白,因此讲设计到的相关知识一些梳理,供大家参考。
本文以CIFAR-10数据集图片分类任务为例展开,定义第 i 个输入样本xi ,输出 yi ,图片共有10类( k=0,1,...,c,c=9 )
Logistic Regression作为经典的二分类问题(样本label为0或1)的分类器,本质是通过Sigmoid函数将输入向量 x 映射到样本属于正负样本的概率值:
上面介绍的是二分类的问题,可以用Logistic Regression解决,对于多分类问题,例如CIFAR-10图像分类问题,就需要多输出的Softmax函数形式。
以CIFAR-10数据集为例,最终网络输出层 y 一定是10个节点,分布代表10个类别,由于输出层一般是前一层通过全连接得到,那么y∈R1×10 ,Softmax作用就是将连续值 y 通过归一化转换为概率值:
注:多个二分类的Logistic Regression也可以达到多分类,我们判断选择Softmax还是Logistic Regression的标准是样本的label是否存在重叠,例如判断人的种族两种方法都可以,因为一个人只可能属于一种种族;但是判断图片风格(风景照、户外照、室内照、人物照)则只能用Logistic Regression,因为一张照片可能属于多类。
为了更好得理解Softmax Loss,可以从交叉熵角度直观思考。首先,交叉熵是用来表述真实样本概率分布 p 和预测样本概率分布q=P(y|x) 的差异度:
Softmax Loss和其他机器学习任务中用到的都是 DK,L(p∥q) 相对熵的概念,而不是交叉熵
以CIFAR-10图像分类任务为例,假设第i个样本图片属于第j类,即 pi=(0,0,…,1,0…,0) ,而经过Softmax得到的 q 的形式为qi=efyi/∑kefk,K=0,1,…,9 , 显然q中的都为[0,1]的值,最理想的情形就是 p=q ,说明模型不仅分类正确,而且置信度100%,那么Loss应该0,否则q和p差的越大那么Loss应该越大。
w我们将 DK,L(p∥q) 继续化简: