Softmax函数公式
传统的逻辑回归模型(Logistic Regression,LR)主要解决二分类题,Softmax则是逻辑回归模型在多分类问题上的推广。所以我们从分析LR模型入手
从LR二分类模型理论与Softmax之间的联系
1、LR线性模型公式
2、LR二分类理论依据
(1)logistic回归是处理二分类问题的,所以输出的标记y={0,1}
并且线性回归模型产生的预测值是一个实值Z=w’'x+b,所以我们将实值z转化成0/1值便可,这样有一个可选函数便是“单位阶跃函数”:
这种如果预测值大于0便判断为正例,小于0则判断为反例,等于0则可任意判断
但是单位阶跃函数是非连续的函数,我们需要一个连续的函数,“Sigmoid函数”便可以很好的取代单位阶跃函数,它输出的值域是(0,1)
(2)接下来解释一下为什么LR二分类可以选择sigmoid函数 来计算分类概率
首先从单位越阶函数中我们就给出了一种人为的分类规定,这种规定可以粗略的这样理解:
那么对于LR二分类这样只输出一个数值的线性模型,sigmoid函数恰好能实现这一功能。首先,它的值域是(0,1),满足概率的要求;其次,它是一个单调上升函数,可以微分,意味着可以梯度求导,更新LR模型参数。最终
(3)那么问题来了,对于多分类的问题,用sigmoid函数求概率还合适吗?
显然不合适了,所以要对其进行变形,找出一个计算概率的函数,且LR也不适用于多分类问题。
于是就有了神经网络和softmax损失函数。不管是DNN、CNN,还是RNN等,里面都会用到核心的公式:,f(x)=w’x+b这个熟悉的公式LR线性模型中也用到了,只不过神经网络中W可能是高维的,因为可能用于多分类,而LR中的W只有一维,这就是为什么LR对于每个样本只输出一个数,所以它不适合多分类。
那么基于上述分析,觉得应该也可以这样理解:对于一些神经网络,它也算是LR线性模型在高维空间中的一种应用推广。
所以说在有的模型设计中,会使用多个Logistic分类器代替Softmax,使用的是
binary cross-entropy loss,比如YOLOv3
下面这张图是Pi概率矩阵
(4)为什么选用-log(Pyi)求损失
Softmax函数括号中的概率矩阵理论推导出来了,再来看看为什么选择用-log(Pyi)求损失来训练模型,最重要的原因在于它是一个单调可微的凸函数
Softmax反向传播过程推导
Softmax函数也被称为交叉熵损失(cross-entropy loss)
从两个视角理解一下交叉熵损失(cross-entropy loss)
信息理论视角
交叉熵刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。假设概率分布p为期望输出(标签),概率分布q为实际输出,H(p,q)为交叉熵。下面举个用H(p,y)计算的例子
上面的例子是二分类用H(p,q)计算损失的函数,从上面的计算过程可以发现softmax函数可以由H(p,q)推出来,softmax函数的表达形式更适用多分类的高维空间中损失计算
概率论解释
看看最大似然估计的概念:
用softmax函数时,一种处理技巧