未完待续
George Box said: “All models are wrong, some are useful”
线性模型与逻辑回归
最近准备把基础算法整理一遍,之前看了《西瓜书》和《统计学方法》,本来是准备结合这两本书进行整理的。周末在家看到PRML躺在书架上,就拿起来看了几页,发现这本书写的真的是太全面了。很多知识点在当时来说都比较超前,尤其是在神经网络那一章,ResNet、Dropout的思路都明明白白的写在书里。
还是准备先照着前两本书将知识点整理出来,后续PRML读完之后再对之前的内容进行补充。对于我来说,PRML还是有些难度的,好多知识点都是一知半解的。
本文的主要整理的内容为:线性回归-->广义线性回归-->逻辑回归
1、线性模型
线性模型一般用于解决回归问题,最简单模型是输入变量的线性组合
(y(x,w)=w_0+w_1x_1+...+w_Dx_D),其中(x=(x_1,...,x_D)^T ···(3.1))
(3.1)是参数(w)的一个线性函数,同时也是输入变量(x_i)的一个线性函数,这给模型带来的极大的局限性。
因此扩展模型的类别,将输入变量的固定的非线性函数进行线性组合,形式为:
(y(w,x)=w_0+underset{j=1}{overset{M-1} sum} w_jphi_j(x)),其中(phi_j(x))被称为基函数(basis function)
通常设置一个额外的虚“基函数”(phi_0(x)=1),此时函数可以写为:
(y(w,x)=underset{j=0}{overset{M-1} sum} w_jphi_j(x))
通过使用非线性基函数,能让函数(y(x,w))成为输入向量(x)的一个非线性函数;但是该函数还是(w)的线性函数,因此还是被称为线性模型。
1.1 线性模型参数求解
线性回归假设预测值和目标值之间的误差是符合高斯分布的,即:
(t=y(x,w)+epsilon),其中(epsilon)是一个零均值的高斯随机变量,精度(方差的倒数)为(eta=1/sigma^2),因此有:
(p(t|x,w,eta)={cal N}(t|y(x,w),eta^{-1})),即预测值(t)的分布服从均值为(y(x,w)),方差为(eta^{-1})的高斯分布。
({Bbb E}[t|x]=int t p(t|x)dt = y(x,w))(假设高斯分布后,预测值的期望与真是值是相等的)
当观测样本数为(N)时,可得似然函数如下:
(p({ t t}|X,w,eta)=underset{n=1}{overset N prod} {cal N}(t_n|w^Tphi(x_n),eta^{-1}))
取对数可得
(ln p({ t t}|w,eta)=underset{n=1}{overset N sum} ln {cal N}(t_n|w^Tphi(x_n),eta^{-1})=frac{N}{2}ln eta - frac{N}{2}ln(2pi)-frac{eta}{2}underset{n=1}{overset N sum}(t_n-w^Tphi(x_n))^2)其中最后一项就是平方和误差,定义为(E_D(w)=frac{1}{2}underset{n=1}{overset N sum}(t_n-w^Tphi(x_n))^2)
对(ln p(t|w,eta))分别关于(w)和(eta)求偏导,并令偏导数为零,可得
( abla ln p({ t t}|w,eta)=etaunderset{n=1}{overset N sum}(t_n-w^Tphi(x_n))phi(x_n))
从而可得(underset{n=1}{overset N sum}t_n phi(x_n)^T - w^Tunderset{n=1}{overset N sum}Big(phi(x_n)phi(x_n)^TBig)=0)
从而可以求解得到(w_{ML}=(Phi^TPhi)^{-1}Phi { t t})
接下来进一步分析偏置参数(w_0),平方和误差(E_D(w))展开式为:
(E_D(w)=frac{1}{2}underset{n=1}{overset N sum}(t_n-w^Tphi(x_n))^2=frac{1}{2}underset{n=1}{overset N sum}Big(t_n-w_0 - underset{j=1}{overset {M-1} sum} w_jphi_j(x_n)Big)^2)
求关于(w_0)的偏导并令其等于0,可得
(w_0 = ar t - underset{j=1}{overset{M-1}sum}w_jar phi_j),其中(ar t = frac{1}{N}underset{n=1}{overset N sum} t_n, ar phi_j = frac{1}{N}underset{n=1}{overset N sum} phi_j(x_n))
偏置(w_0)补偿了目标值的平均值在基函数的平均值的加权求和之间的差。
对噪声精度参数(eta)最大似然函数,结果为:
(frac{1}{eta_{ML}}=frac{1}{N}underset{n=1}{overset N sum} (t_n - w_{ML}^Tphi(x_n))^2=sigma_{ML}^2)
1.2 基函数与激活函数
1.2.1 基函数
上一节描述过程中,一直使用基函数(phi(x)),是为了增加模型的灵活性,常见的基函数有:
1)幂指函数的形式:(phi_j(x)=x^j)
2)样条函数:将输入空间切分成若干个区域,然后对于每个区域用不同的多项式函数拟合
3)高斯函数:(phi_j(x)=exp(-frac{(x-mu)^2}{2gamma^2}))
4)sigmoid基函数:(phi(x)=sigma(frac{x-mu}{gamma})),其中(sigma(a)=frac{1}{1+exp(-a)})
1.2.2 激活函数
基函数只是将输入数据(x)进行非线性变换,对于参数(w)而言仍然是线性函数;而使用更广泛的是对(w)和(x)同时进行非线性变化,此时的变换函数被称为激活函数,即:
(y(x)=f(w^Tx+w_0))(一般为了方便,可在输入(x)中增加一列(x_0=1),此时便可以将(w_0)约去,将函数简写为(y(x)=f(w^Tx))
(f(·))被称为激活函数,通常是一个单调可微的函数。
此时对应的模型就是“广义线性模型(Genelrlized Linear Model:GLM)”。激活函数的反函数(f^{-1}(·))也被称为联系函数(Link function)。
后续将介绍的逻辑回归,实际上就是指定激活函数后的一个广义线性模型。
1.2.3 正则化
线性模型的误差函数为(E_D(w)=frac{1}{2}underset{n=1}{overset N sum}(t_n-w^Tphi(x_n))^2)(使用该误差函数求解参数的方法也被称为最小二乘法)
此时模型参数为:(w_{ML}=(Phi^TPhi)^{-1}Phi { t t})
过拟合问题是几乎任何机器学习模型都会遇到的问题,为了抑制过拟合的影响,一种常见的方法是在损失函数中加入对参数的控制,即在模型损失基础上加上参数值控制:(E_D(w) + lambda E_W(w)),这里的(lambda)是正则化系数。
例如加入L2正则化:(Loss_{new}=frac{1}{2}underset{n=1}{overset N sum}(t_n-w^Tphi(x_n))^2+frac{lambda}{2}w^Tw)
此时求解的参数为:(w_{ML}=(lambda I + Phi^TPhi)^{-1}Phi { t t})
正则化的一般形式可以表示为:(Loss_{new}=frac{1}{2}underset{n=1}{overset N sum}(t_n-w^Tphi(x_n))^2+frac{lambda}{2} underset{j=1}{overset Msum}(w_j)^q)
(q)取不同值时的正则化轮廓线为:
![image-20210803100111756](/Users/jinyongliu/Library/Application Support/typora-user-images/image-20210803100111756.png)
2、逻辑回归
2.1 Logistic分布与Sigmoid基函数
设(X)时连续变量,(X)服从Logistic分布是指(X)具有下列分布函数和密度函数:
(F(X) = P(Xleq x)=frac{1}{1+exp(-frac{x-mu}{gamma})})和(f(x)=F'(x)=frac{e^{-(x-mu)/gamma}}{gamma(1+e^{-(x-mu)/gamma})^2})
1.2.1节中介绍基函数的时候,有介绍过sigmoid基函数,即(phi(x)=frac{1}{1+exp(-frac{x-mu}{gamma})})。这里的(mu)称为位置参数,(gamma)称为形状参数。
说明Logistic分布与sigmoid基函数描述的是同一个函数。
2.2 二项Logistic回归模型
前面章节引入了GLM模型,如果要解决的任务是分类任务,应该怎么办?这时只需要找一个单调可微的函数将分类任务的真实标记(t)与线性回归的预测值联系起来。考虑二分类任务,其输出标记(tin {0,1}),而线性模型产生的预测值(z=w^Tx+w_0)是实值。需要将实值(z)转换为(0/1)值。最直接的处理方法是:
(t = egin{cases} 0 & z<0 \ 0.5 & z=0 \ 1 & z>1end{cases})
但是,从下图可以看出,单位阶跃函数不连续,因此不能直接用作GLM中的激活函数。于是需要找一个在一定程度上近似单位阶跃函数的“替代函数”,并希望它单调可微。而Logistic函数正是这样一个常用的替代函数。Logistic函数将(z)值转化为一个接近0或1的(y)值,并且其输出值在(z=0)的附近变化很陡。
此时对应模型的输出可以设为:
(P(Y=1|x)=frac{1}{1+exp(-w^Tx)}=frac{exp(w^Tx_i)}{1+exp(w^Tx_i)}),(P(Y=0|x)=1- P(Y=1|x)=frac{1}{1+exp(w^Tx)})
一个有趣的对数几率(log odds或logit)公式是:(log frac{P(Y=1|x)}{1-P(Y=1|x)}=log frac{P(Y=1|x)}{P(Y=0|x)}=w^Tx)
它表示了事件发生的概率与该事件不发生的概率的比值,即(P(Y=1|x))与(P(Y=0|x))的比值。
从上式中还可以看出,对数几率是输入(x)的线性函数;或者说输入(Y=1)的对数几率是由输入(x)的线性函数表示的模型。
线性函数的值越接近正无穷,概率值就越接近1;线性函数的值越接近负无穷,概率值就越接近0。
2.3 模型参数估计
由于Logistic的输出值只有({0,1})两个取值,很自然的可以假设其服从伯努利分布,即
(Bern(x|mu)=mu^x(1-mu)^{1-x})。假设有(N)个样本,采用伯努利分布和极大似然估计法,可得:
(p({ t t}|X,w)=underset{n=1}{overset N prod}[p(y_i=1|x_i)]^{t_i}[1-p(y_i=1|x_i)]^{1-t_i}),其中(P(y_i=1|x_i)=frac{exp(w^Tx_i)}{1+exp(w^Tx_i)})
从而可得:
(egin{align} ln p({ t t}|X,w) & =underset{n=1}{overset N sum}[t_i log p(y_i=1|x_i) + (1-t_i) log (1-p(y_i=1|x_i))] \ & = underset{n=1}{overset N sum}[t_i log frac{p(y_i=1|x_i)}{1-p(y_i=1|x_i)}+ log (1-p(y_i=1|x_i))] \ & = underset{n=1}{overset N sum}[t_i (w^Tx_i) - log (1+exp(w^Tx_i))]end{align})
利用优化算法(如梯度下降或牛顿法),可以得到(w)的估计值,记为(w_{ML})
优化方法可以参考:https://www.cnblogs.com/laojifuli/p/15046910.html
此时得到的逻辑回归模型为:
(P(Y=1|x)=frac{exp(w_{ML}^Tx)}{1+exp(w_{ML}^Tx)}),(P(Y=0|x)=frac{1}{1+exp(w_{ML}^Tx)})
2.4 多项逻辑回归
二元变量只能取两种可能值中的某一种,多元变量是有多个取值,如(K=6)种取值的分布(t=(0,0,1,0,0,0)),此时对应(t_3=1)
使用(mu_k)表示(t_k=1)的概率,那么(x)的分布就是(p(t|mu)=underset{k=1}{overset K prod}mu_k^{t_k})
其中(mu=(mu_1,...,mu_K)^T),参数(mu_k)要满足(mu_k>0)和(sum_kmu_k=1)和(underset{t}sum p(t|mu)= underset{k=1}{overset K sum}mu_k=1)
并且({Bbb E}[t|mu]=-underset{t}sum p(t|mu)t= (mu_1,...,mu_K)^T=mu)
此时对应的多项逻辑回归模型是:
(P(Y=k|x)=frac{exp(w_k^Tx)}{1+sum_{k=1}^{K-1} exp(w_k^Tx)}, k=1,2,...,K-1)
(P(Y=K|x)=frac{1}{1+sum_{k=1}^{K-1} exp(w_k^Tx)}, k=1,2,...,K-1)
多项Logistic回归的参数估计方法也可以推广到Logistic回归
3. 参考文献
link function:https://www.zhihu.com/question/28469421
指数分布族:https://blog.csdn.net/Queen0911/article/details/103378732
交叉熵损失函数:https://blog.csdn.net/weixin_41806692/article/details/82463577
Logistic损失函数:https://blog.csdn.net/u013385018/article/details/92644918
1)均方误差损失函数不是凸函数
2)会出现梯度消失
交叉熵和极大似然函数的关系:https://www.cnblogs.com/breezezz/p/11277131.html
为什么使用对数损失函数:https://blog.csdn.net/saltriver/article/details/63683092
https://blog.csdn.net/saltriver/article/details/53364037