【高中生讲机器学习】23. 最大熵模型详解+推导来啦!解决 why sigmoid!
创建时间:2024-11-04
首发时间:2024-11-06
最后编辑时间:2024-11-06
作者:Geeker_LStar
你好呀~这里是 Geeker_LStar 的人工智能学习专栏,很高兴遇见你~
我是 Geeker_LStar,一名高一学生,热爱计算机和数学,我们一起加油~!
⭐(●’◡’●) ⭐
那就让我们开始吧!
嗨!!又见面啦!q(≧▽≦q)!
嗯,虽然但是,上一篇我写的是信息论里的熵,至于为什么要写…
其实和这篇有一定的关系哈哈哈哈哈!!(err 不过也没有那么大关系()
先放一下上一篇的 link,看这一篇以前建议先把熵那部分看一下~!
【高中生讲机器学习】22. 信息论基础:信息熵、交叉熵、相对熵
okkkaaay,接下来,我们可以进入正题啦!这篇文章的主题是最大熵模型。
提前预告:这一篇在填坑…填一个半年多前我挖的坑…后面你会知道的!
启动!
文章目录
- 两个例子
- 主要思想
- 数学推导
- 经验概率
- 特征函数
- 约束条件
- 公式求解
- 一般形式
- sigmoid 函数的来历
- 总结
两个例子
well,又是不知道怎么开头的一篇,那就还是举一些例子吧()
例子主要有两个,都很简单。
现在我们有一个骰子 X X X,它有 6 个取值 { 1 , 2 , 3 , 4 , 5 , 6 } \{1, 2, 3, 4, 5, 6\} {1,2,3,4,5,6}.
我们的任务是,估计骰子 X X X 的概率分布;或者说,估计这个骰子投出 1 , 2 , 3 , 4 , 5 , 6 1, 2, 3, 4, 5, 6 1,2,3,4,5,6 各自的概率。
你估计会很迷惑,呃,就这么个…说了等于没说的前提?这怎么估计呀,这有无数种可能
诶。
okay,没错是这样的,不过我们先来看下一个例子。
还是骰子 X X X,还是一样的 6 个取值。
不过现在我们得到了一个额外的条件——这个骰子是不均匀的,投出 3 和 6 的概率之和是 1 2 \frac 1 2 21. 其它的依然什么也不知道。
我们的任务还是估计骰子 X X X 的概率分布。
嗯,看完了这两个例子,你可能现在有很多问号()((
不是哥们这对吗,这合理吗((
上面两个例子和我们之前遇到的寻找最优概率分布的问题(比如各种用极大似然估计求解的问题和用 EM 算法求解的问题)有什么区别??能不能把它转化为可以用 MLE 或 EM 求解的问题?
嗯,你可能已经发现了,我们之前用的方法,无论是 MLE 还是 EM,都是针对知道概率分布的形式(式子),只是不知道最优参数的问题的。
但是,在上面的两个例子中,我们连概率分布的形式(式子)都不知道。它可以是正态分布、可以是均匀分布、还可以是其它各样的概率分布。它甚至可以是一个不知道是啥的分布,只要 6 种可能性加起来等于 1 就行了。
所以,想要求解这个问题,我们的第一个任务是,找到一个目标式子;或者说,找到我们要最优化的式子。
最大熵模型就是专门来解决这类问题的!
okay,以上是一个简单的引入,我觉得现在问题已经被阐述的很清楚了,我们可以来看看最大熵模型到底是个什么了!
主要思想
回到我们刚才说的第一个例子。我们现在只知道投一次骰子可能出来 1-6 这 6 个数,除此之外没有额外信息了。
那么,你觉得,在现有的信息下,是认为投出 1 的概率为 1,投出其它的概率都为 0 更合理呢,还是认为投出任何一个数的概率都为 1 6 \frac 1 6 61 更合理呢?
显然是后者呀!因为现在我们没有任何额外的信息,所以最好的解决方式就是认为所有概率都相等。
then,对于第二个问题,我们知道出现 3 和 6 的概率加起来等于 1 2 \frac 1 2 21,出现剩下四个的概率加起来也是 1 2 \frac 1 2 21。
还是那个问题,在这种情况下,给每个数字出现的概率赋什么样的值是最合理的呢?
obviously,依然是在满足约束条件的情况下,让每个数字出现的概率均等,是最合理的。也就是 3 和 6 出现的概率都是 1 4 \frac 1 4 41,剩下四个数字出现的概率都是 1 8 \frac 1 8 81.
通过上面两个例子,我们简单概括一下:在面对不知道具体概率分布形式的问题的时候,最公平的办法就是认为(在满足约束条件的情况下)所有情况都是等可能的(即构成均匀分布)。这将保留最大的不确定性,或者说,这包含最少的偏见。
为了避免歧义,这里需要解释一下什么叫 “在约束条件下” 让所有情况具有相同可能性。
其实上面的例子二已经说了,我们现在有约束条件:投出 3 和 6 的概率之和为 1 2 \frac 1 2 21.
那么,我们要满足这个约束条件,所以让投出 3 和 6 的概率都等于约束条件 1 2 \frac 1 2 21 的一半,也就是 1 4 \frac 1 4 41;然后剩下的四个数字的概率都等于剩下的 1 2 \frac 1 2 21 的 1 4 \frac 1 4 41,也就是 1 8 \frac 1 8 81.
也就是说,在有约束条件的情况下,这个 “相同的可能性” 是指在每个约束条件之中取到相同的可能性,前提一定是先满足约束条件。
嗯,现在我们已经解决了 “思想层面” 的问题()不过我们还是不清楚这在数学上要怎么写诶,毕竟,我们最后要要优化的肯定还得是一个式子呀。
well,现在的关键点就是,怎么量化这个 “相同的可能性”。或者说,我们需要一个公式,这个公式在所有情况具有相同可能性的时候取到最大值(啊不过如果有约束条件的话,是需要满足约束条件的;参考第二个例子,这个时候就是在约束条件下让每个情况具有相同可能性)。
豪德现在我无比开心我上一篇写的是熵。
如果你了解过熵,你会发现,熵正好符合我们的要求。
前一篇中讲过,熵在 n n n 种情况出现的概率都是 1 n \frac 1 n n1 的时候,即我们想要的等可能性的时候,取到最大值。
换言之,我们之所以用熵的公式,是因为它正好满足我们的要求。整个方法的 motivation 概括一下就是【等可能性】。
所以,与其说最大熵模型是个模型,不如说它是一种解决未知概率分布形式的问题的思想,或者一个选择最优模型的准则——在已经满足所有约束条件的情况下,那些不确定的部分都具有相同的可能性。
咳,上升一点高度 (bushi) :对于所有不了解的事情,保持中立。(((
okay 呀,那么现在,我们可以给出式子啦!我们需要最大化的式子,或者说最大熵模型的通用式子,如下:
H ( P ) = − ∑ x , y P ~ ( x ) P ( y ∣ x ) log P ( y ∣ x ) \begin{align} H(P)=-\sum_{x,y} \tilde{P}(x)P(y|x) \log P(y|x) \end{align} H(P)=−x,y∑P~(x)P(y∣x)logP(y∣x)
公式各个部分的意思会在下一个 part 说明!
注意,在这里我们最大化的是条件熵,它在每个部分取得均等概率的时候取得最大值,非常符合我们的要求。
嗯,这里需要注意一下,条件熵当中的 “条件” 并不是指约束条件,约束条件我们会单独给出并进行计算。这里的 “条件” 指的是模型的输入,具体的我会在下一个部分说明(后面也会说为什么要使用条件熵而非普通的信息熵)。
豪德!我觉得这个 part 对最大熵模型的主要思想已经说的蛮清晰啦!数学推导,启动!
数学推导
嗯,,前面已经说过正是因为我们想要在保证约束条件的前提下让所有情况获得相同的概率,所以选用了条件熵作为最大熵模型的公式。所以其实我们已经可以预知最终算出来的条件概率 P ( y ∣ x ) P(y|x) P(y∣x) 会有什么特点了——在每个约束条件下, P ( y ∣ x ) P(y|x) P(y∣x) 都相等。不过最终这个结果其实并不是很重要,关键在于,在尝试计算它的过程中,我们可以得到最大熵模型的一般形式,并且从这个形式中发现一些有趣的东西…
话不多说,启动!
现在,假设我们一个包含 n n n 个数据样本的训练数据集 T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) T=(x_1, y_1), (x_2, y_2), ... ,(x_n, y_n) T=(x1,y1),(x2,y2),...,(xn,yn),其中 x i x_i xi 为模型的输入, y i y_i yi 为模型的输出。
经验概率
我们可以从中获取一些先验知识,这是获得约束条件的一个步骤,不过也不一定这么做,后面会细说。
注意,我们现在计算的是【经验概率】,它是计算约束条件的时候会用到的一个部分,但它不是约束条件本身,不要弄混啦!
首先,某个特定的输入 x x x 出现的概率为:
P ~ ( X = x ) = v ( X = x ) n \begin{align} \tilde{P}(X=x) = \frac{v(X=x)}{n} \end{align} P~(X=x)=nv(X=x)
其中 v v v 函数统计括号内式子成立的次数。
then,当输入为某个特定的 x x x 时,输出为某个特定的 y y y 的概率为:
P ~ ( Y = y ∣ X = x ) = v ( Y = y , X = x ) P ~ ( X = x ) \begin{align} \tilde{P}(Y=y|X=x) = \frac{v(Y=y, X=x)}{\tilde{P}(X=x)} \end{align} P~(Y=y∣X=x)=P~(X=x)v(Y=y,X=x)
上面这两个式子可以作为获取约束条件的一种方法(但是记住它们不是约束条件本身),但是一些情况下其实不用这么做。比如在上面的第二个例子中,没有输入 x x x,同时约束条件 P ( 3 ) + P ( 6 ) = 1 2 P(3)+P(6) = \frac 1 2 P(3)+P(6)=21 是直接给出的。
约束条件的获取方式有很多,可以直接给定(或许这种情况反而会多一些?),也可以通过经验概率进行计算。后面我们会用到上面的式子。
好的,我觉得经验概率这块现在应该是说明白啦~继续!
前面说过,这是我们要最大化的式子,即条件概率 P ( y ∣ x ) P(y|x) P(y∣x) 的条件熵。
H ( P ) = − ∑ x , y P ~ ( x ) P ( y ∣ x ) log P ( y ∣ x ) \begin{align} H(P)=-\sum_{x,y} \tilde{P}(x)P(y|x) \log P(y|x) \end{align} H(P)=−x,y∑P~(x)P(y∣x)logP(y∣x)
嗯,现在可以解释为什么使用条件熵了——因为对于大部分概率模型,我们考虑的都是条件概率,即在输入为 x x x 的时候,输出为 y y y 的条件概率 P ( y ∣ x ) P(y|x) P(y∣x),所以使用条件熵作为目标函数。同时,这也是因为条件熵在所有条件概率相等的情况下取得最大值,满足我们的需要。
特征函数
okay,下一步就是给出约束条件了,不过在给出约束条件之前,我们需要先搞明白另一个很重要的东西——特征函数, f ( x , y ) f(x,y) f(x,y).
well 这个特征函数和统计学里那个特征函数不是同一个嗷()这里的特征函数可以是一个二值函数,用于描述 x , y x,y x,y 之间的关系。当 x , y x,y x,y 满足特定关系的时候,特征函数值为 1,否则为 0. 如下:
f ( x , y ) = { 1 , if x and y satisfy... 0 , otherwise \begin{align} f(x,y)=\left\{ \begin{array}{ll} 1, \ \text{if} \ x \ \text{and} \ y \ \text{satisfy...} \\ 0, \ \text{otherwise} \end{array} \right. \end{align} f(x,y)={1, if x and y satisfy...0, otherwise
特征函数也可以是任意实数函数,比如:
f ( x , y ) = { 100 , if x and y satisfy... − 100 , otherwise \begin{align} f(x,y)=\left\{ \begin{array}{ll} 100, \ \text{if} \ x \ \text{and} \ y \ \text{satisfy...} \\ -100, \ \text{otherwise} \end{array} \right. \end{align} f(x,y)={100, if x and y satisfy...−100, otherwise
啊或许你看到这里会感觉有点懵(因为我第一次看到这个的时候有点懵),我来更详细地解释一下。
特征函数用于判定 x , y x, y x,y 之间是否满足特定的关系。比如,举一个最简单的例子,如果 x y > 0 xy>0 xy>0,那么 f ( x , y ) = 1 f(x,y)=1 f(x,y)=1,否则 f ( x , y ) = 0 f(x,y)=0 f(x,y)=0。那么特征函数就可以这么设计:
f ( x , y ) = { 1 , if x y > 0 0 , otherwise \begin{align} f(x,y)=\left\{ \begin{array}{ll} 1, \ \text{if}\ xy>0 \\ 0, \ \text{otherwise} \end{array} \right. \end{align} f(x,y)={1, if xy>00, otherwise
其中 x x x 是输入, y y y 是输出。
well,当然,这只是一个例子,加深一下对特征函数的理解,特征函数的样式非常非常多。
特征函数是最大熵模型的核心之一。在最大熵模型中,特征函数往往不止一个,它们用于刻画输入 x x x 和输出 y y y 之间的关系。特征函数和经验概率一起构成了约束条件。
最大熵模型可以看作一个范式,通过改变特征函数,我们可以得到它不同的特例。
有点像类和实例化的关系。
记住这句话!我们后面会再碰到它(en,提前剧透一下吧哈哈哈,逻辑回归就是最大熵模型的一个特例,它定义了一个具体的特征函数,后面会说嘟)。
嗯,分别说完了经验概率和特征函数,接下来终于到约束条件了!
约束条件
well——终于到这里了哈哈哈哈哈,
这里再重复一下约束条件的意义吧。约束条件可以看作是一种先验,它代表模型在学习过程中必须满足的规定。约束条件可以是事先给定的(描述理想情况),也可以是通过分析训练数据得出来的。下面这张图满形象的:
原始的三角形就是最初可能的所有模型, C 1 C1 C1 和 C 3 C3 C3 就是约束条件。可以看到,在加入约束条件之后,可能的模型变少了。
我们在上面已经求得了经验概率和特征函数,而约束条件其实就是特征函数在经验概率上的期望。
先写出特征函数 f i ( x , y ) f_i(x,y) fi(x,y) 在经验概率上的期望,记作:
E P ~ ( f i ) = ∑ x ∑ y P ~ ( x ) P ~ ( y ∣ x ) f i ( x , y ) = ∑ x , y P ~ ( x , y ) f i ( x , y ) \begin{align} E_{\tilde{P}}(f_i) & = \sum_x \sum_y \tilde{P}(x)\tilde{P}(y|x)f_i(x,y) \\ & = \sum_{x,y}\tilde{P}(x, y) f_i(x,y) \end{align} EP~(fi)=x∑y∑P~(x)P~(y∣x)fi(x,y)=x,y∑P~(x,y)fi(x,y)
这个式子可值得好好说说了。
首先上下两个式子没有任何区别,只是把条件概率和边缘概率的乘积写成了联合概率而已。
前面的 ∑ x , y \sum_{x,y} ∑x,y 会遍历所有的输入数据,对于每一对 x , y x, y x,y,它都会判断 x , y x,y x,y 之间是否符合某个关系,这个关系由特征函数 f i f_i fi 定义。然后,在判断完之后,它使用 P ( x , y ) P(x,y) P(x,y),即 x , y x,y x,y 出现的联合概率进行加权。
最终计算出来的是个什么呢?
——是特征 f i ( x , y ) f_i(x,y) fi(x,y) 在已知数据出现上的加权频率。
所谓约束条件,就是要让特征 f i ( x , y ) f_i(x,y) fi(x,y) 在训练数据上出现的加权频率和它在已知数据上出现的加权频率相等。在这里,训练数据通常反映了一些先验模式,模型在学习的时候需要保证不违反这些先验模式。
okay,接着我们写出特征函数在模型预测中的加权频率:
E P ( f i ) = ∑ x ∑ y P ~ ( x ) P ( y ∣ x ) f i ( x , y ) \begin{align} E_{P}(f_i) & = \sum_x \sum_y \tilde{P}(x) {P}(y|x)f_i(x,y) \\ \end{align} EP(fi)=x∑y∑P~(x)P(y∣x)fi(x,y)
唯一的变化就是把已知的 P ~ ( y ∣ x ) \tilde{P}(y|x) P~(y∣x) 换成了需要求解的 P ( y ∣ x ) P(y|x) P(y∣x)。
那么!我们的约束条件就是:
E P ( f i ) = E P ~ ( f i ) \begin{align} E_{P}(f_i) = E_{\tilde{P}}(f_i) \end{align} EP(fi)=EP~(fi)
也就是让特征函数在模型预测上的加权频率和它在经验概率上的加权频率相等。
注意注意o,为什么这里是 f i f_i fi 而不是 f f f,因为我们通常有不止一个约束条件,每个约束条件(特征函数)负责特定的特征,或者说先验规则,有点像多头注意力那种意思。so,如果严谨一点写,在我们有 m m m 个约束条件的时候,最终式子的约束就是:
E P ( f i ) = E P ~ ( f i ) , i = 1 , 2 , . . . , m \begin{align} E_{P}(f_i) = E_{\tilde{P}}(f_i), \ i=1,2,...,m \end{align} EP(fi)=EP~(fi), i=1,2,...,m
你可能会有点疑惑,诶,为什么不直接用 P ~ ( x , y ) \tilde{P}(x, y) P~(x,y) 做约束条件?
eeee,因为用 P ~ ( x , y ) \tilde{P}(x, y) P~(x,y) 很诡异,我们希望模型学习到的是 x x x 和 y y y 之间的关系,或者说是 x , y x, y x,y 满足特定规则的频率(事实先验),而不是它们同时出现的概率,这个东西学习出来是没有意义的,并且非常容易过拟合。
好呀!!现在我们已经知道约束条件了,现在终于可以开始数学推导啦!!
公式求解
okay!终于到这个最数学的环节了哈哈哈哈哈。根据前面说的,我们要最大化的式子及其约束条件如下:
max H ( P ) = − ∑ x , y P ~ ( x ) P ( y ∣ x ) log P ( y ∣ x ) s . t . E p ( f i ) = E p ~ ( f i ) i = 1 , 2 , . . . , m s . t . ∑ y P ( y ∣ x ) = 1 \begin{align} & \max H(P) = -\sum_{x,y} \tilde{P}(x)P(y|x) \log P(y|x)\\ & s.t. \ E_{p(f_i)} = E_{\tilde{p}(f_i)} \ i=1, 2, ..., m \\ & s.t. \sum_y P(y|x)=1 \end{align} maxH(P)=−x,y∑P~(x)P(y∣x)logP(y∣x)s.t. Ep(fi)=Ep~(fi) i=1,2,...,ms.t.y∑P(y∣x)=1
weeeeell,惯常操作,我们通常倾向于求解最小值而非最大值,so 我们把上面式子前面的负号去掉,得到等价的问题:
min − H ( P ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) log P ( y ∣ x ) s.t. E p ( f i ) = E p ~ ( f i ) , i = 1 , 2 , . . . , m s.t. ∑ y P ( y ∣ x ) = 1 \begin{align} & \min \ -H(P) = \sum_{x,y} \tilde{P}(x)P(y|x) \log P(y|x)\\ & \text{s.t.} \ E_{p(f_i)} = E_{\tilde{p}(f_i)}, \ i=1, 2, ..., m \\ & \text{s.t.}\ \sum_y P(y|x)=1 \end{align} min −H(P)=x,y∑P~(x)P(y∣x)logP(y∣x)s.t. Ep(fi)=Ep~(fi), i=1,2,...,ms.t. y∑P(y∣x)=1
好呀,对这个约束最优化问题,我们使用拉格朗日乘子法进行求解(woq 这东西真是老朋友了((()
首先构造拉格朗日函数 L ( P , w ) L(P, w) L(P,w),它等于原来需要最小化的函数 − H ( P ) -H(P) −H(P) 和多个约束条件的和。
L ( P , w ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) log P ( y ∣ x ) + w 0 ( 1 − ∑ y P ( y ∣ x ) ) + ∑ i = 1 m w i ( E p ~ ( f ) − E p ( f ) ) \begin{align} & L(P, w) = \sum_{x,y} \tilde{P}(x)P(y|x) \log P(y|x)+w_0(1-\sum_y P(y|x)) + \sum_{i=1}^m w_i(E_{\tilde{p}(f)}-E_{p(f)}) \\ \end{align} L(P,w)=x,y∑P~(x)P(y∣x)logP(y∣x)+w0(1−y∑P(y∣x))+i=1∑mwi(Ep~(f)−Ep(f))
well,我们把约束条件 E p ~ ( f ) E_{\tilde{p}(f)} Ep~(f) 和 E p ( f ) E_{p(f)} Ep(f) 展开,这两个前面都已经说过了,这里没有什么新东西。
E p ~ ( f i ) − E p ( f i ) = ∑ x , y P ~ ( x ) P ~ ( y ∣ x ) f i ( x , y ) − ∑ x , y P ~ ( x ) P ( y ∣ x ) f i ( x , y ) \begin{align} E_{\tilde{p}(f_i)}-E_{p(f_i)} = \sum_{x,y}\tilde{P}(x)\tilde{P}(y|x)f_i(x,y)-\sum_{x,y}\tilde{P}(x)P(y|x)f_i(x, y) \end{align} Ep~(fi)−Ep(fi)=x,y∑P~(x)P~(y∣x)fi(x,y)−x,y∑P~(x)P(y∣x)fi(x,y)
okay,然后我们把展开之后的式子带回 L ( P , w ) L(P,w) L(P,w) 中,得到完整的函数:
L ( P , w ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) log P ( y ∣ x ) + w 0 ( 1 − ∑ y P ( y ∣ x ) ) + ∑ i = 1 m w i ( ∑ x , y P ~ ( x ) P ~ ( y ∣ x ) f i ( x , y ) − ∑ x , y P ~ ( x ) P ( y ∣ x ) f i ( x , y ) ) \begin{align} & L(P, w) = \sum_{x,y} \tilde{P}(x)P(y|x) \log P(y|x)+w_0\bigg(1-\sum_y P(y|x)\bigg) + \sum_{i=1}^m w_i\bigg(\sum_{x,y}\tilde{P}(x)\tilde{P}(y|x)f_i(x,y)-\sum_{x,y}\tilde{P}(x)P(y|x)f_i(x, y)\bigg) \\ \end{align} L(P,w)=x,y∑P~(x)P(y∣x)logP(y∣x)+w0(1−y∑P(y∣x))+i=1∑mwi(x,y∑P~(x)P~(y∣x)fi(x,y)−x,y∑P~(x)P(y∣x)fi(x,y))
嗯…好的,按照 “常理”,我们现在应该干什么,应该对这个东西求解偏导对吧,然后让偏导等于 0,然后就能得出最终的参数了。
however…这里并不这么做。为什么呢?
see,如果我们要对这个东西求偏导,也就是说要分别对 P P P 和 w w w 求偏导,并且让它们都等于 0。
我们可以 “求一下试试”,看看会发生什么《有趣》的事情。
//
不难发现,在这种情况下,我们没有办法单独求出 w w w 或 P ( y ∣ x ) P(y|x) P(y∣x) 中的任何一个。
为什么?我们看这个公式,在对 P ( y ∣ x ) P(y|x) P(y∣x) 的偏导里,有 w w w 出现,也就是说想让对 P ( y ∣ x ) P(y|x) P(y∣x) 的偏导等于 0,就必须先求出 w w w 的值;但是,在对 w w w 的偏导中,又有 P ( y ∣ x ) P(y|x) P(y∣x) 出现,也就是说想让对 w w w 的偏导等于 0,就必须先求出 P ( y ∣ x ) P(y|x) P(y∣x) 的值。
这相当于循环了,想求出 a a a,就得先求出 b b b;但是想求出 b b b 又得先求出 a a a.
well,这已经充分告诉我们,真的不能这么求()我们最好是把对 P ( y ∣ x ) P(y|x) P(y∣x) 的偏导和对 w w w 的偏导放在两个式子里求。或者说,先求其中一个,求出定值以后,再求另一个。
aaa 感觉这么说还是不太清楚,我们直接来看式子吧。
在这里,我们把原始问题换一种写法,写成一个极小极大问题,如下:
min P max w L ( P , w ) \begin{align} \min_P \max_w L(P, w) \end{align} PminwmaxL(P,w)
顾名思义嘛,极小极大问题就是说,外层是一个极小化问题,内层是一个极大化问题。用高中数学的 “淳朴描述” 来说就是,我要求这玩意的最大值的最小值((emm 这种题还真考过)。
嗯感觉和生成对抗网络 GAN 的损失函数有点像。
在这个式子中,我们先看内层,再看外层。内层要求使得 L ( P , w ) L(P, w) L(P,w) 最大的 w w w,和 P P P 没关系;外层在内层已经求出来的 w w w 的基础上再求解使得内层最小的 P P P。
通过这种方法,我们就把原来的【要同时求两个偏导】的问题转化为了【先求解一个,再求解另一个】的问题。
这很 nice!
啊啊啊不过,等等。首先,我们需要证明一下转化出极小极大问题和原始问题是等价的。也就是说,这两个问题无论求解哪一个,最终得到的结果都是一样的(否则这种转化就是不成立的)。
emmmmmm…虽然但是,这个问题涉及到拉格朗日对偶性()关于拉格朗日对偶,我会专门开一篇文章来写。。。这个玩意可以研究的东西实在是太多了。。。so 我之后过来填坑!(希望不会太久errr((
不过在现在的条件下,这两个东西确实是等价的,so 我们在这里可以这么转化!
嗯。。不过,我们把原始问题写成极小极大形式并不是为了求解这个极小极大,我们的真正目的是——把它化成对偶形式,然后求解对偶形式!
(注意,并不是所有的原始问题都和对偶问题等价,等价的只有一部分,这里不展开说了,我会专门写一篇的!(这个也属于拉格朗日对偶性的范畴))
什么是对偶形式呢,简单来说,或者说非常不严谨地来说,就是把 min \min min 和 max \max max 换个位置,变成 min \min min 在里面 max \max max 在外面。
原始形式极小极大形式的对偶形式是极大极小形式(这不显然吗 ),即:
max w min P L ( P , w ) \begin{align} \max_w \min_P L(P, w) \end{align} wmaxPminL(P,w)
嗯,就是求 L ( P , w ) L(P,w) L(P,w) 的最小值的最大值。
好了,问题到了这里开始变得好算了!
不过我们先规定一些 notation 吧。我们把内层函数极小化函数的解(即 P ( y ∣ x ) P(y|x) P(y∣x))记作 P w ( y ∣ x ) P_w(y|x) Pw(y∣x),把内层函数极小化之后得到的值,就是 min P \min_P minP 最终的值,记作 ψ ( w ) \psi(w) ψ(w).
不用太纠结这些符号,它们只是为了后面代指的方便性(总写那种很长的式子总归是不方便的)))。
开始计算!
首先当然是要求内层函数的最小值的,我们直接求解偏导数就 okay.
∂ L ( P , w ) ∂ P ( y ∣ x ) = ∑ x , y P ~ ( x ) ( 1 + log P ( y ∣ x ) ) − ∑ y w 0 − ∑ i = 1 m w i ( ∑ x , y P ~ ( x ) f i ( x , y ) ) \begin{align} \frac {\partial L(P,w)}{\partial P(y|x)} & = \sum_{x,y} \tilde{P}(x)\bigg(1+\log P(y|x)\bigg)-\sum_y w_0 -\sum_{i=1}^m w_i \bigg(\sum_{x,y}\tilde{P}(x)f_i(x, y)\bigg) \\ \end{align} ∂P(y∣x)∂L(P,w)=x,y∑P~(x)(1+logP(y∣x))−y∑w0−i=1∑mwi(x,y∑P~(x)fi(x,y))
啊这个式子有点长,希望没有被网页边缘挡住()。
观察这行,我们发现,第一项和第三项都有一个 P ~ ( x ) \tilde{P}(x) P~(x),为了后续运算方便,我们可以在第二项也加入 P ~ ( x ) \tilde{P}(x) P~(x)(当然,是在不影响原始数值的前提下),然后把所有的 P ~ ( x ) \tilde{P}(x) P~(x) 都提出来。如下。
= ∑ x , y P ~ ( x ) ( 1 + log P ( y ∣ x ) ) − ∑ x P ~ ( x ) ∑ y w 0 − ∑ x , y P ~ ( x ) ∑ i = 1 m w i f i ( x , y ) = ∑ x , y P ~ ( x ) ( 1 + log P ( y ∣ x ) ) − ∑ x , y P ~ ( x ) w 0 − ∑ x , y P ~ ( x ) ∑ i = 1 m w i f i ( x , y ) \begin{align} & = \sum_{x,y} \tilde{P}(x)\bigg(1+\log P(y|x)\bigg)-\sum_{x} \tilde{P}(x) \sum_y w_0 -\sum_{x,y}\tilde{P}(x)\sum_{i=1}^m w_i f_i(x, y) \\ & = \sum_{x,y} \tilde{P}(x)\bigg(1+\log P(y|x)\bigg)-\sum_{x,y} \tilde{P}(x) w_0 -\sum_{x,y}\tilde{P}(x)\sum_{i=1}^m w_i f_i(x, y) \end{align} =x,y∑P~(x)(1+logP(y∣x))−x∑P~(x)y∑w0−x,y∑P~(x)i=1∑mwifi(x,y)=x,y∑P~(x)(1+logP(y∣x))−x,y∑P~(x)w0−x,y∑P~(x)i=1∑mwifi(x,y)
因为 ∑ x P ~ ( x ) \sum_x \tilde{P}(x) ∑xP~(x) 等于 1,所以第二项的结果其实和之前没有任何区别,相当于显式地乘了一个系数 1.(注意,下面那行和上面那行没有任何区别,只是为了和第一、三项统一格式,所以把 ∑ x \sum_x ∑x 和 ∑ y \sum_y ∑y 写到了一起变成了 ∑ x , y \sum_{x,y} ∑x,y。
不过这样我们后面就可以把 P ~ ( x ) \tilde{P}(x) P~(x) 提出来了,计算会方便一些。
豪德,现在我们把 P ~ ( x ) \tilde{P}(x) P~(x) 提出来,得到:
∂ L ( P , w ) ∂ P ( y ∣ x ) = ∑ x , y P ~ ( x ) ( 1 + log P ( y ∣ x ) − w 0 − ∑ i = 1 m w i f i ( x , y ) ) = 0 \begin{align} \frac {\partial L(P,w)}{\partial P(y|x)} & = \sum_{x,y} \tilde{P}(x)\bigg(1+\log P(y|x)-w_0-\sum_{i=1}^m w_i f_i(x, y) \bigg)\\ & = 0 \end{align} ∂P(y∣x)∂L(P,w)=x,y∑P~(x)(1+logP(y∣x)−w0−i=1∑mwifi(x,y))=0
偏导要等于 0,但是显然前半部分的 P ~ ( x ) \tilde{P}(x) P~(x) 不能等于 0.
这下,后面那部分,也就是 1 + log P ( y ∣ x ) − w 0 − ∑ i = 1 m w i f i ( x , y ) 1+\log P(y|x)-w_0-\sum_{i=1}^m w_i f_i(x, y) 1+logP(y∣x)−w0−∑i=1mwifi(x,y),就需要等于 0 了。
非常好,到这里我们基本上已经成功了()这个式子简直太好求解了,如下。
1 + log P ( y ∣ x ) − w 0 − ∑ i = 1 m w i f i ( x , y ) = 0 → log P ( y ∣ x ) = w 0 + ∑ i = 1 m w i f i ( x , y ) − 1 → P ( y ∣ x ) = exp ( w 0 + ∑ i = 1 m w i f i ( x , y ) − 1 ) → P ( y ∣ x ) = exp ( ∑ i = 1 m w i f i ( x , y ) ) exp ( 1 − w 0 ) \begin{align} 1+\log P(y|x)-w_0-\sum_{i=1}^m w_i f_i(x, y)=0 \\ \to \log P(y|x)= w_0+\sum_{i=1}^m w_i f_i(x, y)-1 \\ \to P(y|x)=\exp \bigg(w_0+\sum_{i=1}^m w_i f_i(x, y)-1\bigg) \\ \to P(y|x) = \frac{\exp(\sum_{i=1}^m w_i f_i(x, y))}{\exp(1-w_0)} \end{align} 1+logP(y∣x)−w0−i=1∑mwifi(x,y)=0→logP(y∣x)=w0+i=1∑mwifi(x,y)−1→P(y∣x)=exp(w0+i=1∑mwifi(x,y)−1)→P(y∣x)=exp(1−w0)exp(∑i=1mwifi(x,y))
好哇!!现在我们已经非常接近成功了!
我们现在已经把内层函数(需要求极小值的函数)的解给求出来啦!不过注意,我们现在求的是对于某个特定的 x x x 和特定的 y y y 的 P ( y ∣ x ) P(y|x) P(y∣x)(因为我们在让它等于 0 的时候把前面的 ∑ x , y \sum_{x,y} ∑x,y 给去掉了),也就是说,我们还得注意一个限制条件—— ∑ y P ( y ∣ x ) = 1 \sum_y P(y|x)=1 ∑yP(y∣x)=1.
weeeeeell,那么,为了保证上面这个约束条件成立,我们需要让 P ( y ∣ x ) P(y|x) P(y∣x) 的分母部分等于所有的分子相加,即相当于一个配分函数。
举个例子,现在我希望两个分数 a b \frac a b ba 和 c d \frac c d dc 的和为 1,那么我就让 b = d = a + c b=d=a+c b=d=a+c 就可以了,这样两个分数的和就是 a a + b + b a + b = 1 \frac a {a+b}+\frac b {a+b}=1 a+ba+a+bb=1,分母相当于一个配分函数。
回到 P ( y ∣ x ) P(y|x) P(y∣x) 的情境,分母等于所有的分子的和,记作 Z ( w ) Z(w) Z(w). 那么有:
Z ( x ) = ∑ y exp ( ∑ i = 1 m w i f i ( x , y ) ) \begin{align} Z(x)=\sum_y\exp\bigg(\sum_{i=1}^m w_i f_i(x, y)\bigg) \end{align} Z(x)=y∑exp(i=1∑mwifi(x,y))
嗯!!那么综上,最大熵模型的一般形式就是:
P w ( y ∣ x ) = exp ( ∑ i = 1 m w i f i ( x , y ) ) Z w ( x ) , Z w ( x ) = ∑ y exp ( ∑ i = 1 m w i f i ( x , y ) ) \begin{align} P_w(y|x) = \frac{\exp\bigg(\sum_{i=1}^m w_i f_i(x, y)\bigg)}{Z_w(x)}, \ Z_w(x)=\sum_y\exp\bigg(\sum_{i=1}^m w_i f_i(x, y)\bigg) \end{align} Pw(y∣x)=Zw(x)exp(∑i=1mwifi(x,y)), Zw(x)=y∑exp(i=1∑mwifi(x,y))
好耶!!(撒花(嘿嘿(ヾ(≧▽≦*)o
那么,最大熵模型的一般形式就推导出来啦!
嗯…maybe 你想起来,,诶我们现在是不是只算了内层的极小,外层的极大还没算呀?
yesssss 是的! 现在我们得到了 P w ( y ∣ x ) P_w(y|x) Pw(y∣x) 了,它属于哪个函数来着?哦原来是 L ( P , w ) L(P, w) L(P,w)。 L ( P , w ) L(P,w) L(P,w) 的式子太长我就不在这再写一遍了。
也就是说,我们现在已经求出了 min P L ( P , w ) \min_PL(P, w) minPL(P,w) 了,接下来的事情和 P w ( y ∣ x ) P_w(y|x) Pw(y∣x) 就没关系了,接下来就是找使得内层极小函数取到最大值的 w w w(特征权重)了。
weeeell,不过这个东西就没办法在这里统一写了。 w w w 是特征函数的权重,求使得整个式子最大的 w w w 必然会和特征函数 f i ( x , y ) f_i(x,y) fi(x,y) 的选取有关。从求偏导的视角看也是一样的,对 w w w 求偏导的话, f i ( x , y ) f_i(x,y) fi(x,y) 必定是其中一项。
okay,那这个怎么办呀?
前面说了,最大熵模型有很多特例,这些特例的 “特” 就是指它们有着各自独特的特征函数,so 这里就需要分特征函数讨论啦,不同的特征函数会带来不同的计算方式和不同的结果。
后面我会说到最大熵模型和逻辑回归的关系,到时候你可能会更明白一点!
okai!! 那么现在,我们就已经完整推导出最大熵模型啦!! 不过在开始探讨 sigmoid 的来历以前,我们先来个小小的总结吧~!
一般形式
(在这里放一个 h2 索引是为了便于查找)
根据上面的推导,我们得到了最大熵模型的一般形式:
P w ( y ∣ x ) = exp ( ∑ i = 1 m w i f i ( x , y ) ) Z w ( x ) , Z w ( x ) = ∑ y exp ( ∑ i = 1 m w i f i ( x , y ) ) \begin{align} P_w(y|x) = \frac{\exp\bigg(\sum_{i=1}^m w_i f_i(x, y)\bigg)}{Z_w(x)}, \ Z_w(x)=\sum_y\exp\bigg(\sum_{i=1}^m w_i f_i(x, y)\bigg) \end{align} Pw(y∣x)=Zw(x)exp(∑i=1mwifi(x,y)), Zw(x)=y∑exp(i=1∑mwifi(x,y))
其中 P ( y ∣ x ) P(y|x) P(y∣x) 代表在输入为特定值 x x x 的时候,输出为特定值 y y y 的概率;
f i ( x , y ) f_i(x, y) fi(x,y) 是特征函数,共有 m m m 个;
w i w_i wi 是特征(函数)的权值,共有 m m m 个;
Z ( w ) Z(w) Z(w) 是用于归一化的配分函数,保证构成合法的概率分布。
嗯!我们成功了!
well 虽然但是我并不习惯在一个索引里只放很少的东西(),所以我们不妨在这个索引下面总结一下上面的推导过程吧!
最初,我们面对的是一个约束最大化问题,我们把它变成了常见的约束最小化问题。
then,我们把这个约束最小化问题转化成了一个等价的极小极大型问题, L ( P , w ) L(P, w) L(P,w)。
然后,因为 L ( P , w ) L(P, w) L(P,w) 对 P P P 而言是一个凸函数,根据拉格朗日对偶性,我们把它转化为了等价的极大极小型问题。
然后,我们求解这个极大极小型问题,首先求解内层的极小函数,得到了最终的 P ( y ∣ x ) P(y|x) P(y∣x) 啦!
最后,我们应该求解外层的极大函数,但是它的求解和特征函数的选择有关。
嗯…所以,现在前面几步都有了,看看最后一步,我们是不是应该选择一个特征函数…啦?
好诶,下一个 part 就是要干这件事!让我们来会会我们的老朋友 sigmoid 吧…
(哈哈哈这个过渡是不是很丝滑(((
(choice the best transition…——SAT / ACT 语法)
sigmoid 函数的来历
好耶!!这是个困扰我很久的问题,大概是今年三月份的时候,我推逻辑回归的公式,但是始终搞不明白 sigmoid 是怎么来的。它好像…凭空就这么冒出来了()。
当时在网上查了好多解释,大部分解释都是说它连续可导范围在 (0,1) 之间一类的。但我当时就很好奇,eeerr 那肯定不止这一个函数满足上面这些要求呀,但是最终用了 Sigmund,这肯定还有一些深层的原因…
好吧但是当时查了好久也没看明白。。
不过今天!在推完最大熵模型且知道了它的一般形式之后!这个问题就很好说明啦!!
还记得我前面说的那句话吗()最大熵模型是一个范式,我们可以通过选择不同的特征函数来获得不同的特例。
sigmoid 就是其中的一个特例!
更细节一点,sigmoid 函数,或者说逻辑回归,就是 y y y 的类别为 2 时候的最大熵模型!
well,从一般形式开始吧,我们已经得到了最大熵模型的一般形式为为:
P w ( y ∣ x ) = exp ( ∑ i = 1 m w i f i ( x , y ) ) Z w ( x ) , Z w ( x ) = ∑ y exp ( ∑ i = 1 m w i f i ( x , y ) ) \begin{align} P_w(y|x) = \frac{\exp\bigg(\sum_{i=1}^m w_i f_i(x, y)\bigg)}{Z_w(x)}, \ Z_w(x)=\sum_y\exp\bigg(\sum_{i=1}^m w_i f_i(x, y)\bigg) \end{align} Pw(y∣x)=Zw(x)exp(∑i=1mwifi(x,y)), Zw(x)=y∑exp(i=1∑mwifi(x,y))
现在,我们选择一个特征函数 f i ( x , y ) f_i(x,y) fi(x,y):
f i ( x , y ) = { x ( i ) , if y = 1 0 , otherwise \begin{align} f_i(x,y)=\left\{ \begin{array}{ll} x^{(i)}, \ \text{if} \ y=1 \\ 0, \ \text{otherwise} \end{array} \right. \end{align} fi(x,y)={x(i), if y=10, otherwise
enn…这个特征函数在干嘛呢,其实就是,如果 y = 1 y=1 y=1,那么 x x x 就等于它的第 i i i 个分量 x ( i ) x^{(i)} x(i)(我们知道,逻辑回归的输入是 x = ( x ( 1 ) , x ( 2 ) , . . . , x ( m ) ) x=(x^{(1)}, x^{(2)}, ..., x^{(m)}) x=(x(1),x(2),...,x(m)))。
诶等等,我突然发现,后续的内容需要先对逻辑回归有一些了解,具体可以看这篇:【初中生讲机器学习】14. 手撕公式,一篇带你理解逻辑回归!
ok,我们把这个东西带进去,当 y = 0 y=0 y=0 的时候(这种情况比较好算),我们有:
P w ( y = 0 ∣ x ) = exp ( ∑ i = 1 m w i ∗ 0 ) ) Z w ( x ) = exp ( 0 ) Z w ( x ) = 1 Z w ( x ) \begin{align} P_w(y=0|x)&= \frac{\exp\bigg(\sum_{i=1}^m w_i * 0)\bigg)}{Z_w(x)} \\ & = \frac{\exp(0)}{Z_w(x)} \\ & = \frac 1 {Z_w(x)} \end{align} Pw(y=0∣x)=Zw(x)exp(∑i=1mwi∗0))=Zw(x)exp(0)=Zw(x)1
然后再考虑 y = 1 y=1 y=1 的情况,这个的计算稍微复杂一点。
P w ( y = 1 ∣ x ) = exp ( ∑ i = 1 m w i ∗ x ( i ) ) Z w ( x ) \begin{align} P_w(y=1|x)&= \frac{\exp\bigg(\sum_{i=1}^m w_i * x^{(i)}\bigg)}{Z_w(x)} \\ \end{align} Pw(y=1∣x)=Zw(x)exp(∑i=1mwi∗x(i))
errr 好吧其实也没什么复杂的,分量和对应的权重相乘。
well,现在 y = 1 y=1 y=1 和 y = 0 y=0 y=0 的情况分别计算完了,我们可以计算配分函数 Z w ( x ) Z_w(x) Zw(x) 了。前面说过,配分函数就是所有情况的分子相加,即:
Z w ( x ) = 1 + exp ( ∑ i = 1 m w i ∗ x ( i ) ) \begin{align} Z_w(x) = 1+\exp\bigg(\sum_{i=1}^m w_i * x^{(i)}\bigg) \end{align} Zw(x)=1+exp(i=1∑mwi∗x(i))
这样的话,我们就可以把配分函数带进 P ( y = 1 ∣ x ) P(y=1|x) P(y=1∣x) 和 P ( y = 0 ∣ x ) P(y=0|x) P(y=0∣x) 里面了,我们得到:
{ P ( y = 1 ∣ x ) = exp ( ∑ i = 1 m w i ∗ x ( i ) ) 1 + exp ( ∑ i = 1 m w i ∗ x ( i ) ) P ( y = 0 ∣ x ) = 1 1 + exp ( ∑ i = 1 m w i ∗ x ( i ) ) \begin{align}\left\{ \begin{array}{ll} P(y=1|x)=\frac{\exp\bigg(\sum_{i=1}^m w_i * x^{(i)}\bigg)}{1+\exp\bigg(\sum_{i=1}^m w_i * x^{(i)}\bigg)} \\ P(y=0|x)=\frac{1}{1+\exp\bigg(\sum_{i=1}^m w_i * x^{(i)}\bigg)} \end{array} \right. \end{align} ⎩ ⎨ ⎧P(y=1∣x)=1+exp(∑i=1mwi∗x(i))exp(∑i=1mwi∗x(i))P(y=0∣x)=1+exp(∑i=1mwi∗x(i))1
对式子变个型,我们得到:
{ P ( y = 1 ∣ x ) = 1 exp ( − ∑ i = 1 m w i ∗ x ( i ) ) + 1 = 1 e − W T X + 1 P ( y = 0 ∣ x ) = 1 1 + exp ( ∑ i = 1 m w i ∗ x ( i ) ) = e − W T X e − W T X + 1 \begin{align} \left\{ \begin{array}{ll} P(y=1|x)=\frac{1}{\exp\bigg(-\sum_{i=1}^m w_i * x^{(i)}\bigg)+1}=\frac{1}{e^{-W^TX}+1} \\ P(y=0|x)=\frac{1}{1+\exp\bigg(\sum_{i=1}^m w_i * x^{(i)}\bigg)}=\frac{e^{-W^TX}}{e^{-W^TX}+1} \end{array} \right. \end{align} ⎩ ⎨ ⎧P(y=1∣x)=exp(−∑i=1mwi∗x(i))+11=e−WTX+11P(y=0∣x)=1+exp(∑i=1mwi∗x(i))1=e−WTX+1e−WTX
如果你没看懂这个变形,可以去看看逻辑回归那篇,那篇里面写的很详细。第二个等号后面就是把 ∑ \sum ∑ 用(等价的)向量相乘来表示了,因为输入的 x x x 和它对应的多个权重向量都可以用向量来表示。
(嗯,你可能在纠结,诶逻辑回归里面不是还有个偏置项 b b b 吗?的确是这样的,上面的表示中略去了 b b b,但是要加上它其实也很简单,多加一个恒等于 1 的 w i w_i wi 就可以了,在逻辑回归那一篇中有更多的说明。)
现在,我们得到了什么?
——我们得到了逻辑回归中的概率表示!也就是 sigmoid 函数!
看到了吗!逻辑回归可以完全从最大熵模型的一般形式得到!也就是说,我们在逻辑回归那一篇里讲过的 P ( y = 1 ∣ x ) P(y=1|x) P(y=1∣x) 和 P ( y = 0 ∣ x ) P(y=0|x) P(y=0∣x) 都是有根据的,都是符合最大熵原理的。
well,我们再往后想一下,在逻辑回归那里,我们是给出了概率分布的,而我们要求解的是什么?是特征函数的权重 w w w,对吧。
——这不是就和最大熵模型求解外层的 max \max max 函数对上了吗?
在最大熵模型中,我们通过对偶问题内层的 min \min min 函数,或者说 min P L ( P , w ) \min_PL(P,w) minPL(P,w) 函数,得到了概率分布 P ( y ∣ x ) P(y|x) P(y∣x) 和内层函数的(含有特征函数权重 w w w 的)值 ψ ( w ) \psi(w) ψ(w)。然后下一步就是求解 max w ψ ( w ) \max_w \psi(w) maxwψ(w).
这一步不就对应逻辑回归中通过交叉熵损失函数和极大似然估计求解权重参数 w w w 的过程吗?
这就进一步说明了逻辑回归和最大熵模型之间的关系了。逻辑回归最终计算出来的权重参数 w w w,其实就是让整个式子取到最大熵的 w w w!
好耶!这样的话,我们就真的搞懂了 why sigmoid 这个问题了!逻辑回归只是最大熵模型的一个特例而已。
好啊!终于把半年多前挖的坑填上了!
嗯…不过或许这只是 sigmoid 来历的其中一种解释…还有一种基于指数族分布和广义线性模型的解释方法,不过那就说远啦,我或许会在后面的文章中给出!(这又是一个新的坑了…但是我估计得先去把拉格朗日对偶那个坑给填上吧())
好哒!!这一篇的主要内容就是这些!我们来做一个小小的总结吧~
总结
嗯!这次就按照一整个思路线来做总结吧~
首先是最大熵模型的思想,或者说准则。最大熵模型认为,对于未知的事情不要做任何假设;换言之,对于那些不确定具体概率分布的事件,最合适的办法就是认为它们是均匀分布的,即每个事件都有相同的概率。
从一个更加数学的角度来看,最大熵模型的核心就是,在满足已知约束的前提下,选择熵最大(即不确定性最大)的概率分布。
then,从这个思想出发,我们给出了最大熵模型的公式及其约束条件:
min − H ( P ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) log P ( y ∣ x ) s.t. E p ( f i ) = E p ~ ( f i ) , i = 1 , 2 , . . . , m s.t. ∑ y P ( y ∣ x ) = 1 \begin{align} & \min \ -H(P) = \sum_{x,y} \tilde{P}(x)P(y|x) \log P(y|x)\\ & \text{s.t.} \ E_{p(f_i)} = E_{\tilde{p}(f_i)}, \ i=1, 2, ..., m \\ & \text{s.t.}\ \sum_y P(y|x)=1 \end{align} min −H(P)=x,y∑P~(x)P(y∣x)logP(y∣x)s.t. Ep(fi)=Ep~(fi), i=1,2,...,ms.t. y∑P(y∣x)=1
我们将这个问题转化为了拉格朗日对偶问题进行求解,这是一个新 “坑”,我会在后续的文章里给它填上。
最终,我们求得了最大熵模型的一般形式:
P w ( y ∣ x ) = exp ( ∑ i = 1 m w i f i ( x , y ) ) Z w ( x ) , Z w ( x ) = ∑ y exp ( ∑ i = 1 m w i f i ( x , y ) ) \begin{align} P_w(y|x) = \frac{\exp\bigg(\sum_{i=1}^m w_i f_i(x, y)\bigg)}{Z_w(x)}, \ Z_w(x)=\sum_y\exp\bigg(\sum_{i=1}^m w_i f_i(x, y)\bigg) \end{align} Pw(y∣x)=Zw(x)exp(∑i=1mwifi(x,y)), Zw(x)=y∑exp(i=1∑mwifi(x,y))
这里有一个关键点。最大熵模型是一个范式,我们可以通过改变特征函数 f ( x , y ) f(x,y) f(x,y) 来获得它不同的特例。
然后,我们从这个关键点出发,选择如下的特征函数,并把它带入到最大熵模型的一般形式中。
f i ( x , y ) = { x i , if y = 1 0 , otherwise \begin{align} f_i(x,y)=\left\{ \begin{array}{ll} x_i, \ \text{if} \ y=1 \\ 0, \ \text{otherwise} \end{array} \right. \end{align} fi(x,y)={xi, if y=10, otherwise
我们得到了如下式子:
{ P ( y = 1 ∣ x ) = 1 e − W T X + 1 P ( y = 0 ∣ x ) = e − W T X e − W T X + 1 \begin{align} \left\{ \begin{array}{ll} P(y=1|x)=\frac{1}{e^{-W^TX}+1} \\ P(y=0|x)=\frac{e^{-W^TX}}{e^{-W^TX}+1} \end{array} \right. \end{align} {P(y=1∣x)=e−WTX+11P(y=0∣x)=e−WTX+1e−WTX
这说明,逻辑回归只是最大熵模型在二分类的时候的一个特例,sigmoid 函数也只是最大熵函数的特殊形式。逻辑回归最终解得的参数 w w w 就是让整个式子获得最大熵的参数 w w w.
总结结束!(★,°:.☆(^ ε ^)/$:.°★ 。
好耶!!!又是一篇很有意思的文章嘿嘿嘿,终于填坑啦!
嗯!那这一篇就到这里吧~~我们下一篇再见!(希望能早日填上拉格朗日对偶的坑((
这篇文章讲解了最大熵模型,并给出了完整的数学推导,希望对你有所帮助!⭐
欢迎三连!!一起加油!🎇
——Geeker_LStar