您的位置:首页 > 运维架构

关于Logistic Regression、Softmax Loss和Cross-entropy的随笔

2017-04-29 15:56 661 查看
最近看深度学习图像分类的相关知识的时候,发现对于Softmax损失函数的相关概念没有搞明白,因此讲设计到的相关知识一些梳理,供大家参考。

本文以CIFAR-10数据集图片分类任务为例展开,定义第i 个输入样本xi ,输出yi ,图片共有10类(k=0,1,...,c,c=9)

Logistic Regression

Logistic Regression作为经典的二分类问题(样本label为0或1)的分类器,本质是通过Sigmoid函数将输入向量 x 映射到样本属于正负样本的概率值:

P(y=1|x)=f(x)=11+e−x

P(y=0|x)=1−f(x)

那么样本x 属于观测值的概率值即为:

p(y|x)=f(x)y+(1−f(x))1−y

显然我们希望上式最大,即函数输出尽可能接近于真实label,那么假设有m 样本,并假设独立同分布(这在机器学习的一般问题中是成立的,因为样本已经给定,他们互不影响),那么m 个样本的联合分布(可以理解为m 个样本都分类正确的概率)即为:

L(θ)=∏i=1mp(yi|xi)

Logistic Regression核心的思想是最大似然估计显然希望上式最大,即等价于lnL(θ) 最大,即等价于−lnL(θ) 最小,这就得到了Andrew Ng课程中的损失函数形式:

Softmax (Loss)

上面介绍的是二分类的问题,可以用Logistic Regression解决,对于多分类问题,例如CIFAR-10图像分类问题,就需要多输出的Softmax函数形式。

以CIFAR-10数据集为例,最终网络输出层y 一定是10个节点,分布代表10个类别,由于输出层一般是前一层通过全连接得到,那么y∈R1×10 ,Softmax作用就是将连续值y 通过归一化转换为概率值:

P(yi|x)=∑kefyiefi

上式中yi 代表第i 个样本的真实类别P(yi|x)就代表了网络对于输入样本属于每一类别赋予的概率值,最大值所属的类别即是该输入样本的类别。第i个样本的损失函数可以定义为:

Li=−log(efyi∑kefk)

对于m个样本的总体Loss可以写成:

Li=−1m[∑i=1n∑k=c1(y=k)log(efyi∑kefk)]

关于Logistic Regression和Softmax Loss的优化问题这里就不展开了,具体可以参考UFLDL教程

注:多个二分类的Logistic Regression也可以达到多分类,我们判断选择Softmax还是Logistic Regression的标准是样本的label是否存在重叠,例如判断人的种族两种方法都可以,因为一个人只可能属于一种种族;但是判断图片风格(风景照、户外照、室内照、人物照)则只能用Logistic Regression,因为一张照片可能属于多类。

Cross-entropy

为了更好得理解Softmax Loss,可以从交叉熵角度直观思考。首先,交叉熵是用来表述真实样本概率分布p 和预测样本概率分布q=P(y|x) 的差异度:

H(p,q)=−∑p(x)logq(x)

也可以写成:

H(p,q)=H(p)+DK,L(p∥q)

其中H(p) 是p=(0,0,…,1,0…,0) 的熵(显然值为0),DK,L(p∥q) 为相对熵/KL散度,我们的目标是最小化DK,L(p∥q) 。

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) 继续化简:

DK,L(p∥q)=H(p,q)−H(p)=−∑p(x)logq(x)+∑p(x)logp(x)=−∑p(x)logp(x)/q(x)

然后把上式的p(x) 和q(x) 替换成efyi 和efi 就得到Softmax Loss的表达式啦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: