辑斯蒂回归(Logistic Regression)和最大熵模型(Maximum Entropy Model)是机器学习中极其经典、优美且底层互通的两个模型。它们表面上看似起源不同——一个是基于统计学的几率模型,另一个是基于信息论的无偏见假设——但最终在数学的底层逻辑上却是殊途同归的。
第一部分:直觉与基石
1:分类与回归的本质裂痕
在机器学习的世界里,任务主要分两类:回归(Regression)和分类(Classification)。
回归任务:预测连续的值。实例:根据房屋面积预测房价,输出可能是 150 万,也可能是 230.5 万。它的数学空间是整个实数集 。
分类任务:预测离散的标签。实例:根据细胞大小预测肿瘤是良性(用 0 表示)还是恶性(用 1 表示)。它的数学空间是集合 。
为什么不能直接用“线性回归”来做分类? 线性回归的方程是直线。如果我们硬用它来预测肿瘤的良恶性,规定输出
为恶性,
为良性,会遇到两个致命问题:
越界:直线是可以无限延伸的。你的模型可能会输出 或者
。但概率只能在
之间,输出负数或大于 1 的数在现实中毫无意义
异常值的拉扯效应(Outlier Pull):假设你用一条线刚好完美分开了良性和恶性。此时,突然来了一个非常巨大的恶性肿瘤数据点。为了去拟合这个极其靠右的异常点,你的回归直线会被强行“拉平”。这一拉,原本 的阈值线就会向右偏移,导致大量原本被正确分类的恶性肿瘤,被错误地预测成了良性。
结论:直线太“直”了,也太“无限”了。我们需要一种能把输出结果牢牢锁在 之间的模型。
2:几率(Odds)与对数几率(Log-Odds)
既然不能直接拟合标签 ,统计学家想到了一个曲线救国的方法:我们去拟合“概率”
。但是概率
依然被困在
之间,而线性方程
的结果在
。
如何把 的概率映射到
?我们需要施展两次数学戏法:
第一次戏法:几率(Odds)
-
概念:一件事情发生的概率与不发生的概率之比。
-
公式:
-
实例:在赛马场上,一匹马赢的概率是
,输的概率是
。那么它赢的几率就是
。如果赢的概率是
,几率就是
。如果是0.999999.....,那么几率就是无穷大
-
效果:我们成功把定义域从
扩大到了
。
第二次戏法:对数几率(Log-Odds)
-
概念:几率只有正数,没有负数,还是不够。怎么办?取自然对数(
)!
-
公式:
-
效果:当
时,对数几率趋近于
;当
时,对数几率趋近于
。
-
伟大之处:现在,
的值域变成了
,完美匹配了线性模型
的输出空间!
3:Sigmoid 函数的诞生
既然对数几率和线性模型在空间上匹配了,我们就可以让它们画上等号:
但是,在实际预测时,我们想要的是概率 ,而不是什么“对数几率”。我们需要把这个公式反过来求解
。 为了书写方便,我们把线性方程的输出设为
,即
。
开始推导:
-
去掉对数:
-
展开化简:
-
提取
-
得到最终概率:
为了让公式更优美,分子分母同时除以 ,我们就得到了大名鼎鼎的 Sigmoid 函数:
实例:Sigmoid 函数就像一个魔法漏斗。无论你塞进去多大或多小的实数(比如 或
),只要穿过这个漏斗,流出来的结果永远是一个在
之间的纯正的“概率值”。而且它在
处刚好等于
(也就是分类的临界点)。
4:逻辑斯蒂回归模型的数学表达
将所有积木拼在一起,我们终于得到了第一部分的核心——逻辑斯蒂回归的模型。
当我们面对一个输入特征,模型预测它属于正类(标签为 1)的概率为:
总结一下本质:
所谓的逻辑斯蒂回归,其实一点也不“逻辑”,它甚至不是“回归”。它本质上是一个线性分类模型。
它是在用“线性回归”的方法,去拟合数据的“对数几率”。因为套上了一层 Sigmoid 的外衣,它的输出变成了概率,从而圆满解决了分类任务。
第二部分:寻找最优解参数估计与优化
5:极大似然估计(Maximum Likelihood Estimation, MLE)
机器不知道什么是对错,它只能依赖统计学规律。这里我们引入统计学中最霸道也最有效的哲学:“存在即合理”。
核心思想:如果一件事情发生了,那么在所有可能的参数中,使得这件事情发生概率最大的那个参数,就是最好的参数。
-
实例:我手里有一枚磨损严重的硬币,不知道抛出正面的概率 p 是多少。我抛了 10 次,结果是 8 次正面,2 次反面。
-
如果 p = 0.1,发生“8正2反”的概率极低。
-
如果 p = 0.5,发生概率一般。
-
如果 p = 0.8,发生“8正2反”的概率是所有选项中最大的!
-
所以,我们估计p最可能就是 0.8。这就是“极大似然估计”。
-
-
在逻辑斯蒂回归中:我们把所有样本被正确分类的概率全部乘起来(这被称为似然函数 Likelihood)。我们要找到一组
和 b,让这个巨大的乘积达到最大。
6:交叉熵损失函数(Cross-Entropy Loss)
虽然“把所有概率乘起来”在逻辑上很完美,但在数学和计算机里却是个灾难:
-
连乘导致下溢出:无数个
之间的小数相乘,结果会迅速逼近 0,计算机根本存不下这个精度。
-
乘法求导太复杂:微积分里处理连乘的导数是让人崩溃的。
如何把“乘法”变成“加法”?还是老朋友——取对数(Log)!
-
数学戏法:
。
-
损失函数的诞生:因为优化算法习惯于“求最小值”(找最低谷),而似然估计是“求最大值”。所以我们再给它加一个负号。
-
结论:最小化“负对数似然” = 极大似然估计。这个算出来的负对数似然公式,刚好就是大名鼎鼎的交叉熵损失(Cross-Entropy Loss)!
为什么不能用线性回归里的均方误差(MSE)?
如果你把 Sigmoid 函数硬塞进 MSE 公式里,你会得到一个坑坑洼洼的非凸曲面(就像月球表面)。算法在寻找最低谷时,极容易卡在半山腰的一个假坑里(局部最优解)。而交叉熵配合 Sigmoid,在数学上被证明是一个完美的“大铁锅”(凸函数),不管你从哪里出发,都只会滑向唯一的最深处(全局最优解)。
7:梯度下降法(Gradient Descent)
现在,我们有了一个完美的大铁锅(交叉熵损失函数),任务变成了:如何找到锅底的最低点?
-
实例:想象你被蒙上眼睛,随机扔在了一座碗状大山的半山腰。你要怎么走到谷底?
-
用脚感受一下当前地面的倾斜方向(计算梯度/导数)。
-
朝着最陡峭向下的方向,迈出一步(负梯度方向更新)。迈的步子大小,叫做“学习率(Learning Rate)”。
-
重复第一步,直到感觉地面平了(梯度为0),你就到了谷底。
-
-
微积分视角:模型每次看一遍数据,就计算一下损失函数对参数
的导数
,然后让
减去这个导数,一步步逼近最优解。
第三部分:多项逻辑斯蒂回归与 Softmax
8:Softmax 函数
我们之前提到的 Sigmoid 是处理“是或否”(例如良性/恶性)的利器。但如果我们面对的是多分类任务呢?
-
实例:根据天气特征,预测明天是“晴天(A)”、“下雨(B)”还是“下雪(C)”。
显然,这已经不是一个线性输出 能搞定的了。为了处理 3 个类别,模型需要计算出 3 个维度的原始得分(我们称之为 Logits,记作
)。
问题来了:假设模型算出的得分为:。这些数字毫无物理意义,而且它们加起来也不等于 1,根本不能叫做“概率”。
我们需要一个比 Sigmoid 更强大的魔法漏斗——Softmax。它负责把任意多个实数得分,转化为加和为 1 的概率分布。
它的计算逻辑非常简单优雅:
-
放大差异并且化负为正:用自然对数底
作为底数,将所有得分变为指数形式(
)。这既保证了所有的值都是正数,又将分数之间的差距成倍放大了(“Soft”里的“max”体现于此,得分最高的会变得极为突出)。
-
归一化:把这些指数加起来作为分母,让每个指数去除非母,得到各自的比例。
对于第 个类别,其概率计算公式为:
(其中 K 是类别总数)
-
Softmax 的本质:它就是多维版本的 Sigmoid。实际上,如果类别总数 K=2,Softmax 在数学推导上可以严丝合缝地化简为 Sigmoid。它们是完全等价的。
9:多分类逻辑斯蒂回归模型
有了 Softmax 这个武器,多分类的逻辑斯蒂回归就水到渠成了。
-
模型的形态:
对于
个类别,我们不再只训练一组权重
。我们需要为每一个类别
训练一组专属的权重向量
和偏置
。
所以,对于输入
,第
个类别的得分就是
。
-
组合在一起的最终公式:
模型预测样本
属于第
类的概率为:
-
优化过程:
与二分类一样,我们依然使用交叉熵损失来衡量这个概率分布和真实标签之间的差距,依然使用梯度下降法来更新所有的
和 b。一切底层逻辑都没有改变。
到这里,逻辑斯蒂回归的完整版图已经拼齐了。它以极其简洁优雅的线性组合加上 Softmax/Sigmoid 映射,构筑了现代深度学习分类网络最核心的输出层结构。
第四部分:信息论的哲学 —— 最大熵原理
10:什么是“熵”(Entropy)?
1948 年,克劳德·香农(Claude Shannon)把热力学里的“熵”借到了信息论中,用来度量一个系统的“不确定性”或“混乱程度”。
-
直觉认知:
-
抛一枚两面一样的作弊硬币(永远是正面):结果毫无悬念,不确定性为 0,熵极小。
-
抛一枚正常的硬币(正反各 50%):结果无法预测,不确定性很高,熵很大。
-
-
数学表达:
对于一个离散随机变量 X,它的概率分布是 P(x),那么它的香农熵定义为:
(注:当 P(x)=0 时,规定
)。这个公式的物理意义是:概率越平均,系统的不确定性就越大,熵就越高。

你会发现,当 p = 0.5 时(最不可预测的状态),曲线到达了最高点,此时的熵最大!
11:最大熵原理的核心思想
了解了熵,我们来看最大熵原理。这是信息论乃至科学界的一条顶级哲学定律。
-
核心思想:当我们根据已知的不完全信息,去推断未知的概率分布时,最好的选择是:保留全部的不确定性,对未知不作任何毫无根据的假设。 换句话说,在满足已知条件的众多概率分布中,我们应该选择那个“熵最大”的分布。
-
假设我手里有一枚 6 个面的骰子。我让你猜每个面朝上的概率。
-
情况 1(一无所知):我什么都不告诉你。根据最大熵原理,你不应该偏袒任何一面,最客观的猜测是
。(平均分布的熵最大)。
-
情况 2(已知约束):我偷偷告诉你一个小道消息:“这枚骰子被我动了手脚,掷出 1 和 2 的概率之和刚好是 0.5”。
-
瞎猜 A:你认为 P(1)=0.5,P2= 0。这是错的,因为你擅自假设了面 2 不可能出现,带入了主观偏见。
-
最大熵的猜测:在满足 P(1)+P(2)=0.5 以及所有概率和为 1 的前提下,让其余的分配尽可能“平均”。也就是:P(1)=0.25, P(2)=0.25,剩下的 0.5 平均分给后面四个面,即 P(3)=P(4)=P(5)=P(6)=0.125。
-
-
一句话总结最大熵:知之为知之(满足已知约束),不知为不知(未知部分尽量平均/最大化熵)。
训练模型时,我们只给出一些特征与标签的统计数据(比如“包含‘便宜’这个词的评论,70%是好评”)。
最大熵原理要求:模型必须拟合这个70%的约束,但对于其他任何没提到的词,模型不能擅自瞎说“这个词一出现就好评”。所以在满足所有统计约束后,模型要把剩余的不确定性最大化——结果恰恰就是逻辑回归/Softmax的形式。
12:特征函数(Feature Function)与经验分布
为了把上面那种“小道消息”转化成计算机能懂的数学语言,我们需要引入“特征函数”。
什么是经验分布?
经验分布就是你手头那一堆数据,直接统计出来的频率。
比如你记录了100个买冰淇淋的顾客:
-
30个买了巧克力
-
30个买了草莓
-
40个买了香草
那“经验分布”就是:巧克力30%,草莓30%,香草40%。它就是现实的简单复刻,没有任何加工。
什么是特征函数?
它就是一个指示器。用数学式子 来表示。如果某件事发生了,它就等于 1,没发生就等于 0。
还是冰淇淋的例子,你可以定义特征函数:
-
f_天气热(x):如果顾客来的时候气温超过30度,输出1,否则0。 -
f_买巧克力(x):如果买了巧克力,输出1,否则0。
在数学上,它就是一个从样本(顾客、天气等)到一个数字的函数。
在最大熵模型里,我们通常用二值特征(0或1),比如“词是否出现”“是否满足某个条件”。
举例串联:
数据(经验分布)里,你统计到:
-
所有顾客中,买草莓的比例是 30%。
-
天气热时,买草莓的比例是 40%。
那你就定义两个特征函数:
-
f_买草莓(x):买了草莓就1,否则0。 -
f_天气热且买草莓(x):如果天气热并且买了草莓,输出1,否则0。
然后你的模型分布 PP 必须满足:
-
模型预测下,
f_买草莓的平均值 = 经验分布里f_买草莓的平均值(就是30%)。 -
模型预测下,
f_天气热且买草莓的平均值 = 经验分布里的那个40%(乘上天气热的比例等等,具体计算会有细节,但意思就是数字对上)。
在“符合这两个数字”的所有可能的概率分布里,你挑一个熵最大的——那个就是最大熵模型。
我们希望我们要找的完美模型 ,它计算出来的特征期望
,必须严丝合缝地等于真实数据统计出来的经验期望
。
公式表达为:
这就是我们加给“熵”的紧箍咒!有多少个“已知事实”,就有多少个特征函数和约束条件。
第五部分:最大熵模型的推导
在这里,我们将用微积分和优化理论,把“哲学”变成可以跑在计算机里的“代码”。
13:带约束的最优化问题
现在我们要把前面的“哲学思想”翻译成标准的数学最优化问题。
假设我们要寻找的最完美模型是条件概率分布 (给定输入 x 时,输出标签 y 的概率)。
我们的目标(Objective):
让模型在整个训练数据集上的条件熵达到最大。
(注: 是输入数据
在训练集中的经验分布,作为一个权重视为已知常数。
我们的限制(Constraints):
事实约束:模型算出来的特征期望,必须等于训练集里的经验期望(假设我们有个已知事实/特征函数
)。
假设你定义了一个特征函数 f(x,y),用来检测某种现象是否发生(比如“词‘便宜’出现且标签为好评”时输出1,否则0)。
-
经验分布会告诉你一个具体的数字:
在训练数据里,这个特征的平均值 = 0.07(即7%的样本同时满足“便宜”和“好评”)。 -
模型会输出一个条件概率 P(y∣x),基于这个概率,我们也可以算出该特征在模型下的期望值。
最大熵的“事实约束”就是要求:
模型的期望=训练数据的经验期望
概率约束:所有可能的标签 y 的概率加起来必须等于 1。
这在数学上叫做“带等式约束的最优化问题”。
14:拉格朗日乘子法(Lagrange Multipliers)
痛点:微积分里的求导(令导数为 0)只能解决“无约束”的最优化问题。现在我们身上绑着 n+1 个约束条件,没法直接求导。怎么办?
拉格朗日乘子法,就是为了干掉约束条件而生的伟大发明。
实例:你在一个被栅栏围起来的后院里,想找到地势最高的一点(目标)。
但你不能翻出栅栏(约束)。
拉格朗日的做法是:把栅栏拆了!但是,为了防止你跑得太远,他在原本有栅栏的地方挖了深深的壕沟。
如果你违背了原本的约束(跑出了栅栏原来的位置),你就会掉进壕沟,被扣掉无限多的分数。
这样,一个带栅栏(约束)的寻找最高点问题,就变成了一个没有栅栏,但满地是扣分陷阱(无约束)的寻找最高点问题。
数学转化:
我们给每一个约束条件分配一个“惩罚权重”(也就是拉格朗日乘子)。
对于 个特征约束,分配乘子
。
对于概率和为 1 的约束,分配乘子 。
把目标函数和带有乘子的约束条件全加在一起,构成一个超级函数——拉格朗日函数 :
15:对偶问题与模型推导
最后一步:求导!
我们要寻找那个最完美的概率分布 ,也就是把
当作未知变量,对超级函数
求偏导数,并令它等于 0。
求导并令为 0:
(省略枯燥的求导化简过程,因为里面只有 的导数,非常简单)
通过上述方程求解 ,最终你会得到一个极其优美的指数形式:
-
其中
就是以
为底的指数函数。
-
是为了让概率和等于 1 而产生的归一化因子(本质上就是前面那个乘子
演变来的)。
第六部分:殊途同归的证明
16:等价性证明(从最大熵到 Softmax)
让我们把刚才的两个终极公式放在一起对比:
-
最大熵模型(物理与信息论推导):
-
多项逻辑斯蒂回归/Softmax(统计学推导):
看着它们,除了字母长得不太一样,骨架简直是完美复刻!它们等价的核心秘密,就藏在最大熵的“特征函数 ”里。
在最大熵模型中,特征函数是我们人为定义的“约束”。如果我们以一种极其简单粗暴的方式来定义这个特征函数呢?
假设我们手里有输入特征向量(比如房屋面积、房间数等),我们规定:“当且仅当标签是类别
时,激活输入特征
,否则为 0。”
在这个极其朴素的特征函数定义下,奇迹发生了:
-
最大熵公式里的指数部分
,瞬间就坍缩成了仅仅与当前类别
相关的线性组合
(为了严谨,再加个常数项特征,就多出了偏置
)。
-
最大熵公式里的归一化因子
,也就是把所有可能类别的指数加起来,瞬间就变成了 Softmax 的分母
。
最终结论:
多分类逻辑斯蒂回归(Softmax)就是最大熵模型的一个特例!
当最大熵模型中的特征函数仅仅取“输入特征本身”时,它就完全退化成了逻辑斯蒂回归。
4651



被折叠的 条评论
为什么被折叠?



