概率视角下的线性模型:逻辑回归有解析解吗?

©PaperWeekly 原创 · 作者 | 苏剑林

单位 | 追一科技

研究方向 | NLP、神经网络

我们知道,线性回归是比较简单的问题,它存在解析解,而它的变体逻辑回归(Logistic Regression)却没有解析解,这不能不说是一个遗憾。因为逻辑回归虽然也叫“回归”,但它实际上是用于分类问题的,而对于很多读者来说分类比回归更加常见。准确来说,我们说逻辑回归没有解析解,说的是“最大似然估计下逻辑回归没有解析解”。那么,这是否意味着,如果我们不用最大似然估计,是否能找到一个可用的解析解呢?
▲ 逻辑回归示意图
本文将会从非最大似然的角度,推导逻辑回归的一个解析解,简单的实验表明它效果不逊色于梯度下降求出来的最大似然解。此外,这个解析解还易于推广到单层 Softmax 多分类模型。

线性回归

我们先来回顾一下线性回归。假设训练数据为 ,其中 ,为了便于跟代码实现对齐,这里默认情况下向量都是行向量。线性回归假设 满足线性关系 ,这里 ,然后通过最小化下述均方误差来估计它们:
这个目标直接展开求导就行了,只是一个二次函数的最小值问题,所以有解析解。
1.1 概率视角
从概率分布的角度来看,均方误差意味着我们假设了 是均值为 的正态分布。现在,我们来做一个更强的假设:
假设联合分布 是正态分布。
在这个假设之下,我们可以直接写出对应的条件分布:
这里的 是 的均值向量, 是 的协方差矩阵。正态分布的条件分布形式可以直接在维基百科 [1] 找到,其证明可以参考 StackExchange [2] 或相关概率统计书籍。
现在对照 ,我们可以得到:
这其实就是线性回归的解析解。
1.2 思考分析
让我们捋一捋上述过程。首先,默认情况下,线性回归只是做了条件分布 的假设,通过最小二乘法我们就可以获得线性回归的解析解,这是常规的线性回归的介绍过程;然后,在上面中,我们做了一个更加强的假设“联合分布 是正态分布”,但是最终依然获得了一样的解析解。
为什么更加强的假设却获得了一样的结果呢?事实上,从损失函数(1)就可以看到,它关于 是二次的,关于 同样是二次的,这意味着它顶多用到关于 的二阶矩信息,因此作出联合分布是正态分布的假设,并不会改变最终结果,因为正态分布已经保留了所有不超过二阶的矩信息(均值和协方差)。
进一步地,我们可以想象到,任何线性模型(线性回归、逻辑回归、单层神经网络等)主要用到的数据统计量,应该也都是不超过二阶的矩。因此,在处理线性模型时,我们可以根据具体情况适当地作出正态分布的假设,理论上来说,这可以获得一个等价结果,或者一个足够好的近似结果。
逻辑回归

利用上述思路,我们就可以给出逻辑回归的一个解析解,该结果笔者首先在《Easy Logistic Regression with an Analytical Solution》[3] 看到,看后颇有启发,特与大家分享。

假设训练数据为 ,其中 ,这意味着它是一个二分类数据集,建立概率模型:
这里 。 的常规估计方式是最大似然,也就是最小化下述 loss:
我们没法计算出它的解析解。然而,如果不走最大似然这条路,另外设计求解路线,是有可能得到解析解的。

2.1 别出心裁

首先,不难验证对于逻辑回归模型,我们有:
这也就是说,逻辑回归相当于以 为输出的线性回归模型。然而 的直接估计并不容易,我们利用贝叶斯公式:
这里的 分别是正负两个类别的概率,这个容易估计。 自然就是正负样本所满足的分布了,现在我们对它们作正态分布假设:
假设 是具有同样协方差矩阵的正态分布。
这里“同样协方差矩阵”读者可能会觉得莫名其妙,这一点我们后面再讨论。在这个假设之下,记:
其中 分别就是正负样本的均值向量, 可以用全体样本的协方差矩阵来估计。回顾正态分布的概率密度表达式:
代入式(7)后展开化简,我们发现二次项刚好抵消,于是:
对比式(6)后我们得到:
这就是逻辑回归的一个解析解。当然,这也不算特别新的内容,它的思路跟“线性判别分析(Linear Discriminant Analysis)[4] ”其实是很一致的。

2.2 思考分析

目前,对于这个解,读者最有疑虑的可能是“同样协方差矩阵”这个假设是否过强了。从技巧上来看,这个假设是为了让 的二次项正好抵消,从而只剩下一次项而直接得到逻辑回归的解析解;那么从理论上来看,这个假设有没有什么必然性呢?事实上,我们可以认为,逻辑回归本身就(近似地)隐含了“同样协方差矩阵”这一假设。
怎么理解这句话呢?首先,对于逻辑回归模型来说,式(6)是自然成立的,而贝叶斯公式也是恒成立的,所以结论就是 必然只有一次项和常数项。而线性回归的例子已经告诉我们,对线性模型的数据分布做正态假设一般是不损失什么信息的,所以我们假设 为正态分布(一定程度上)也是合理的。而假设它们为正态分布后,如果要使得结果没有二次项,那么协方差矩阵必然要一致。

也就是说,当你决定使用逻辑回归模型接受正态假设的那一刻起,就做出了“正负样本数据具有同样协方差矩阵”这个假设了~

特别地,当协方差矩阵为单位阵的时候,式(11)变得比较简单:
我们可以先对原始数据做一个白化(参考《你可能不需要 BERT-flow:一个线性变换媲美 BERT-flow》[5] ),使其均值为 0、协方差为单位阵,然后再套用上式。理论上来说,先白化再用式(12),跟直接用式(11)结果是一样的。然而,对于高维数据来说,白化后在数值计算上会稳定很多,所以实际使用时,都推荐先白化后用式(12)的方式。

2.3 多分类器

上述关于逻辑回归的解析解,还可以很方便地推广到“全连接+Softmax”的多分类场景中,该场景假设类别 i 的概率为:
基于同样的推理和假设,我们可以得到类似式(6)的结果:
以及类似式(10)的结果:
对比之下,我们可以发现一组解是:

实验评估

那么,上面推导的解析解可用性如何呢?能不能比得上梯度下降求出来的解呢?这里做了几个文本方面的实验,都是用 RoFormer-Sim-FT 来抽取固定的句向量特征,然后后面接一个全连接层分类,比较用梯度下降求出来的解和上述解析解的效果差异。实验代码开源如下:
Github:https://github.com/bojone/analytical-classification
3.1 全量样本
评测包括四个分类任务:情感分类(SENTIMENT)[6] 、长文本分类(IFLYTEK)[7] 、短新闻分类(TNEWS)[7] 、电商主题分类(SHOPPING)[8] ,大致情况如下:
实验的评测指标都是准确率,全量训练样本下效果如下:
3.2 小量样本

从上述表格可以看出,就训练集的效果而言,解析解通常是不如梯度下降的,但是它在验证集和测试集的效果都接近甚至超越梯度下降的表现,总的来说,解析解的训练集和验证集效果差距更小,这意味着解析解可能是一个泛化能力比较好的解,它可能更适合于数据量比较小、训练集和验证集分布不一致等场景。

为了验证这个猜测,我们将每个数据集的训练集都只保留1000条数据,然后继续进行实验:
可以看到,训练数据变少的情况下,训练集的差距也变小了,但是解析解在验证集上的效果全面超过了梯度下降,这进一步显示出解析解在小样本场景下良好的泛化性能。
3.3 综合评述

其实上述结论也不难理解。大家都是线性模型的情况下,解析解相比于梯度下降多了一条“每个类的样本服从具有同样协方差矩阵的正态分布”的假设。当数据很多的情况下,我们对每个类的分布估计越发准确,此时该假设偏离程度越严重,从而没有自适应训练的梯度下降好;相反,当数据很少的情况下,每个类的分布本身就难以估计,此时该假设反而是一个有用的先验信息,有助于模型“由点到面”地泛化,而梯度下降反而由于缺乏先验而泛化能力不足。

换句话说,数据少的情况下,梯度下降背完几个样本就完事了,没有“触类旁通”,而解析解相当于通过额外的假设“造”了更多的样本出来让模型背,从而学到的东西更多了;数据多的情况下,梯度下降背得多,从而“熟能生巧”,而解析解还在按照自己的假设来“造”样本,这时候造出来的样本还不如真实的样本,从而效果可能有所下降。

那么,解析解有什么提升空间吗?比较直接的思路是,我们想办法对 做更精细的估计,然后转化为线性回归问题来估计参数。至于怎么更好地估计 ,思路也不少,比如设为协方差不一致的正态分布或者干脆用核密度估计等,这就留给大家自由发挥了。

本文小结

本文介绍了逻辑回归的一个解析解,并且将它推广到了单层 Softmax 分类的场景。实验显示该解析解相比梯度下降有更好的泛化能力,尤其是在小样本场景通常还有更好的效果。

参考文献

[1] https://en.wikipedia.org/wiki/Multivariate_normal_distribution#Conditional_distributions

[2] https://stats.stackexchange.com/questions/30588/deriving-the-conditional-distributions-of-a-multivariate-normal-distribution

[3] https://towardsdatascience.com/easy-logistic-regression-with-an-analytical-solution-eb4589c2cd2d

[4] https://en.wikipedia.org/wiki/Linear_discriminant_analysis

[5] https://kexue.fm/archives/8069#标准化协方差矩阵

[6] https://github.com/bojone/bert4keras/blob/master/examples/datasets/sentiment.zip

[7] https://www.cluebenchmarks.com/introduce.html
[8] https://github.com/SophonPlus/ChineseNlpCorpus/blob/master/datasets/online_shopping_10_cats/intro.ipynb

(0)

相关推荐