美文网首页
广义线性模型(5)Softmax回归

广义线性模型(5)Softmax回归

作者: 蛋仔鱼丸 | 来源:发表于2020-06-09 12:02 被阅读0次

    根据上一篇广义线性模型(4)逻辑回归我们已经知道,逻辑回归是一种处理二分类问题的常用方法,当需要处理多分类问题是,除了逻辑回归的组合模型之外,我们还可以选择使用Softmax回归多分类器。

    1 原理

    1.1 概述

    softmax 回归(softmax regression)其实是logistic回归模型在多分类问题上的推广,logistic 回归用于二分类,而 softmax 回归用于多分类,从上一篇文章中我们知道,逻辑回归模型的输出是样本点标记为正样本的概率p,其函数形式为:

    因为是二分类,所以输出标记为正样本的概率也就可以得到标记为负样本的概率1-p了,如果是多分类呢,只知道一个类别的概率肯定不能推出其他的,所以需要把样本点被标记为各个类别的概率都输出才行,因此,Softmax回归模型的形式为:

    式中,θ_0,θ_1,θ_2,...+θ_k\in R为模型参数,\frac{1}{\sum_{j=1}^k e^{θ_j^T x_i}}为归一化因子,其作用是使各个类别对应的输出结果值域为[0,1],并且和为1,即使结果表现为概率的形式。

    我们之前说逻辑回归可以理解为有两部分:一个线性回归和一个sigmod函数做值域映射,Softmax回归是将logistic回归中的sigmod函数换成了Softmax函数,当然,可以认为Softmax函数是logistic函数的一种一般化推广,对多个类别中的一个类别i来说:

    p(y=i|x,θ)=\frac{e^{θ_i^T x}}{\sum_{j=1}^k e^{θ_j^T x}}

    Softmax函数的计算过程可以用下图来理解,这是Softmax在神经网络中作为激活函数的例子,不过不看前面的层,只看从最后一层输出到激活函数计算的过程,跟我们上面的公式是完全一样的:

    通过下图可以帮助理解Softmax是怎么在分类中起作用的,就是选概率大的那个类别:

    1.2 从GLM的角度看Softmax回归

    Softmax回归也是广义线性模型的一种实现,多分类在分布上是多项式分布,就像掷骰子一样每次会出现多个类别中的一个,其假设为:

    1. 定义 y 的估值概率分布属于指数分布族中的多项式分布,y|x,θ∼Mult(\phi)yk个可能的取值:y\in {1,2,...,k}表示为:

    P(y|x,\theta) =\phi_1^{I\left\{ y=1 \right\}}\phi_2^{I\left\{ y=2 \right\}}...\phi_k^{I\left\{ y=k \right\}} , I\left\{ True \right\}=1,I\left\{ False \right\}=0

    2. 定义y 的估计值 h ( x , θ ) = E ( T ( y ) | x , θ )=E ( y | x , θ ),即y的估计值就是 P(y|x,θ)的期望值;

    3. 定义线性预测算子,即广义线性模型中的线性因素,对y相关的指数分布族的自然参数ηη = θ^T x

    只是在这三个假设中的第一条与线性回归、逻辑回归有所不同,其他都是一样的。现在分布的表达式中的指数是不同的指示器函数(Indicator function),我们用类似one-hot的方式把这个指示器函数统一在一个表达式下:

    \begin{align} T(1)=\left[ \begin{matrix}1\\0\\0\\\vdots\\0\end{matrix}\right], T(2)=\left[ \begin{matrix}0\\1\\0\\\vdots\\0\end{matrix}\right],\cdots, T(k-1)=\left[ \begin{matrix}0\\0\\0\\\vdots\\1\end{matrix}\right], T(k)=\left[ \begin{matrix}0\\0\\0\\\vdots\\0\end{matrix}\right] \end{align}

    其中,T(y)的维度为k-1,当元素的index与y值相等时,元素的取值为1,其余都为0,比如T(1)_1作为T(1)的第一个元素,因为满足T(y)_1=I\left\{ y=1 \right\}所以取值为1。为什么T(y)_k的元素个数是k-1呢?因为这些类别作为互斥的事件,知道k-1个事件的出现情况,第k个也就知道了,从这点看貌似类似哑变量的处理方式,所以有:
    \phi_k=1-\sum_{i=1}^{k-1}\phi_i

    综合上面的处理方式可以得到:

    \begin{align} p(y;\phi)&=\phi_1^{I\begin{Bmatrix} y=1\end{Bmatrix}}\phi_2^{I\begin{Bmatrix} y=2\end{Bmatrix}}\cdots\phi_k^{I\begin{Bmatrix} y=k \end{Bmatrix}}\\ &=\phi_1^{I\begin{Bmatrix} y=1\end{Bmatrix}}\phi_2^{I\begin{Bmatrix} y=2\end{Bmatrix}}\cdots\phi_k^{1-\sum_{i=1}^{k-1}I\begin{Bmatrix} y=i\end{Bmatrix}}\\ &=\phi_1^{T(y)_1}\phi_2^{T(y)_2}\cdots\phi_k^{1-\sum_{i=1}^{k-1}T(y)_i} \end{align}

    将这个表达式写成指数分布族的形式b(y)\exp(\eta^TT(y)-a(\eta))

    \begin{align} p(y;\phi)&=\phi_1^{T(y)_1}\phi_2^{T(y)_2}\cdots\phi_k^{1-\sum_{i=1}^{k-1}T(y)_i}\\ &=\exp(T(y)_1\log\phi_1+T(y)_2\log\phi_2+\cdots+((1-\sum_{i=1}^{k-1}T(y)_i)\log\phi_k)\\ &=\exp(T(y)_1\log\frac{\phi_1}{\phi_k}+T(y)_2\log\frac{\phi_2}{\phi_k}+\cdots+T(y)_{k-1}\log\frac{\phi_{k-1}}{\phi_k}+\log\phi_k) \end{align}

    所以:

    b(y)=1

    \begin{align} \eta&=\left[ \begin{matrix}\log\frac{\phi_1}{\phi_k}\\\log\frac{\phi_2}{\phi_k}\\\vdots\\\log\frac{\phi_{k-1}}{\phi_k}\end{matrix}\right] \end{align}

    a(\eta)=-\log\phi_k

    能用\eta表示出\phi_k就可以得到模型了,我们已知\eta_i=log\frac{\phi_i}{\phi_k},所以:

    \sum_i^k e^{\eta_i}=\frac{1}{\phi_k}\rightarrow \phi_k=\frac{1}{\sum_i^k e^{\eta_i}}\rightarrow a(\eta)=\log\sum_i^k e^{\eta_i}

    套用公式 h ( x , θ ) = E ( y | x , θ ) = a' ( η ),a(\eta)=\log\sum_i^k e^{\eta_i}, η=θ^T x 构建回归模型:

    h ( x , θ ) = a' ( η )=\left[ \begin{matrix}a'(η_1)\\a'(η_2)\\\vdots\\a'(η_k)\end{matrix}\right]=\left[ \begin{matrix}\frac{e^{\theta_1^Tx}}{\sum_{i=1}^ke^{\theta_i^Tx}}\\\frac{e^{\theta_2^Tx}}{\sum_{i=1}^ke^{\theta_i^Tx}}\\\vdots\\\frac{e^{\theta_{k-1}^Tx}}{\sum_{i=1}^ke^{\theta_i^Tx}}\end{matrix}\right]

    显然这就是Softmax回归模型了,接下来的任务就是模型参数的求解。

    2 模型参数的求解

    Softmax回归模型中的线性预测算子是一个k维向量(k是类别数),参数也是一个向量:

    求解参数的套路跟逻辑回归一样,Softmax的损失函数可以从极大似然估计得到,具体过程就不写了,都是一样的,得到的损失函数也是交叉熵损失函数的形式:

    使用梯度下降来优化损失函数,首先求梯度,注意下式中\sum_{j=1}^k1\left\{ y_i=j \right\} =1

    梯度下降:

    \mathbf\theta_j= \mathbf\theta_j - \alpha \frac{\partial L(\theta)}{\partial\theta_j}

    3 Softmax回归和逻辑回归

    3.1 从逻辑回归到Softmax回归

    我们前文说过softmax 回归(softmax regression)其实是logistic回归模型在多分类问题上的推广,逻辑回归中我们假设y是符合伯努利分布的,有P(y|x,\theta) =\phi^y(1-\phi)^{1-y},如果我们用\phi_1=\phi,\phi_2=1-\phi,那么就有:P(y|x,\theta) =\phi_1^y\phi_2^{1-y},跟Softmax中的假设是一样的。

    3.2 使用场景

    logistic 回归用于二分类,而 softmax 回归用于多分类,在实际使用中:

    • 如果模型输出为非互斥类别,且可以同时选择多个类别,则采用逻辑回归。
    • 如果模型输出为互斥类别,且只能选择一个类别,则采用Softmax回归。

    举例理解:

    • 场景1:假如我们在做图书分类,有小说集、杂文集、散文集、新闻杂志4个类别,显然这些类别是互斥的,我们应该使用类别数 k = 4 的softmax回归;
    • 场景2:假如我们在做图书分类,有小说集、畅销书、青春文学、最新出版4个类别,显然这些类别不是互斥的,一本书可能属于多个类别,我们应该使用4个 独立的逻辑回归。

    相关文章

      网友评论

          本文标题:广义线性模型(5)Softmax回归

          本文链接:https://www.haomeiwen.com/subject/ffertktx.html