MLaPP Chapter 8 Logistic Regression 逻辑斯特回归

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangxb35/article/details/54927952

8.1 Introduction

LR 是一个非常重要的模型,几乎所有的机器学习职位面试都会问到。因此这章是重点,一定要看懂。

8.2 Model specification

把线性回归的高斯分布,换成伯努利分布,就成了逻辑斯特回归,不过这个模型其实是个分类模型,

p(y|x,w)=Ber(y|sigm(wTx))
其中
sigm(η)eη1+eη
表示 sigmoid function, or logit or logistic function.

最后 LR 学到的是一个线性决策面,而 w 就是该决策面的垂线(perpendicular)。

8.3 Model fitting 模型拟合

这一小节考虑怎么来估计 LR 中的参数,即 w 的取值。

8.3.1 MLE

LR 里用的是伯努利分布(Bernoulli Distribution),其中只有一个参数 θ ,如果用

ui=p(yi=1)=sigm(wTxi)=11+ewTxi
表示第 i 个样本中 yi=1 的概率,那么 LR 的 negative log-likelihood 如下,
NLL(w)=i=1Nlog[μI(yi=1)i×(1μi)I(yi=0)]=i=1N[yilogμi+(1yi)log(1μi)]
这个就是交叉熵(cross entropy)损失函数。

也有另一种表示方法,令

y^i{1,+1},p(y=1)=11+exp(wTx),p(y=0)=11+exp(+wTx)
那么可以重写损失函数,
NLL(w)=i=1Nlog(1+exp(y^iwTxi))


yu这个交叉熵损失函数并没有封闭式解(closed-form solution),而是只能通过优化算法(optimizatin algorithm)或者说叫做迭代(iterative)的算法来解决。(关于封闭式解,可以举计算 8 的例子来说明。)

我们来算一下第一种 NLL 的梯度回传,注意书里的 f(w)NLL(w) ,且记住 sigmoid 函数的一阶导数为 ui=ui(1ui) ,或者稍微推导一下吧,

u(α)=(11+eα)=eα(1+eα)2=u(α)(1u(α))
那么一阶导数就可以像下面这样计算啦,
g=ddwf(w)=ddwi=1N[yilogμi+(1yi)log(1μi)]=i(yiuiduidw+1yi1ui(1)duidw)=iuiyiui(1ui)duidw=iuiyiui(1ui)duidαdαdw,α=wTxi,duidα=u(α)=iuiyiui(1ui)ui(1ui)dwTxidw=i(uiyi)xi=XT(uy)
最后一步是结果的矩阵表示,其中 XTD×N=(x1,,xn)D×N 表示训练集的输入数据, u=(u1,,uN)T,y=(y1,,yN)T 均为列向量,分别是激活函数的输出和训练集的标签。所以权重向量 wD×1 的一阶导数是个相同大小的向量 gD×1 .

二阶导是一个海森矩阵(Hessian Matrix),求起来就略麻烦,

H=2wf(w)=ddwg(w)T=ddwi[(uiyi)xi]T=iduidwxTi=iui(1ui)xixTi=XTSX
其中 Sdiag(μi(1μi)) ,我也不知道代表啥。

由最后的 xixTi 可以看出,海森矩阵是个对称矩阵,还可以证明是个正定矩阵(然而我不会证明,书里也没给~),以此根据前面的凸优化概念,此函数是凸函数,那么必然有唯一的全局最优解。


补充一些 正定矩阵(positive definite)的知识,其实这里用不上,只是想找个地方记下来。

正定矩阵首先得是个 对称矩阵,以前没有意识到。然而不能直接通过定义判定给一个矩阵是不是正定的,因为定义说的是无穷个,怎么证明呢?不过一般可以通过两种方法来判定,一个是特征值是否全部大于零,这个是充要条件,然而需要求特征值,感觉略麻烦;另一个就是其所有 顺序主子式 全部大于零,也是充要条件。

顺序主子式是什么意思呢?其实 k 阶方阵的顺序主子式有 k 个,那么 k 阶主子式就定义为前 k k 列的元素组成的矩阵的行列式。当这 k 个行列式全部大于零的话,该矩阵就是正定的,这个是充要条件。不过有时候你发现原矩阵的行列式不为零,那就一定不是正定矩阵了,其他的 k1 个顺序主子式就不用再算了。

正定矩阵是个对称矩阵,那么对称矩阵有很多好的性质,比如一定可以正交对角化。正交矩阵指的是满足 Q1=QT 的方阵。

8.3.2 Steepest descent

梯度下降(gradient descent, or steepest descent)法可以按照下面的公式对参数进行更新:

θk+1=θkηkgk
其中 η 是步长(step size),或者叫做学习率(learning rate)。

考虑在学导数的定义时,有下面的式子成立,

f(θ)=f(θ+θ)f(θ)θ  f(θ+θ)=f(θ)+f(θ)θ
考虑上面的公式,只有 θ0 时等号才成立,否则就是约等于,其实就是一阶泰勒展开式。现在把结论推广到 f:RnR 上,那么就得到了书上的公式,
f(θ+ηd)f(θ)+ηgTd
极小量 θ 就对应 ηd ,导数 f(θ) 就对应梯度向量 g ,因为极小量没有取极限,所以只能是约等于。向量 d 的名字叫做下降方向(descent direction)向量。通过最小化 ϕ(η)=f(θk+ηdk) 来取一个合适的步长 η ,这种方法就叫做是 line minimization or line search

书里证明了极小量 d 和 梯度 g 在找到极小值之前是垂直的,即 gd ,所以走的路是弯弯曲曲(zig-zag)的样子。

一种减少梯度下降路线曲折的方法是加一个 动量(momentum),即保留一些上个梯度向量的值,按照下面的公式更新,

θk+1=θkηkgk+μk(θkθk1)
其中 0μk1 就是控制保留动量的权重,后面多出来的那项就是动量项。这种方法在凸优化里叫做 重球法(heavy ball method).

还有另一种改进 zig-zag 的方法叫做 共轭梯度(conjugate gradients),是针对二次型目标函数 f(θ)=θTAθ ,但是不常用。

8.3.3 Newton’s method 牛顿法

有时候我们会用更快的优化方法,考虑空间的曲率(curvature of the space),这种方法叫做二阶优化方法(second order optimization methods),最常见的例子就是牛顿法。可以按照下面的公式更新参数,

θk+1=θkηkH1Kgk
下面我们来推导一下。首先考虑函数 f(θ) θk 处的二阶泰勒级数近似(second-order Taypor series approximation),
fquad(θ)=fk+gTk(θθk)+12(θθk)THk(θθk)
因为这里的自变量是向量 θ ,可以展开各项后化简成下式(注意化简的时候,海森矩阵 Hk 是个对称矩阵,另外 θTHkθk 是个标量,转置后仍相等),
f(θ)=θTAθ+bTθ+c
其中,
A=12Hk,b=gkHkθk,c=fkgTkθk+12θTkHkθk
那么假如此函数是凸函数,只有唯一的极值点,也即最小值点,可以直接求导,
fquad(θ)θ=(θTAθ)θ+(bTθ)θ=(A+AT)θ+b=2Aθ+b
令导数为零,可以得到极值点
θ=12A1b=12(2H1k)(gkHkθk)=θkH1kgk
我们来分析一下得到极值点以后的情况,可以结合图 8.4a 来看,首先 f(x) fquad(x) 不是一条曲线,所以刚刚算出来的极值点 θ 并不是真实函数曲线的极值点,但是 却可以代表极值点的下降方向。(当然 8.4b 是非凸函数的情况,结果就不一定了。)我们把此方向用 Newton Step dk=H1kgk 表示,那么可以按照这个方向更新参数,就是这个小节一开始的公式。

当海森矩阵不满足正定的性质时,那么函数就不是凸函数,也无法保证 Newton Step 给出的方向是极小值的方向,这时候可做了这以简单低回到梯度下降的方法,事实上 Levenberg Marquardt algorithm 就自动做了这些事儿。另一种方法是用 truncated Newton,用了 conjugate gradient 的思想。

8.3.4 Iteratively reweighted least squares (IRIS)

考虑把牛顿法用到求解 LR 问题上,记得前面对 LR 的损失函数求解一阶和二阶导数,得到的梯度向量和海森矩阵,

gkHk=XT(μky)=XTSkX
带入迭代公式,并取更新权重为 ηk=1
wk+1=wkH1gk=(XTSkX)1XTSkzk,zk=Xwk+S1(yμk)

回忆一下之前的 Linear Regression 的封闭解, w^OLS=(XTX)1XTy ,也是最小二乘问题的解,和上面的迭代公式是不是很像呢?那么这里每一次迭代,由于多了一个权重矩阵 Sk ,都可以看做是 带权重的最小二乘问题(weighted least squares problem),即第 k 步迭代就是对下面的损失函数求解,且得到的结果是 wk+1

RSS(w)=i=1NSki(zkiwTxi)2,zki=wTkxi+yiμkiμki(1μki)
这个算法就是 iteratively reweighted least squares or IRLS.

8.3.5 Quasi-Newton (variable metric) methods 拟牛顿法

所有二阶优化算法都是牛顿法,但是牛顿法的复杂度太高,因为计算海森矩阵的逆矩阵很麻烦,每次迭代都要计算一次。拟牛顿法的思想是用一个矩阵逐渐逼近海森矩阵和其逆矩阵,最常见的是 BFGS 算法,用一个矩阵 BkHk 来逼近,

Bk+1=Bk+ykyTkyTksk(Bksk)(Bksk)TsTkBksk,sk=θkθk1,yk=gkgk1
矩阵 B 可以从 B0=I 单位矩阵开始, BFGS 算法可以看做是向海森矩阵的对角低秩逼近(diagonal plus low-rank approximation)。

同样的,逆矩阵也可以通过类似的方式逼近 CkH1k

Ck+1=(IskyTkyTksk)Ck(IyksTkyTksk)+sksTkyTksk

有时候数据很大,存储海森矩阵也很耗空间,需要 O(D2) 的空间复杂度,可以用limited memory BFGS, or L-BFGS,因为 H1kgk 可以用 m 对最近的 (sk,yk) 的内积,存储化简为 O(mD) 的复杂度。

8.3.6 2 regularization

可以像岭回归一样,对 LR 问题进行 MAP 而非 MLE ,加了 2 正则化后的目标函数,梯度和海森矩阵如下:

f(w)g(w)H(w)=NLL(w)+λwTw=g(w)+λw=H(w)+λI
然而我不理解这个是怎么推出来的。

8.3.7 Multi-class logistic regression

LR 从二分类问题推广到多分类问题上去,叫做 multinomial logistic regression,有时候也叫作 最大熵分类器(maximum entropy classifier),形式如下,

p(y=c|x,W)=exp(wTcx)Cc=1exp(wTcx)
后面是一个 Softmax 函数,定义
uic=p(yi=c|xi,W)=S(ηi)c,where ηi=WTxi
其中 ηi 是一个 C×1 的列向量,经过 Softmax 函数后,转化成概率分布。而真实的标签 yi 也是和 ηi 一样的列向量,不过是用 One-Hot 编码,或者叫 one-of-C encoding,就是当且 yi=c 那项为比特 1 ,其他均为 0 .

书里继续推导了似然函数,导数,和海森矩阵的相应公式。

8.4 Bayesian logistic regression

8.4.1 Laplace approximatino

8.4.2 Derivation of the BIC

8.4.3 Gaussian approximation for logistic regression

8.4.4 Approximating the posterior predictive

8.4.4.1 Monte Carlo approximatino

8.4.4.2 Probit approximation (moderated output) *

8.4.5 Residual analysis (outlier detection)

8.5 Online learning and stochastic optimazation

传统上,我们的机器学习都是离线学习(offline),现在来总结一下。大部分都是这样的形式,

f(θ)=1Ni=1Nf(θ,zi)
其中 zi=(xi,yi) 表示 supervised data,或者 zi=xi 表示 unsupervised data. 后面的 f(θ,zi) 表示损失函数,可以有两种定义,
f(θ,zi)=logp(yi|xi,θ)
这样子可以用最大似然估计来估算参数。另一种损失函数可以这样定义,
f(θ,zi)=L(yi,h(xi,θ))
里面的 h(xi,θ) 是决策函数,损失函数 L(yi,y^) 可以是均方误差,也可以是 Huber loss 等。在频率学派的学习理论中,平均损失叫做风险(risk),这整个学习的流程叫做经验风险最小化(ERM, empirical risk minimizatino).


当我们面对的数据是流数据(streaming data)时,或者数据量特别大时,我们希望进行在线学习(online learning)。

8.5.1 Online learning and regret minimization

假设在第 k 次迭代时,要学习一个参数 θk ,在理论机器学习社区,目标函数称为 regret,定义如下,

regretk1kk=1Kf(θt,zt)minθΘ1kt=1kf(θ,zk)

一个简单的在线学习算法就是在线梯度下降(online gradient descent),即针对每步 k ,可以这样更新参数

θk+1=projΘ(θkηkgk)
其中 projυ(v)=argminwVwv2 指的是把向量 v 投影到空间 v 上去。还有 gk=f(θk,zk) 表示梯度。

8.5.2 Stochastic optimization and risk minimization

最小化 regret 可以转化成最小化

f(θ)=E[f(θ,z)]
要优化的目标里有随机变量,此过程叫做随机优化(stochastic optimization),上面的参数更新公式叫做随机梯度下降(SGD, stochastic gradient descent)。每一步(step)都会估计出一个参数,最后用这些参数的平均数最最后模型的参数。
θ¯k=1kt=1kθt
也可以像这样递归地更新。

8.5.2.1 Setting the step size

8.5.2.2 Per-parameter step sizes

SGD 的参数更新步长会比较固定,而 adagrad 弥补了这一缺陷,更新公式如下,

θi(k+1)=θi(k)ηgi(k)τ0+si(k)
其中 θi(k) 表示第 i 个参数的第 k 次迭带和更新参数, gi(k) 表示对应梯度, si(k) 表示梯度向量的平方和,可以累加得到,
si(k)=si(k1)+gi(k)2
可以看到分母是越来越大的,那么相当于随着迭带次数的增加,学习率会越来越小,而且由于 si(k) 是梯度的累加,所以也是和损失函数的曲面相适应的(adapt to the curvature of the loss function)。

8.5.2.3 SGD compared to batch learning

mini-batch 的方法,是把整个大数据集分成一个小的 batch,在整个数据集上遍历一遍叫做一次 epoch,假如用 B 表示每个 batch 的大小,那么 B=1 就是标准的 SGD,当 B=N 是就是标准的 steepest descent。

8.5.3 The LMS algorithm

我们回头看一下梯度下降是如何在线性回归上求解最大似然估计的(最小化似然函数)。还记的上一章推导的梯度向量为

gk=xi(θTkxiyi)
如果再用 y^k=θTkxi 表示预测值,那么梯度更新公式可以写做,
θk+1=θkηk(y^kyk)xk
这个算法就叫做是 least mean squares,或者 LMS 算法。

8.5.4 The perceptron algorithm

对于二元逻辑斯特回归,更新公式为,

θk=θk1ηk(uiyi)xi
其中 ui=p(yi=1|xi,θk)=E[yi|xi,θk] . 如果我们用 y{1,1} 代替 y{0,1} ,那么预测改为 y^=sign(θTxi) ,更新公式改成了,
θk=θk1ηkyixi
这个就是感知机算法(perceptron algorithm),这是个历史上的第一个机器学习模型。

8.5.5 A Bayesian view

贝叶斯总有更好的方法,online learning 都能做,就是你看不懂。

8.6 Generative vs discriminative classifiers 生成分类器 VS 判别分类器

同样是处理分类问题,高斯判别分析(GDA, Gaussian Discriminant Analysis)是生成模型,假设数据是符合高斯分布的,去最大化联合对数似然(joint log likelihood) Ni=1logp(yi,xi|θ) ;而生成模型则是最大化条件对数似然(conditional log likelihood) Ni=1logp(yi|xi,θ)

8.6.1 Pros and cons of each approach

总结了一下两种模型的优缺点。

问题 生成模型 判别模型
模型拟合 更容易 要解决凸优化问题
添加新类别 只需改动一点 要重训练
数据丢失 可以处理 无法处理
处理无标签数据 处理半监督问题 无法处理
输入和输出的对称 可以逆着从输出推断输入 无法处理
特征预处理 无法处理 可以推广到 GLM
概率矫正 概率易走极端 概率较正确

8.6.2 Dealing with missing data

8.6.2.1 Missing data at test time

8.6.2.2 Missing data at training time

8.6.3 Fisher’s linear discriminant analysis (FLDA) *

8.6.3.1 Derivation of the optimal 1d projection

8.6.3.2 Extension to higher dimensions and multiple classes

8.6.3.3 Probabilistic interpretation of FLDA *

猜你喜欢

转载自blog.csdn.net/zhangxb35/article/details/54927952