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

最近看深度学习图像分类的相关知识的时候,发现对于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+ex

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

那么样本 x 属于观测值的概率值即为:
p(y|x)=f(x)y+(1f(x))1y

显然我们希望上式最大,即函数输出尽可能接近于真实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个类别,由于输出层一般是前一层通过全连接得到,那么yR1×10 ,Softmax作用就是将连续值 y 通过归一化转换为概率值:

P(yi|x)=kefyiefi

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

Li=log(efyikefk)

对于m个样本的总体Loss可以写成:
Li=1m[i=1nk=c1(y=k)log(efyikefk)]

关于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(pq)

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

Softmax Loss和其他机器学习任务中用到的都是 DK,L(pq) 相对熵的概念,而不是交叉熵

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

DK,L(pq)=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的表达式啦。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: LogisticRegression()是一种机器学习模型,它可以用于对分类问题进行训练和预测,它使用sigmod函数来拟合数据,用来预测分类结果。smf.logit是一种统计模型,它使用逻辑回归方法来拟合数据,用来预测分类结果。两者之间的区别在于,LogisticRegression()是一种机器学习模型,而smf.logit是一种统计模型,其中LogisticRegression()会使用更多的数据和复杂的算法来拟合数据,而smf.logit则更倾向于简单的算法和少量的数据。 ### 回答2: LogisticRegression()和smf.logit()都是用于进行逻辑回归分析的工具,但它们在具体实现和应用上有一些不同之处。 LogisticRegression()是sklearn库中的一个函数,用于进行机器学习模型的训练和预测。该函数采用了机器学习的方法,利用数据集的特征进行模型训练,并给出分类结果的概率。LogisticRegression()使用了最大熵原理和优化算法,通过拟合样本数据来估计模型的参数。它可以适用于多类别的分类问题,且支持L1和L2正则化,可以进行特征选择和模型调参。此外,它还能够处理缺失数据,并自动进行特征的标准化。 而smf.logit()则是statsmodels库中的一个函数,它基于统计学方法进行逻辑回归分析。与LogisticRegression()不同,smf.logit()更加注重回归模型的参数估计和推断。它使用了最大似然估计方法,通过最大化似然函数来求解模型的参数。smf.logit()提供了更多的统计信息,如参数的标准误差、p值以及置信区间等。因此,smf.logit()适用于需要更深入理解模型内部参数的统计分析任务。 此外,由于LogisticRegression()是基于机器学习方法,它可以很好地应用于大规模数据集的分析,而smf.logit()则更适用于小规模数据集和对参数推断有要求的场景。 综上所述,LogisticRegression()和smf.logit()都是逻辑回归分析的工具,但它们在具体实现和应用上有一些区别。选择何种方法取决于具体问题的需求,如果更注重于模型的预测能力和机器学习模型的特性,可以选择LogisticRegression();如果更注重于参数估计和统计推断,可以选择smf.logit()。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值