根据上一篇广义线性模型(4)逻辑回归我们已经知道,逻辑回归是一种处理二分类问题的常用方法,当需要处理多分类问题是,除了逻辑回归的组合模型之外,我们还可以选择使用Softmax回归多分类器。
1 原理
1.1 概述
softmax 回归(softmax regression)其实是logistic回归模型在多分类问题上的推广,logistic 回归用于二分类,而 softmax 回归用于多分类,从上一篇文章中我们知道,逻辑回归模型的输出是样本点标记为正样本的概率,其函数形式为:
因为是二分类,所以输出标记为正样本的概率也就可以得到标记为负样本的概率了,如果是多分类呢,只知道一个类别的概率肯定不能推出其他的,所以需要把样本点被标记为各个类别的概率都输出才行,因此,Softmax回归模型的形式为:
式中,为模型参数,为归一化因子,其作用是使各个类别对应的输出结果值域为,并且和为1,即使结果表现为概率的形式。
我们之前说逻辑回归可以理解为有两部分:一个线性回归和一个sigmod函数做值域映射,Softmax回归是将logistic回归中的sigmod函数换成了Softmax函数,当然,可以认为Softmax函数是logistic函数的一种一般化推广,对多个类别中的一个类别来说:
Softmax函数的计算过程可以用下图来理解,这是Softmax在神经网络中作为激活函数的例子,不过不看前面的层,只看从最后一层输出到激活函数计算的过程,跟我们上面的公式是完全一样的:
通过下图可以帮助理解Softmax是怎么在分类中起作用的,就是选概率大的那个类别:
1.2 从GLM的角度看Softmax回归
Softmax回归也是广义线性模型的一种实现,多分类在分布上是多项式分布,就像掷骰子一样每次会出现多个类别中的一个,其假设为:
1. 定义 y 的估值概率分布属于指数分布族中的多项式分布,,有个可能的取值:表示为:
2. 定义 的估计值 ,即的估计值就是 的期望值;
3. 定义线性预测算子,即广义线性模型中的线性因素,对相关的指数分布族的自然参数:。
只是在这三个假设中的第一条与线性回归、逻辑回归有所不同,其他都是一样的。现在分布的表达式中的指数是不同的指示器函数(Indicator function),我们用类似one-hot的方式把这个指示器函数统一在一个表达式下:
其中,的维度为,当元素的index与y值相等时,元素的取值为1,其余都为0,比如作为的第一个元素,因为满足所以取值为1。为什么的元素个数是呢?因为这些类别作为互斥的事件,知道k-1个事件的出现情况,第k个也就知道了,从这点看貌似类似哑变量的处理方式,所以有:
综合上面的处理方式可以得到:
将这个表达式写成指数分布族的形式:
所以:
能用表示出就可以得到模型了,我们已知,所以:
套用公式 构建回归模型:
显然这就是Softmax回归模型了,接下来的任务就是模型参数的求解。
2 模型参数的求解
Softmax回归模型中的线性预测算子是一个k维向量(k是类别数),参数也是一个向量:
求解参数的套路跟逻辑回归一样,Softmax的损失函数可以从极大似然估计得到,具体过程就不写了,都是一样的,得到的损失函数也是交叉熵损失函数的形式:
使用梯度下降来优化损失函数,首先求梯度,注意下式中:
梯度下降:
3 Softmax回归和逻辑回归
3.1 从逻辑回归到Softmax回归
我们前文说过softmax 回归(softmax regression)其实是logistic回归模型在多分类问题上的推广,逻辑回归中我们假设y是符合伯努利分布的,有,如果我们用,那么就有:,跟Softmax中的假设是一样的。
3.2 使用场景
logistic 回归用于二分类,而 softmax 回归用于多分类,在实际使用中:
- 如果模型输出为非互斥类别,且可以同时选择多个类别,则采用逻辑回归。
- 如果模型输出为互斥类别,且只能选择一个类别,则采用Softmax回归。
举例理解:
- 场景1:假如我们在做图书分类,有小说集、杂文集、散文集、新闻杂志4个类别,显然这些类别是互斥的,我们应该使用类别数 k = 4 的softmax回归;
- 场景2:假如我们在做图书分类,有小说集、畅销书、青春文学、最新出版4个类别,显然这些类别不是互斥的,一本书可能属于多个类别,我们应该使用4个 独立的逻辑回归。
网友评论