上一篇讲了逻辑回归的由来,在分类问题上,逻辑回归是一个二分类模型,而实际的项目中有可能需要处理一些多分类的问题(比如经典的MNIST),这时候如果使用二分类模型去处理多分类问题,会相对麻烦,这里介绍一种处理多分类问题的简单模型-softmax。softmax相当于做了一个归一化的工作,让强者相对更强,弱者相对更弱。
模型推导
softmax模型是逻辑回归模型的推广,逻辑回归模型是softmax模型的一个特例,这两者都算是广义线性模型(Generalized Linear Model,GLM)。广义线性模型假设在给定属性$x$和参数$\theta$之后,类别$y$的条件概率$p(y|x;\theta)$服从指数分布族,它是长这样子的:$$P(y;\eta)=b(y)exp(\eta^TT(y) - a(\eta))$$
下面就是根据类别的联合分布概率密度搞成上面公式的样子。假设现在有$k$种分类$y \in (1,2,…,k)$的数据,对于每一条观测(样本)都有一个对应的类别,假设每种分类对应的概率是$(p_1,p_2,…,p_k)$,那么所有类别的概率之和就是:

则第$k$类的概率也可以写成:

对于多分类,可以把类别写成编码向量的形式,向量的第$i$个位置为1,表示第$i$个类别,向量的其他位置为0。比如有5个分类,类别1可以表示成$(1,0,0,0,0)$,类别2可以表示成$(0,1,0,0,0)$。因为第$k$类可以用前$k-1$类表示,所以可以用$k-1$维向量$T(y)$表示类别。

用函数$\mu(y=i)=1$表示第$y=i$为真,当$y=i$为假时,有$\mu(y=i)=0$。这样就可以将所有了类别的概率整合起来:
$$P(y;p)=p_1^{\mu(y=1)}p_2^{\mu(y=2)}…p_k^{\mu(y=k)}$$
因为第$k$类可以用前$k-1$类表示,所以上面的式子可以写成:

当$y=1$时,$P(y;\eta)=p_1$,当$y=2$时,$P(y;\eta)=p_2$,以此类推。再用向量$T(y)$表示,就变成了:

将上面式子的右边,写成下面这种形式:

也就是先取对数,再将结果作为$e$的指数(整个推导过程中,最关键的技巧就是在这里了),然后稍微做下推导,就变成这样子:

然后,另:$b(y)=1$,以及$a(\eta)=-lnp_k$,还有$\eta$:

上面的公式就可以写成(终于凑成了指数分布族的形式):

由于

因为

所以

所以:

再根据$p_i=p_ke^{\eta_i}$,可以得到:

再令$\eta = w^Tx+b$,所以对于类别$i$,其概率可以表示成:

softmax模型推导到这里已经算是结束了。
我们再来看看,为什么说softmax相当于做了一个归一化的工作,让强者相对更强,弱者相对更弱。先看归一化,很简单,分母其实就是将分子从$1$到$k$累加起来,所以对于任意的$p_i$都有$p_i \in [0,1]$。对于后者,softmax相当于做了一个拉大差距的工作,假设已经算好$w^Tx+b$就是以下几个值$[5,4,3,2,1]$,根据公式计算出来的对应的softmax值为$[0.636, 0.234, 0.086, 0.032, 0.012]$,可以看到,各个数之间的相对差距拉的更远了,所以softmax能够很好地凸显较大的数值。
似然函数
像上篇逻辑回归一样,继续使用对数似然函数去估计参数。对于单个样本,当然是命中样本实际类别的概率越大越好。

这里$x^{(i)}$表示第$i$个样本,相对应的,$y^(i)$表示第$i$个样本对应的类别。
同理,对于所有的样本,也是希望命中样本实际类别的概率越大越好,然后再取个对数(这里为了方便书写公式,将$w^Tx+b$写成$\theta^T x$),这样就有:

最优化
搞定了代价函数,剩下的工作就是求解参数了,一般可以使用梯度下降(上升)或者是牛顿迭代法来求解,这里以梯度下降(转化成求极小值)为例(梯度上升的话就是直接求解上面公式的极大值)。
因为公式会写的比较长,这里为了方便,将$w^Tx+b$写成$\theta ^Tx$的形式(都毕业了,还要把微积分捡回来,也是蛋疼)。
首先是求导,在求导之前,先放两个需要用到的公式,这样整个求导过程会更加清晰。对于对数和分数的求导有下面两个公式:

对第$l$类的参数$\theta _l$进行求导,所以就会有:

然后通过梯度上升更新参数:

这里的$\alpha$为学习率。