关于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)
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课程中的损失函数形式:
以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,因为一张照片可能属于多类。
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的表达式啦。
本文以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的表达式啦。
相关文章推荐
- 学习Caffe(五)浅析softmax cross entropy loss与sigmoid cross entropy loss
- SVM hinge loss / SoftMax cross entropy loss
- Caffe softmax_cross_entropy_loss_layer.cpp
- 2线性分类器基本原理-2.3线性分类器之SoftMax和交叉熵损失(Cross-Entropy)
- 人脸识别:损失函数之softmax loss和cross entropy Loss
- 解决 tensorflow softmax_cross_entropy_with_logits() 报错 Only call `softmax_cross_entropy_with_logits`
- Tensorflow 交叉熵计算 sparse_softmax_cross_entropy_with_logits softmax_cross_entropy_with_logits
- ValueError: Only call `softmax_cross_entropy_with_logits` with named arguments (labels=..., logits=.
- F1 score | why softmax | loglikehood & cross-entropy
- ValueError: Only call `softmax_cross_entropy_with_logits` with named arguments (labels=..., logits=.
- ValueError: Only call `softmax_cross_entropy_with_logits` with named arguments (labels=..., logits=.
- 谈谈Softmax loss
- 关于Caffe之Contrastive + Softmax在MNIST上的实验
- 基于Caffe的Large Margin Softmax Loss的实现(上)
- 【论文笔记】Large-Margin Softmax Loss for Convolutional Neural Networks
- 关于Caffe之Contrastive + Softmax在CASIA-WebFace上的实验
- CS231n Putting it together: Minimal Neural Network Case Study —— nn with softmax loss
- 《Large-Margin Softmax Loss for Convolutional Neural Networks》
- Softmax vs. Softmax-Loss: Numerical Stability
- 阅读小结:Large-Margin Softmax Loss for Convolutional Neural Networks