广义线性模型与Softmax

一点儿logistic回归——对数几率回归

Posted by Roach on May 16, 2016

本文是Andrew NG在网易公开课第四讲的关于Softmax,以及UFLDL Tutorial中Softmax回归的学习笔记和理解。

欲解决的问题

逻辑回归是用来处理二分类问题,类标 $y^{(i)} \in {0,1}$,而Softmax回归是逻辑回归的扩展:同样将代测样本预测为某一类,但是类别 $y^{(i)} \in {1,\ldots,K}$,这里 $K$ 是类别个数。

对数据进行分类时,逻辑回归对应二项分布,softmax回归对应多项分布。

GLM套路

  1. $y \mid x; \theta \sim ExpFamily(\eta)$;
  2. Given $X$, goal is a output $E\left[ T\left( y \right) \mid x \right]$, want $h \left( x \right) = E\left[ T\left( y \right) \mid x \right]$;
  3. $\eta = \theta^\top x$;

    这么好的东西,似乎不应该说成套路!

    上面列表其实应该有三个补充:

  4. $ExpFamily(\eta)=b(y)exp(\eta^TT(y)-a(\eta))$;
  5. $y \sim Multinomial(\Phi) \longleftrightarrow ExpFamily(\eta)$;
  6. $E\left[ T\left( y \right) \mid x \right]$ is a function of $\Phi$;

我们的目标是得到 $h(x)$,然后通过判断其得到的值,对样本分类。对于softmax,$h(x)$ 输出多个值,样本会分到概率得分最大的类别。

但是通过有序列表的$2$和$6$,知道 $h(x)$ 可以由 $\Phi$ 表示。而我们已知的只有 $\theta$ 和 $x$,也就是线性模型参数和样本。所以需要某种方法,来实现 $\Phi$ 与 $\eta=\theta^Tx$ 的转换。转换就是通过列表的$5$:多项分布也属于指数分布族。

也就是说,广义线性模型就是对一个事物两个角度的观察,使得将一个线性模型转换为一个分布。而转换的函数通常叫做连接函数


softmax回归

模型

softmax回归用来处理多类别问题,$y^{(i)} \in {1,\ldots,K}$,$K$ 表示类别个数。$\Phi_i = P(y = i; \Phi)$,$\begin{matrix} \sum_{i=1}^K \Phi_i = 1 \end{matrix}$;且 $P(y = k; \Phi) = 1- \begin{matrix} \sum_{i=1}^{k-1} \Phi_i \end{matrix}$。

引入 $T(y)$:

且 $1{ y = k } \leftrightarrow T(y)_i$,表示 $y = k$ 时 $T(y)$ 的第 $i$ 个分量的取值。那么:

则:

且,$\eta^T = \begin{bmatrix} \eta^1 \eta^2 \dots \eta^{k-1}\end{bmatrix}$,$\begin{matrix} \sum_{i=1}^k \Phi_i= 1 \end{matrix}$,则 $\Phi_i = e^{\eta_i}\Phi_k \Rightarrow$

$\Phi_i = \frac{e^{\eta_i}}{1+\begin{matrix}\sum_{j=1}^{k-1}e^{\eta_i}\end{matrix}} (i=1,2\dots,k-1) \qquad\qquad (1)$

这样,就得到了hypothesis,然后可以通过最大似然估计求得所有参数的估计 $\Theta$.

将公式 $(1)$ 带入,使用梯度下降求得。


Ufldl

上一小节,已经算是给出了一个损失函数,并且求解的算法也给出。也就是这个问题已经解决了。这正是 Andrew Ng 网易公开课所讲的 softmax回归。下面提一下 ufldl 内容,不同的地方是 ufldl 的方法存在参数“冗余”,存在参数的多个解。为解决这个问题,在梯度下降时使用了”权重衰减——正则化”,较网易公开课的方式梯度下降更为简单。

ufldl 方法得到的 hypothesis 如下所示:

模型部分 $h_\theta(x) \in \Re^{k-1}$ 不同就是这里的 $h_\theta(x) \in \Re^{k}$,欲得到这样的结果只需另模型部分 $T(y)$ 维度加 $1$,且 $T(k)$ 的第 $k$ 个元素为 $1$,然后对 $h_\theta(x)$ 进行概率归一化。

$\theta$ 是 $n*K$ 的矩阵:

损失函数

令:

注意,对 $\theta^{(k)}$ 求偏导的时候,如果 $y^{i} = k$,$(2)$ 式分子分母均包含 $\theta^{(k)}$;如果$y^{i} \not = k$,$(2)$ 式分母求和项中存在 $\theta^{(k)}$。

参数冗余:

对于每个 $\theta^{(k)}$ 减去相同的值,即 $\theta^{(k)} - \psi$ 之后,损失函数不变:

算法

使用权重衰减(正则化)方法,解决参数冗余问题:

context

若类标之间没有关系,使用softmax回归;若一个样本可以归属多个类,使用多个二元分类器。


对数几率回归

最大似然

$(4)$ 可以看出softmax回归是对数几率回归的拓展;

将 $(**)$ 带入 $(3)$,使用链式求导得到:

因为是最大似然(负损失),使用梯度上升(对于参数的变化,结果是一样的)。

拓展

从公式 $(5)$ 可以看出,当算法停止分类边界已经确定的情况下,如果新加入一个正类样本,梯度相对之前全部增加(正类样本梯度全为正,负类反之)。$w$ (分类超平面法向量)会向新加入正类方向偏转,这对分类边界会造成什么样的影响呢?

类似问题:SVM和逻辑斯特回归对同一样本A进行训练,如果某类中增加一些数据点,那么原来的决策边界分别会怎么变化?


交叉熵

Softmax是最小化每一个样本估计分类概率和样本真实分布的交叉熵,即:

Softmax的损失函数 $L_i= \log \frac{\exp(\theta^{(k)\top} x^{(i)})}{\sum_{j=1}^K \exp(\theta^{(j)\top} x^{(i)})}$. 因为损失是对样本来说的,所以需要通过一个指示函数确定该样本对应的类别:$k$.

说交叉熵之前,先了解一下KL散度

KL散度

KL散度是用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的比特个数。所以,KL散度,虽然可以用于度量两个概率分布之间的差异,却不满足对称性度量。

其中,$H(P,Q)$ 就是交叉熵;在信息论中表示,使用基于 $Q$ 的编码对来自 $P$ 的变量进行编码所需的最小字节数。

所以,Softmax分类器所做的就是最小化在估计分类概率(就是 $L_i =e^{f_{y_i}}/\sum_je^{f_j}$)和“真实”分布之间的交叉熵.

比如,一个三分类问题:1, 2, 3三个类别,样本 $i$ 属于第一类,那么它的估计分类概率为:$L_1 \; L_2\; L_3$,而真实分布为 p(x=1)=1, p(x=2)=P(x=3)=0,所以Softmax对于样本 $i$ 就最小化:


对数损失与hinge损失

注意,在Softmaxhypothesis $h_{\theta}(x)$ 中看似不像LR那样,它没有包含类标的信息,但是也是可以转化成那样的形式的。

包含类标信息指,损失函数形式是这样的:

其中,error(SCE) is another upper bound loss function of $err_{0/1}$.

且,

当 $K=2$ 时:

继而,

对比

$-\infty$ $\longleftarrow$ $ys$ $\longrightarrow$ $+\infty$
$\approx-ys$   $\hat{err}_{SVM}(s,y)$   $=0$
$\approx-ys$   $\ln2\centerdot\hat{err}_{SCE}(s,y)$   $=0$

非常像!但是,LR更能避免异常点的影响(SVM仅有几个支持向量确定超平面)。


一直想总结,一直没总结,还好,160517 -> 160707 -> 16年中秋,:(

/(ㄒoㄒ)/~~


References

  1. Kernel Logistic Regression :: SVM versus Logistic Regression