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

根据上一篇广义线性模型(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个 独立的逻辑回归。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351