逻辑回归 Logistic Regression
逻辑回归是将线性回归与 Sigmoid 函数相结合的模型。线性回归本身用于预测连续值,而在分类任务中,为了让模型输出处于 [0, 1] 之间的概率值,引入了非线性的 Sigmoid 函数。Sigmoid 函数将线性回归的输出进行转换,使其具备表示概率的能力,进而用于分类。
在训练过程中,逻辑回归会确定一个由直线(在二维空间中,高维空间为超平面 )表示的决策边界,以此划分不同类别。尽管名称包含 “回归”,但逻辑回归本质上是一种分类模型,主要用于处理二分类问题。其核心在于通过逻辑函数把线性回归得到的值映射到概率空间,实现从线性回归模型到分类模型的转变。
逻辑斯谛分布
设 \( X \) 是连续随机变量,\( X \) 服从逻辑斯谛分布,则 \( X \) 具有下列分布函数和密度函数: \[ F(x) = P(X \leq x) = \frac{1}{1 + e^{-(x – \mu)/\gamma}} \tag{6.1} \] \[ f(x) = F'(x) = \frac{e^{-(x – \mu)/\gamma}}{\gamma (1 + e^{-(x – \mu)/\gamma})^2} \tag{6.2} \] 式中,\(\mu\) 为位置参数,\(\gamma > 0\) 为形状参数。
二项逻辑回归模型
是逻辑斯谛回归的一个特例,专门用于处理二元分类问题。输入实例 \( x \),通过Sigmoid函数(即逻辑斯谛函数)将线性组合 w⋅x+b 映射到 [0,1]区间,随机变量 Y仅取两个离散值:0 或 1,分别代表分类的两种可能结果。按照式 (6.3) 和式 (6.4) 可以求得 \( P(Y = 1|x) \) 和 \( P(Y = 0|x) \)。比较两个条件概率值的大小,将实例 \( x \) 分到概率值较大的那一类。
(逻辑斯谛回归模型) 二项逻辑斯谛回归模型的条件概率分布(只用于二项):
\(P(Y = 1|x)=\frac{\exp(w\cdot x + b)}{1+\exp(w\cdot x + b)}\quad(6.3)\)
\(P(Y = 0|x)=\frac{1}{1+\exp(w\cdot x + b)}\quad(6.4)\)
有时为了方便,将权值向量\( w \) 和输入向量加以扩充,仍记作 \( w \),\( x \),即
\[
w = (w^{(1)}, w^{(2)}, \cdots, w^{(n)}, b)^T, \quad
x = (x^{(1)}, x^{(2)}, \cdots, x^{(n)}, 1)^T.
\]
这时,逻辑斯谛回归模型如下:
\[
P(Y = 1|x) = \frac{\exp(w \cdot x)}{1 + \exp(w \cdot x)} \tag{6.5}
\]\[
P(Y = 0|x) = \frac{1}{1 + \exp(w \cdot x)} \tag{6.6}
\]
几率,对数几率
一个事件的几率(odds)是指该事件发生的概率与该事件不发生的概率的比值(概率是发生的概率 / 所有可能的概率和)。如果事件发生的概率是 \( p \),那么该事件的几率是
\[
\frac{p}{1-p},
\]
该事件的对数几率(log odds)或 logit 函数是
\[
\mathrm{logit}(p) = \log \frac{p}{1-p}.
\]
对逻辑斯谛回归而言,由式(6.5)与式(6.6)得 \[ \log \frac{P(Y = 1|x)}{1 – P(Y = 1|x)} = w \cdot x \] 这就是说,在逻辑斯谛回归模型中,输出 \( Y = 1 \) 的对数几率是输入 \( x \) 的线性函数。或者说,输出 \( Y = 1 \) 的对数几率是由输入 \( x \) 的线性函数表示的模型,即逻辑斯谛回归模型。
在贝叶斯统计场景中,当获取新信息更新事件发生概率时,概率乘法运算可转换为对数几率的加法运算。因为\(\log(a\times b)=\log(a)+\log(b)\) ,这让计算更为简便高效
模型参数估计-极大似然估计MLE(Maximum Likelihood Estimate)
选出让观察到的数据出现概率最大的那组参数。
似然 & 概率
概率(猜):结果没有产生之前会根据环境的参数预测某件事情发生的概率,例如抛硬币,抛之前并不知道哪一面会朝上,通过模型的概率P(人像朝上)=0.5和P(数字朝上)=0.5预估结果的可能性。
似然(马后炮):似然和概率正好相反,是基于已知的结果反推产生这个结果可能的模型参数,比如已知抛硬币1万次的结果8000次人像在上,2000次数字在上,进而我们推测硬币模型的具体参数P(人像朝上)=0.8,P(数字在上)=0.2
为什么要有 MLE
在机器学习或统计建模中,我们常常遇到这样的任务:
已知一堆样本(观测值);
我们有一个模型,比如线性模型、逻辑回归、高斯分布等等;我们不知道模型的具体参数(如均值、方差、权重等);这就需要最大似然估计。
似然函数的数学表达:
设数据集为 \(\mathcal{D}=\{x_1, x_2, \ldots, x_n\}\)。模型的参数 \(\theta\)。假设每个数据点 \(x_i\) 是独立同分布的,服从某个参数为 \(\theta\) 的概率分布 \(p(x_i|\theta)\)
似然函数:整个数据的 “联合概率” 是: \(L(\theta)=\prod_{i = 1}^{n}p(x_i|\theta)\)
意思是 “在参数 \(\theta\) 下,数据 \(\mathcal{D}\) 出现的可能性有多大”。
而 MLE 要做的就是: \(\hat{\theta}_{\text{MLE}}=\underset{\theta}{\arg\max}L(\theta)\),即找出最大化似然函数的参数。
对数似然函数:因为累乘太麻烦,通常对数化使其变为累加: \(\hat{\theta}_{\text{MLE}}=\underset{\theta}{\arg\max}\log L(\theta)=\underset{\theta}{\arg\max}\sum_{i = 1}^{n}\log p(x_i|\theta)\)
逻辑回归的似然函数数学表达:
逻辑斯谛回归模型学习时,对于给定的训练数据集\(T = \{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}\),其中,\(x_i \in \mathbf{R}^n\),\(y_i \in \{0,1\}\),可以应用极大似然估计法估计模型参数,从而得到逻辑斯谛回归模型。
设: \(P(Y = 1|x)=\pi(x),\quad P(Y = 0|x)=1 – \pi(x)\)
似然函数为 \(\prod_{i = 1}^{N}[\pi(x_i)]^{y_i}[1 – \pi(x_i)]^{1 – y_i}\)
利用对数的性质 \(\log(ab)=\log a+\log b\) 和 \(\log(a^b)=b\log a\)
对数似然函数为
\(\begin{align*} L(w)&=\sum_{i = 1}^{N}[y_i\log\pi(x_i)+(1 – y_i)\log(1 – \pi(x_i))]\\ &=\sum_{i = 1}^{N}\left[y_i\log\frac{\pi(x_i)}{1 – \pi(x_i)}+\log(1 – \pi(x_i))\right]\\ &\end{align*}\)
\(\begin{align*}=\sum_{i = 1}^{N}[y_i(w\cdot x_i)-\log(1 + \exp(w\cdot x_i))] \end{align*}\)
对\(L(w)\)求极大值,得到w的估计值
总结:
简单例子
假设已知一个抛非均质硬币的实验的结果是“7次人像朝上,3次数字朝上”
这样就变为对数似然函数为目标函数的最优化问题,可以看到\(theta\)等于0.7时,似然函数的值最大,也就意味着在我们设定的环境下,已知发生了的结果发生的概率最大,因此该参数是最合理的
线性回归,感知机,逻辑回归对比
比较维度 | 线性回归 | 感知机 | 逻辑回归 |
---|---|---|---|
任务类型 | 回归(预测连续数值) | 分类 | 分类 |
输出形式 | 连续值(任意实数) | 类别标签(如 -1 / +1) | 属于某一类别的概率(0~1) |
激活函数 | 无 | 符号函数(Sign 函数,映射到 -1/1) | Sigmoid 函数(映射到 (0, 1)) |
损失函数 | 均方误差 (y−y^)2(y – \hat{y})^2 | 分错点到分类边界的距离和(感知机损失) | 对数损失函数(对数似然) |
模型基础 | 基于线性模型 | 是线性模型的分类扩展 | 是线性模型的概率分类扩展(带 Sigmoid) |
输出解释 | 拟合目标变量的数值 | 判断点是否被正确分类 | 输出属于某一类的概率,然后通过阈值判断分类 |
是否可用概率 | 否 | 否 | 是(概率值直接可用) |
适合问题 | 回归问题 | 二分类问题 | 二分类(也常用于多分类的扩展) |
激活函数想成模型内部的“开关”或“处理器”,输入一个数值(通常是线性模型的输出),然后转换成更有意义的结果:
是一个 类别标签(比如 +1 / -1)或是一个 概率值(比如 0.85)
最大熵模型
目的是什么:根据已知训练集T和特征函数f寻找到一个最合适条件概率分布,将来知道新的实例点时但不知道类别,代入到概率分布函数中就能计算出相应的概率了,这个概率就能用来判断所属的类别
如何实现目的:我们要求的概率分布的熵,特征函数作为条件在下面列出,还有2个常规约束,对于任何分布,在所有取值的概率和为1。这样将需无锡过程转化为约束最优化问题(求最值+限制就是最优化问题)
信息熵&联合熵&条件熵
熵最早来源于物理学,表示任何一种能量在空间中分布的均匀程度,分布的越均匀熵越大。现在用熵表示随机变量不确定的度量
信息熵:衡量单个事件的不确定程度,比如 “明天是否下雨” 的混乱度,越不确定熵越高。若离散型随机变量 X 的概率分布为 \(P(X = a_i)=p_i, \quad i = 1,2,\cdots,n\) 则随机变量 X 的熵 \(H(X)\) 定义为
信息熵的公式由来:
要知道信息熵之前,我们首先需要明白什么是信息。信息的大小跟随机事件的概率有关。越小概率的事情发生了产生的信息量越大,如湖南产生的地震了;越大概率的事情发生了产生的信息量越小,如太阳从东边升起来了(肯定发生嘛,没什么信息量)
因此一个具体事件的信息量应该是随着其发生概率而递减的,且不能为负。
但是这个表示信息量函数的形式怎么找呢?随着概率增大而减少的函数形式太多了!
如果我们有俩个不相关的事件x和y,俩个事件同时发生时获得的信息应该等于观察到的事件各自发生时获得的信息之和,即:h(x,y) = h(x) + h(y)
由于x,y是俩个不相关的事件,那么满足p(x,y) = p(x)*p(y).
根据上面推导,我们很容易看出h(x)一定与p(x)的对数有关(因为只有对数形式的真数相乘之后,能够对应对数的相加形式,可以试试)。因此我们有信息量公式如下:
\(h(x)=-\log_2 p(x)\)
(1) 为什么有一个负号:因为信息量的定义是概率的倒数的对数。而用概率的倒数,是为了使概率越大,信息量越小,同时因为概率的倒数大于1,其对数自然大于0了。
(2) 为什么底数为 2 这是因为,我们只需要信息量满足低概率事件 x 对应于高的信息量。那么对数的选择是任意的。我们只是遵循信息论的普遍传统,使用 2 作为对数的底!
信息熵 \(H(X)\) 是自信息 \(h(x)\) 的数学期望。因为期望是对随机变量取值按概率加权求和,在信息论中,随机变量 X 的信息熵就是其各个取值的自信息按照取值概率进行加权平均的结果,即 \(H(X)=E[h(X)]=-\sum_{i = 1}^{n}p(x_i)\log p(x_i)\)
联合熵:衡量多个事件一起发生时的总不确定度,比如 “明天下雨且刮风” 的混乱度。公式:
\(H(X,Y)=-\sum_{i}\sum_{j}p(x_i,y_j)\log p(x_i,y_j)\)
其中:
- i 遍历随机变量 X 的所有可能取值 \(x_i\) , j 遍历随机变量 Y 的所有可能取值 \(y_j\) 。
- \(p(x_i,y_j)=P(X = x_i,Y = y_j)\) ,是 X 取值为 \(x_i\) 且 Y 取值为 \(y_j\) 的联合概率 。
- \(\log\) 通常以 2 为底(单位是比特,bit ),也可以用 e 为底(单位是奈特,nat )或 10 为底(单位是哈特莱,Hartley ) 。
联合熵 \(H(X,Y)\) 用于度量随机变量 X 和 Y 作为一个整体的不确定性。它是对所有可能的联合取值情况,按照其联合概率对自信息 \(-\log p(x_i,y_j)\) 进行加权求和。
也可以表示为期望的形式,即平均意义信息量, \(H(X,Y)=-E_{X,Y}\log P(X,Y)\)
条件熵:已知一个事件后,另一个事件剩下的不确定度,比如 “已知刮风,下雨的不确定度”。
条件熵 \(H(Y|X)\) 主要有以下两种常见公式形式:
1. 基于求和形式的定义
$$H(Y|X)=\sum_{i = 1}^{n}p_iH(Y|X = a_i)$$
把 X 所有可能取值情况对 Y 不确定性的影响加起来,得到 Y 在已知 X 时的总不确定性。
- n :是随机变量 X 取值的个数。比如 X 表示天气状况(晴天、阴天、雨天 ),那 \(n = 3\)
- \(p_{i}=P(X = a_{i})\) :是 X 取第 i 个值 \(a_{i}\) 的概率 。比如 X 取 “晴天” 这个值的概率 \(p_{1}\) ,如果晴天出现概率是 0.3,那 \(p_{1}=0.3\) 。
- \(H(Y|X = a_{i})\) :是在 X 取值为 \(a_{i}\) 的条件下 Y 的熵。就是说当 X 确定是某一个值 \(a_{i}\) 时, Y 还有多少不确定性。比如 X 是 “晴天” 时,“是否出门” 这件事 Y 的不确定性。
- \(H(Y|X = a_{i})=-\sum_{j}P(Y = b_{j}|X = a_{i})\log P(Y = b_{j}|X = a_{i})\) ,是对 Y 的所有可能取值 \(b_{j}\) 求和 。这里 \(P(Y = b_{j}|X = a_{i})\) 是在 X 为 \(a_{i}\) 时 Y 取 \(b_{j}\) 的条件概率 ,通过对这些概率取对数再加权求和,算出此时 Y 的不确定性。
\(H(Y|X)=\sum_{i}^{n}\sum_{j}^{m}p(x_i)p(y_j|x_i)\log(p(y_j|x_i))=\sum_{i}^{n}\sum_{j}^{m}p(x_i,y_j)\log(p(y_j|x_i))\)
2. 基于期望形式的定义
$$H(Y|X)=E_X[H(Y|X)] = -E_{X,Y}[\log P(Y|X)]$$
根据期望的定义,要得到 \(H(Y|X)\) (关于 X 的函数 )的期望,就需要用 X 取各个值 \(x_i\) 的概率 \(P(X = x_i)\) 对 \(H(Y|X = x_i)\) 进行加权求和,即 \(E_X[H(Y|X)]\)
其中 \(E_X\) 表示对随机变量 X 求期望, \(E_{X,Y}\) 表示对联合随机变量 \((X,Y)\) 求期望, \(P(Y|X)\) 是 Y 关于 X 的条件概率。本质上,期望形式的定义是求和形式定义在概率空间上的一种更抽象、简洁的表达
条件熵例子
设随机变量Y={嫁,不嫁}
我们可以统计出,嫁的个数为6/12 = 1/2,不嫁的个数为6/12 = 1/2
那么Y的熵,根据熵的公式来算,可以得到H(Y) = -1/2log1/2 -1/2log1/2
为了引出条件熵,我们现在还有一个变量X,代表长相是帅还是不帅,当长相是不帅的时候
可以得出,当已知不帅的条件下,满足条件的只有4个数据了,这四个数据中,不嫁的个数为1个,占1/4
嫁的个数为3个,占3/4
那么此时的H(Y|X = 不帅) = -1/4log1/4-3/4log3/4
p(X = 不帅) = 4/12 = 1/3
最大熵原理
在满足已知约束的条件下,在所有可能的概率分布中,均匀分布的熵是最大的。
为使估计涵盖最大不确定性(符合客观情况,避免过度确定),在没有更多信息的情况下,就最好假设各值概率相等,即采用均匀分布来估计概率分布
二项分布证明最大熵定理
以二项分布为例证明:(BV1jY4y1t7Jt有讲解为什么正态分布是自然界最常见的分布,我觉得性价比不大将来可以选择继续听,讲的感觉很好,但是涉及泛函)
例题:
- 假如现在有一碗汤圆,包含五种口味:醇香黑芝麻、香甜花生、绵软豆沙、香芋紫薯和蛋黄流沙,随机变量 X 为随机舀到的汤圆。请根据最大熵思想,估计每种口味被舀到的概率。用字母 A,B,C,D,E 表示五种口味:醇香黑芝麻、香甜花生、绵软豆沙、香芋紫薯和蛋黄流沙。
每种口味被舀到的概率分别是
p₁ = P (A),p₂ = P (B),p₃ = P (C),p₄ = P (D),p₅ = P (E)。
若无任何其他条件,在等概率的时候取得信息熵的最大值 pᵢ = 1/5,i = 1,2,3,4,5。
- 此时增加第二个条件,碗中有 15 只汤圆,其中醇香黑芝麻和香甜花生口味共有 8 只,请根据最大熵思想,估计每个口味被舀到的概率。
随机变量 X 的分布需满足概率的常规约束 \(\sum_{i = 1}^{5}p_i = 1\) 一个附加约束 \(p_1 + p_2=\frac{8}{15}\) 根据最大熵思维, \(p_1 = p_2=\frac{4}{15}, \quad p_3 = p_4 = p_5=\frac{7}{45}\)
- 添加第三个条件, \(p_1 + p_3=\frac{6}{15}\)
从约束 \(p_1 + p_2=\frac{8}{15}\) 和\(p_1 + p_3=\frac{6}{15}\),可表示: \(p_2=\frac{8}{15}-p_1\),\(p_3=\frac{6}{15}-p_1\)。
剩余概率分配给 \(p_4\) 和 \(p_5\): \(p_4 + p_5=1 – (p_1 + p_2 + p_3)=\frac{1}{15}+p_1\)。
题目假设 \(p_4 = p_5\),因此: \(p_4 = p_5=\frac{1}{30}+\frac{1}{2}p_1\)。
X的信息熵仅用\(p_1\)表示
\(H(p_1)= -p_1\log_2 p_1 – \left(\frac{8}{15}-p_1\right)\log_2\left(\frac{8}{15}-p_1\right)-\left(\frac{6}{15}-p_1\right)\log_2\left(\frac{6}{15}-p_1\right)-2\left(\frac{1}{30}+\frac{1}{2}p_1\right)\log_2\left(\frac{1}{30}+\frac{1}{2}p_1\right)\)
从最终的式子和图标我们已经成功将最大熵模型的学习转化为一个约束最优化问题,即找到一个参数使H熵函数值最大
最大熵模型定义
“最大熵原理是统计学的一般原理,将其应用到分类得到最大熵模型”
表面翻译:从所有概率分布P(花体)中挑选符合后面m个限制条件的概率分布P
- 为什么不能只用Y还需要一个条件X,因为X是输入变量。
- 为什么是条件熵而不是联合熵:最大熵模型是分类模型中的判别类型,判别方法最后得到的是条件概率分布P(X|Y)。
学习目标:从符合约束条件的备选模型集合中,挑选使条件熵H(Y|X) / H(P)最大的模型
例子
二值特征函数 -yxmb
用二值特征函数 \(f(\mathbf{x}, y)\) 描述输入变量 \(\mathbf{x}\) 与输出变量 \(y\) 之间的某一事实,定义为 \[ f(\mathbf{x}, y)= \begin{cases} 1, & \mathbf{x} 和 y 满足某一事实 \\ 0, & 否则 \end{cases} \]
一般特征函数是任意实值函数,但此处只能为二值函数,即它只有两个可能的输出值:1(是/满足条件)或0(否/不满足条件),下面来看一个例子
一个程序用于判断是否为垃圾邮件,可能要看几个特征:内容是否包含”赢取”/“免费“/”会议“的字样,这里的每个判断条件都可以看作一个”特征函数“。二值特征函数就是把这些判断条件数学化表示:
为什么特征函数会出现在最大熵模型这里,因为我们需要对模型的输入和输出之间的关系设置约束条件,通过约束条件我们才能在众多模型中找到待选的模型,而我们可以利用特征函数表示约束条件,如何描述呢?这就要提到经验分布和理论分布以及期望
理论分布(联合,边际,条件)和经验分布 – wqmb
给定训练数据集\(T = \{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}\) ,这里可以简单理解为有N组数据,每组数据包含一个输入x和对应的输出y 。比如在一个预测天气的例子里,x可能是当天的气温、湿度等信息,y就是当天是否下雨。
- 理论分布:模型学到的理想化规律(上帝视角,概率)
- 联合分布\(P(X,Y)\):描述输入变量X和输出变量Y同时出现的概率情况。还是以天气为例,就是气温、湿度等信息和是否下雨同时出现的概率。
- 边际分布\(P(X)\):只考虑输入变量X的概率分布,不看Y 。比如只看不同气温、湿度等出现的概率,不管下不下雨。
- 条件分布\(P(Y|X)\):在已知输入变量X的情况下,输出变量Y的概率分布。比如已知当天的气温、湿度,计算下雨的概率。我们希望通过学习(分析训练数据)得到这个\(P(Y|X)\)
- 经验分布:从实际观察到的数据中统计出来的分布。通过对训练数据集进行统计频数(也就是某个数据出现的次数 / 出现总数)来得到经验分布。(实验视角,频率)
- 联合经验分布\(\widetilde{P}(X,Y)\):公式\(\widetilde{P}(X = x, Y = y)=\frac{n_{x,y}}{N}\) ,这里\(n_{x,y}\)是输入为x且输出为y这种组合在训练数据中出现的次数,N是训练数据的总数。比如在 100 组天气数据里,气温湿度组合为x且下雨(y )这种情况出现了 10 次,那\(\widetilde{P}(X = x, Y = y)=\frac{10}{100}=0.1\) 。
- 边际经验分布\(\widetilde{P}(X)\):公式\(\widetilde{P}(X = x)=\frac{n_x}{N}\) ,\(n_x\)是输入为x在训练数据里出现的总次数。比如某种气温湿度组合x在 100 组数据里出现了 20 次,那\(\widetilde{P}(X = x)=\frac{20}{100}=0.2\) 。
联合分布(Joint Distribution):描述多个变量同时发生的概率。边际分布(Marginal Distribution):从联合分布中忽略某些变量,只看单一变量的分布。
比如硬币的理论分布是 {正面: 0.5, 反面: 0.5}(假设硬币公平),但是抛硬币100次,统计得到正面48次、反面52次 → 经验分布却是 {正面: 0.48, 反面: 0.52}。
最大熵模型的经验和理论期望\(E_P(f_i)\)
现在我们知道可以通过尽可能使特征函数P的经验分布与理论分布相同而使模型尽可能准确,但是实际我们并不是精确到让经验分布的每个点都与理论分布的点相同,而是平均意义下相同,即经验分布的期望和理论分布的期望相同
P 代表的是联合概率,刻画的是随机变量 X 与 Y 共同的概率分布。这是由于特征函数 \(f_{i}\) 用于描述 X 和 Y 同时满足某一事实的情况,所以与之对应的 P 需体现二者的联合关系。
该式作为约束条件,旨在确保模型中特征函数 \(f_{i}\) 的理论期望 \(E_{P}(f_{i})\) 与基于训练样本得到的经验期望 \(E_{\tilde{P}}(f_{i})\) 相等 ,使模型在学习过程中,其对特征的平均刻画与训练样本所呈现的特征规律相契合 。
接下来我们展开最大熵模型的经验分布和理论分布的期望的表达式,知道哪里是已知的,哪里是未知的。
X和Y的联合分布P✖特征函数fi,考虑输入空间所有的X和输出空间所有的Y的所有组合
理论期望 \(E_{P}(f_{i})\) 展开:最大熵模型最终输出是条件概率分布 \(P(y|x)\) ,这是我们待求解的未知量,现在是联合概率分布,所以将其转换为含条件概率分布的式子。用经验分布作为估计值\(\tilde{P}(X)\)近似理论分布的真实值P(x),用数据集中Xi样本的个数/样本总数计算\(\tilde{P}(X)\)
经验期望 \(E_{\tilde{P}}(f_{i})\) 展开:通过训练数据集得到的特征函数的经验分布,其中\(\tilde{P}(x, y)\) 可由数据集中输入为 x 、输出为 y 的样本个数除以总样本个数得出
带有波浪线(如 \(\tilde{P}\) )的均为通过训练集得到的经验分布,用于替代未知的理论分布。对于涉及条件概率的特征函数联合经验分布,我们仅对 \(P(x)\) 部分用经验分布近似。而特征函数的经验分布各项,可直接依据已知的训练数据集计算得出。
\(\tilde{P}(f_i)\) :\(\tilde{P}(f_i)\) 是根据训练样本数据计算出的特征函数 \(f_i(x, y)\) 的经验期望 。也就是在已知的训练样本里,直接统计计算得到的特征函数平均取值 ,公式为 \(\tilde{P}(f_i)=\sum_{x,y}\tilde{P}(x,y)f_i(x,y)\) ,其中 \(\tilde{P}(x,y)\) 是样本 \((x,y)\) 的经验分布 。
\(P(f_i)\) :在最大熵模型里,\(P(f_i)\) 是基于模型所定义的条件概率分布 \(P(y|x)\) 计算得到的特征函数 \(f_i(x, y)\) 的期望 。它反映了在模型给出的概率分布下,特征函数的平均取值情况 。用公式表示为 \(P(f_i)=\sum_{x,y}P(x,y)f_i(x,y)\approx\sum_{x,y}\tilde{P}(x)P(y|x)f_i(x,y)\)这里 \(\tilde{P}(x)\) 是样本中 x 的经验分布
例题:假设要根据天气情况(x )预测人们是否出门(y )。天气情况 x 有晴天、阴天、雨天三种取值;人们是否出门 y 有出门、不出门两种取值。我们收集了一些历史天气和人们出门情况的数据作为训练样本。
定义特征函数:定义一个二值特征函数 \(f_1(x,y)\) :当天气是晴天(x 为晴天 )且人们出门(y 为出门 )时,\(f_1(x,y) = 1\) ,否则 \(f_1(x,y) = 0\)
计算 \(\tilde{P}(f_1)\) (经验期望 ):
统计训练样本中,总共有 N 个样本数据。假设有\(n_1\) 个”天气是晴天且人们出门”的样本
样本 \((x,y)\) 的经验分布 \(\tilde{P}(x,y)\) ,对于 “晴天 – 出门” 这个组合,\(\tilde{P}(晴天, 出门)=\frac{n_1}{N}\) 。
根据 \(\tilde{P}(f_1)=\sum_{x,y}\tilde{P}(x,y)f_1(x,y)\) ,因为只有 “晴天 – 出门” 时 \(f_1(x,y)\) 为 1,其他情况为 0 ,所以 \(\tilde{P}(f_1)=\frac{n_1}{N}\) ,它表示在训练样本里,“晴天且出门” 这个特征的平均出现情况。
计算 \(P(f_1)\)(基于模型的理论期望):
- 假设我们构建了一个最大熵模型,得到了条件概率分布 \(P(y|x)\),比如 \(P(\text{出门}|\text{晴天}) = 0.7\), \(P(\text{不出门}|\text{晴天}) = 0.3\),\(P(\text{出门}|\text{阴天}) = 0.4\),\(P(\text{不出门}|\text{阴天}) = 0.6\),\(P(\text{出门}|\text{雨天}) = 0.2\), \(P(\text{不出门}|\text{雨天}) = 0.8\)。
- 样本中 x 的经验分布 \(\tilde{P}(x)\),假设统计出(题目设定)晴天出现的概率 \(\tilde{P}(\text{晴天}) = 0.4\),阴天出现概率 \(\tilde{P}(\text{阴天}) = 0.3\),雨天出现概率 \(\tilde{P}(\text{雨天}) = 0.3\)。
- 根据 \(P(f_1)=\sum_{x,y}\tilde{P}(x)P(y|x)f_1(x,y)\),只需要计算晴天的情况(因为其他天气时 \(f_1(x,y) = 0\)): \(P(f_1)=\tilde{P}(\text{晴天})\times P(\text{出门}|\text{晴天})\times1+\tilde{P}(\text{晴天})\times P(\text{不出门}|\text{晴天})\times0+\tilde{P}(\text{阴天})\times[P(\text{出门}|\text{阴天})\times0\)
将式 (6.10) 或式 (6.11) 作为模型学习的约束条件。假如有 \(n\) 个特征函数 \(f_i(x,y)\),\(i = 1,2,\cdots,n\),那么就有 \(n\) 个约束条件。 约束条件为: \[ \begin{align*} \text{s.t.}&\quad E_{P}(f_i)=E_{\widetilde{P}}(f_i),\quad i = 1,2,\cdots,n\\ &\quad \sum_{y}P(y|x)=1 \end{align*} \]
让 \(P(f_i)=\tilde{P}(f_i)\) 是为了使模型学到的概率分布与训练样本数据相契合 。这一约束条件确保模型在满足最大熵(保留最大不确定性)的同时,也能尊重训练数据中呈现出的特征信息 。如果二者不相等,模型学到的概率分布就会偏离实际样本数据所蕴含的规律,导致模型无法准确反映数据特征,出现过拟合或欠拟合等问题 ,所以通过这一约束,能让模型在理论(最大熵)和实际数据间找到平衡,构建出合理有效的概率模型 。
原始问题和对偶问题
原始问题
在探讨最大熵模型的优化问题时,我们先从一般的带约束条件的优化问题入手。掌握这类问题的解法,对于理解最大熵模型的优化求解大有裨益。
考虑这样一个原始问题:我们的目标是找到一个 n 维实数空间 \(\mathbb{R}^n\) 中的向量 x ,使得函数 \(f(x)\) 取得最小值。这里的约束条件可分为两组,涵盖了各种类型的限制情况,并且还能在此基础上增减约束数量(比如通过添加负号将不等式方向改变 ) 。此时,约束条件总数为 \(k + l\) 个 。我们面对的是一个包含 n 个未知量的目标函数,外加 \(k + l\) 个约束条件的复杂问题。为简化求解过程,通常将这个有约束的最优化问题转化为广义拉格朗日函数的形式 。
f(x)就是最优化问题里的目标函数,Cix和hjx就是约束条件,每个约束条件前面都加一个拉格朗日乘子。
原始有约束优化问题是在满足不等式约束 \(c_{i}(x)\leq0\) (\(i = 1,2,\cdots,k\) )和等式约束 \(h_{j}(x)=0\) (\(j = 1,2,\cdots,l\) )的条件下,求目标函数 \(f(x)\) 的最小值 。广义拉格朗日函数 \(L(x,\alpha,\beta)=f(x)+\sum_{i = 1}^{k}\alpha_{i}c_{i}(x)+\sum_{j = 1}^{l}\beta_{j}h_{j}(x)\) 把目标函数和约束条件整合到了一起,其中 \(\alpha_{i}\) 和 \(\beta_{j}\) 是拉格朗日乘子。
当考虑 \(\theta_{P}(x)=\max_{\alpha,\beta:\alpha_{i}\geq0}L(x,\alpha,\beta)\) 时,对于不满足约束条件的情况:如果存在某个 \(c_{i}(x)>0\) ,那么可以让 \(\alpha_{i}\) 趋于正无穷,使得 \(\alpha_{i}c_{i}(x)\) 趋于正无穷,从而让 \(L(x,\alpha,\beta)\) 趋于正无穷;如果 \(h_{j}(x)\neq0\) ,也会导致 \(L(x,\alpha,\beta)\) 无法达到合理的有限值。而当满足约束条件 \(c_{i}(x)\leq0\) (此时 \(\alpha_{i}c_{i}(x)\leq0\) ,在 \(\alpha_{i}\geq0\) 条件下,该项最大为 0 )和 \(h_{j}(x) = 0\) 时,\(L(x,\alpha,\beta)\) 就只剩下 \(f(x)\) (因为约束项都为 0 ),此时 \(L(x,\alpha,\beta)\) 取得最大值(在满足约束条件的情况下 )
所以从这个意义上,\(\theta_{P}(x)\) 本质上就是在考虑满足约束条件时目标函数 \(f(x)\) 的取值情况(不满足约束时取值为无穷大 )
写成P代表primer,意为初始问题
这意味着在有约束条件下最小化目标函数 \(f(x)\) 等价于最小化 \(\theta_{P}(x)\) ,而 \(\theta_{P}(x)\) 又等于在有约束条件下最大化广义拉格朗日函数 \(L(x, \alpha, \beta)\)
对偶问题
更好的解决原始问题而提出来的,这次是对x取最小值,所以\(theta\)是关于剩下未知的\(alpha\)和\(beta\)的函数,\(theta\)旁边的大D表示是原始问题的对偶问题
两者最优解相等的条件(没懂)
只要满足这些条件就能将原始问题转化为对偶问题。
为什么要转化为对偶问题:对偶问题恒为凸优化问题。凸优化问题有良好数学性质,其局部最优解就是全局最优解 ,不存在陷入局部最优而错过全局最优的风险。而且有许多成熟、高效的算法(如梯度下降法、内点法等 )可用于求解凸优化问题,相比可能是非凸的原始问题,对偶问题在求解上更简便、可靠 。
正因如此,利用对偶问题求解优化问题是一种行之有效的手段
注:*表示最优解
最大熵模型的优化问题
目标:在给定约束条件下,找到使条件熵 \(H(P)\) 最大的概率分布 P,保留最大不确定性,避免过多主观假设,通过调整特征权重系数( \(\lambda_i^*\) )实现,运用最大似然估计思想反推模型参数 – 我们已知的样本都是知晓结果的,反推一个模型的参数
假设我们根据天气情况(X )预测是否外出(Y ) 。
- 原始最大化问题:
- 我们知道一些约束条件,比如历史上晴天(X 的一种取值 )的概率是 \(0.4\) ;并且已知在所有天气情况下,外出的平均概率是 \(0.3\) 。满足这些条件的所有可能的条件概率分布 \(P(Y|X)\) 构成集合 \(\mathcal{M}\) 。
- 我们要找一个 \(P(Y|X)\) ,使得条件熵 \(H(P)\) 最大,也就是 \(\max_{P\in\mathcal{M}}H(P)\) 。这里的 \(H(P)\) 衡量了在已知天气情况下,对是否外出这件事的不确定性。我们希望在满足已知约束(晴天概率、外出平均概率 )的前提下,让这种不确定性最大。
- 转化后的最小化问题:
- 因为求 \(H(P)\) 最大等价于求 \(-H(P)\) 最小,所以我们把问题变成 \(\min_{P\in\mathcal{M}}-H(P)\) 。
- 约束条件方面,首先概率和要为 1 ,即对于每种天气情况 x ,\(\sum_y P(y|x)=1\) ,比如天气是晴天时,外出和不外出的概率加起来得是 1 。另外,还要满足前面提到的历史晴天概率(对应 \(E_P(f_1) = E_{\widetilde{P}}(f_1)\) , \(f_1\) 这个函数可以是提取晴天概率相关信息的函数 )和外出平均概率(对应 \(E_P(f_2) = E_{\widetilde{P}}(f_2)\) , \(f_2\) 是提取外出平均概率信息的函数 )的约束。通过这样转化,就可以利用一些专门求解最小值问题的算法,找到合适的 \(P(Y|X)\) ,也就是最大熵模型对应的概率分布。
最大熵模型 – 广义拉格朗日函数L
有约束最优化问题原始形式
在实际中,我们常常要找一个 n 维向量 x ( \(x\in R^n\) ,比如二维向量 \((x_1, x_2)\) ),让函数 \(f(x)\) 取到最小值,这就是 \(\min_{x\in R^n}f(x)\) 。但很多时候 x 不能随便取值,得满足一些条件。
- 不等式约束: \(c_i(x)\leq0\) ( \(i = 1,2,\cdots,k\) ) ,比如 \(x_1 + x_2 – 1\leq0\) ,限制 x 的取值范围不能让 \(x_1 + x_2 – 1\) 大于 0 。
- 等式约束: \(h_j(x)=0\) ( \(j = 1,2,\cdots,l\) ) ,像 \(x_1 – x_2 = 0\) ,规定 \(x_1\) 和 \(x_2\) 得相等。这就是有约束最优化问题的原始样子。
广义拉格朗日函数
为了求解上述有约束问题,引入广义拉格朗日函数 \(L(x,\alpha,\beta)\) 。它把目标函数 \(f(x)\) – 条件熵函数 ,不等式约束 \(c_i(x)\) (乘上系数 \(\alpha_i\) ),等式约束 \(h_j(x)\) (乘上系数 \(\beta_j\) )都揉在一起。简单理解,就是给每个约束条件一个 “权重”(\(\alpha_i\) 和 \(\beta_j\) ),然后和目标函数组合起来。这样做是为了把有约束问题转化成一个可以用其他方法求解的形式。
原始问题与对偶问题
- 原始问题:先固定 x ,找到合适的 \(\alpha\) 和 \(\beta\) (其中 \(\alpha_i\geq0\) )让 \(L(x,\alpha,\beta)\) 最大,得到 \(\theta_P(x)=\max_{\alpha,\beta:\alpha_i\geq0}L(x,\alpha,\beta)\) 。然后再找一个 x 让 \(\theta_P(x)\) 最小,即 \(p^*=\min_{x}\theta_P(x)=\min_{x}\max_{\alpha,\beta:\alpha_i\geq0}L(x,\alpha,\beta)\) , \(p^*\) 就是原始问题的最优值 。
- 对偶问题:反过来,先固定 \(\alpha\) 和 \(\beta\) (\(\alpha_i\geq0\) ),找到合适的 x 让 \(L(x,\alpha,\beta)\) 最小,得到 \(\theta_D(\alpha,\beta)=\min_{x}L(x,\alpha,\beta)\) 。然后再找合适的 \(\alpha\) 和 \(\beta\) 让 \(\theta_D(\alpha,\beta)\) 最大,即 \(d^*=\max_{\alpha,\beta:\alpha_i\geq0}\theta_D(\alpha,\beta)=\max_{\alpha,\beta:\alpha_i\geq0}\min_{x}L(x,\alpha,\beta)\) , \(d^*\) 就是对偶问题的最优值 。
熵最大原理例题
由于拉格朗日函数是凸函数,原始问题的解和对偶问题的解是等价的,这样可以通过解决对偶问题解决原始问题。
假设随机变量 X 有 5 个取值\(\{A, B, C, D, E\}\) ,需要估计取各个值的概率 \(P(A)\)、\(P(B)\)、\(P(C)\)、\(P(D)\)、\(P(E)\) 。这些概率值满足以下约束条件:
\(P(A)+P(B)+P(C)+P(D)+P(E)=1\)
\(P(A)+P(B)=\frac{3}{10}\)
为方便起见,用 \(y_1,y_2,y_3,y_4,y_5\) 分别表示 A、B、C、D 和 E 。最大熵模型学习的最优化问题是:
- 目标函数:\(\min -H(P)=\sum_{i = 1}^{5}P(y_i)\log P(y_i)\) ,即最小化负的熵值,这里 \(H(P)\) 是熵,通过最小化负熵来最大化熵 。
- 约束条件:
- \(P(y_1)+P(y_2)=\widetilde{P}(y_1)+\widetilde{P}(y_2)=\frac{3}{10}\) ,表示 \(y_1\) 和 \(y_2\) 的概率和等于经验分布下的对应概率和 。
- \(\sum_{i = 1}^{5}P(y_i)=\sum_{i = 1}^{5}\widetilde{P}(y_i)=1\) ,所有 \(y_i\) 的概率之和为 1 ,符合概率分布的基本性质 。
从计算结果看,通过严格的数学推导(偏导计算等 )得到的概率分布,和基于最大熵原理直观上的等概率预估结果一致,说明数学求解过程确实遵循了最大熵原理
例2:
最大熵模型的学习-极大似然估计
最大熵模型的学习过程就是求解最大熵模型的过程。求解约束最优化问题
通过不断调整参数(拉格朗日乘子 ),让模型预测的样本出现概率与实际观测到的样本情况相匹配,这个过程本质上就是在进行极大似然估计 。
最大熵模型的损失函数是\(-H(P)\) ,其中\(H(P)\) 是条件熵,表达式为\(H(P)=-\sum_{x,y}\widetilde{P}(x)P(y|x)\log P(y|x)\) 。这里\(\widetilde{P}(x)\) 是经验分布,\(P(y|x)\) 是模型要学习的条件概率分布 。
得到最优参数后,将参数代回加权求和的式子,此外我们还有对其指数化并除以归一化因子(见总结)
为什么要加规范化因子:规范化因子 \(Z_w(x)\) 的核心作用就是确保条件概率分布 \(P_w(y|x)\) 满足概率公理,即对所有可能的输出 y ,其概率之和为 1
为什么要加指数:保证频率非负,但我觉得其实是在对目标函数(如包含熵和约束条件的朗格朗日函数 )进行优化求解,在这个过程中,指数形式参与运算推导
总结:
有了拉格朗日函数就能通过原始问题/对偶问题得到最优解,原始问题和对偶问题得到的最优解相同。能证明-H(P)是凸函数,P(y|x)是仿射函数,所以可以通过求解对偶问题去解决原始问题。将最小最大转化为最大最小问题
如何求内部的极小值 – 偏导数
最大熵模型可以由最大熵原理推导得出。最大熵原理是概率模型学习或估计的一个准则。最大熵原理认为在所有可能的概率模型(分布)的集合中,熵最大的模型是最好的模型。 最大熵原理应用到分类模型的学习中,有以下约束最优化问题: \(\begin{align*} \min& -H(P)=\sum_{x,y}\tilde{P}(x)P(y|x)\log P(y|x)\\ \text{s.t.}&\ P(f_i)-\tilde{P}(f_i)=0,\ i = 1,2,\cdots,n\\ &\sum_{y}P(y|x)=1 \end{align*}\) 求解此最优化问题的对偶问题得到最大熵模型。
最大熵模型是由以下条件概率分布表示的分类模型。最大熵模型也可以用于二类或多类分类。 \(P_w(y|x)=\frac{1}{Z_w(x)}\exp\left(\sum_{i = 1}^{n}w_if_i(x,y)\right)\) \(Z_w(x)=\sum_y\exp\left(\sum_{i = 1}^{n}w_if_i(x,y)\right)\) 其中,\(Z_w(x)\) 是规范化因子,\(f_i\) 为特征函数,\(w_i\) 为特征的权值。
抛开细节,大体印象
最大熵模型接收一个分布集合,输出结果是其中熵最大的条件概率分布。在没有任何约束条件下,根据最大熵原理,我们直接就可以得到均匀分布是所有熵分布中最大的。但通常会有约束条件,约束条件我们用特征函数fi表示,当x和y满足某一特定事实时,特征函数值为1反之为0,在有约束条件的求极值问题被称为最优化问题。这其中必然包含2个最基本的条件(给定的每个分布其所包含的所有条件概率和的值为1和最大熵模型特征函数的经验期望=其理论期望,可以将其转换为条件概率分布和联合概率,公式见上。
原来我们的目标是找到一个条件概率分布P能使熵函数H(x)最大 – 最大熵模型,由于传统所以转化为找到一个P使-H(x)最小
通过拉格朗日函数L将-H(x)和约束条件加权求和进行结合,把约束条件融合进函数中,将约束最优化问题转化为关于拉格朗日函数的无约束问题 。权为\(alpha\),\(beta\),也被称为拉格朗日系数,是在限制条件前的系数。在有约束条件下最小化目标函数 -H(x) 等价于最小化 \(\theta_{P}(x)\) ,如果不是在约束条件下 \(\theta_{P}(x)\)的值为无穷,无法等价H(x)。而 \(\theta_{P}(x)\) 又等于在有约束条件下最大化广义拉格朗日函数 \(L(x, \alpha, \beta)\) (证明见上)。
至此将求目标函数函数熵函数在限制条件下的最大值问题转化为原始问题\(p^{*}=\min_{x}\theta p(x)=\min_{x}\max_{\alpha,\beta:\alpha_{i} \geq 0}L(x,\alpha,\beta)\)
又因为拉格朗日函数满足一些条件,所以原始问题:在有约束条件下求目标函数的最值转化为一个对偶问题,对偶问题更容易得到解并且省去了很多问题,所以现在问题转化为\(d^{*}=\max_{\alpha,\beta:\alpha_{i} \geq 0}\theta_D(\alpha,\beta)=\max_{\alpha,\beta:\alpha_{i} \geq 0}\min_{x}L(x,\alpha,\beta)\)
找到某个值使函数通过L拉格朗日函数将这些条件和原始概率分布加权在一起,之后模型优化的过程就是不断的修改权重,测试此时模型的熵是否为最大。也就是说损失函数是熵函数,