信息熵
设 X X X是取有限个值的随机变量, X ∈ { x 1 , x 2 , ⋯ , x n } , i = 1 , 2 , ⋯ , n X\in\{x_1,x_2,\cdots,x_n\},\ i=1,2,\cdots,n X∈{x1,x2,⋯,xn}, i=1,2,⋯,n,则随机变量 X X X的熵定义为:
H ( X ) = − ∑ i = 1 n P ( X = x i ) log a P ( X = x i ) H(X)=-\sum_{i=1}^n P(X=x_i)\log_aP(X=x_i) H(X)=−i=1∑nP(X=xi)logaP(X=xi)
H ( X ) H(X) H(X)作为 X X X对应的随机场的不确定性的度量,代表了 X X X所包含的信息量,也就是各个基本事件 { X = x i } \{X=x_i\} {X=xi}的平均信息量。
与热力学中的熵不同,信息熵只能降低,不确定性被消除的过程不能逆向进行。
设 X ∈ { x 1 , x 2 , ⋯ , x n } , i = 1 , 2 , ⋯ , n , Y ∈ { y 1 , y 2 , ⋯ , y m } , j = 1 , 2 , ⋯ , m X\in\{x_1,x_2,\cdots,x_n\},\ i=1,2,\cdots,n,\ Y\in\{y_1,y_2,\cdots,y_m\},\ j=1,2,\cdots,m X∈{x1,x2,⋯,xn}, i=1,2,⋯,n, Y∈{y1,y2,⋯,ym}, j=1,2,⋯,m,已知 X X X条件下 Y Y Y的条件熵为:
H ( Y ∣ X ) = ∑ i = 1 n P ( X = x i ) H ( Y ∣ X = x i ) = − ∑ i = 1 n ( P ( X = x i ) ∑ j = 1 m P ( y j ∣ x i ) log P ( y j ∣ x i ) ) H(Y|X)=\sum_{i=1}^nP(X=x_i)H(Y|X=x_i)=-\sum_{i=1}^n\bigg(P(X=x_i)\sum_{j=1}^mP(y_j|x_i)\log P(y_j|x_i)\bigg) H(Y∣X)=i=1∑nP(X=xi)H(Y∣X=xi)=−i=1∑n(P(X=xi)j=1∑mP(yj∣xi)logP(yj∣xi))
最大熵模型
如果已知所有信息(熵小)就不需要模型去预测了。在所有可能的模型(就是概率分布)中,熵最大的模型是最好的模型,正如我们会想要模型能够识别各种龙飞凤舞而不是只能识别特定字体的文字,能够从各种阴阳怪气而不是简单固定的文本提取有用的信息。模型的输出永远是确定的,要求模型能处理熵大的 X X X,用最少的信息(不确定性大,熵大)得到确定的结果。
对于训练数据 { ( x i , y i ) , i = 1 , 2 , ⋯ , n } \{(x_i,y_i),\ i=1,2,\cdots,n\} {(xi,yi), i=1,2,⋯,n}, y y y是标签。经验分布 P ~ ( x ) = 1 n ∑ i = 1 n 1 ( X i = x ) \tilde{P}(x)=\frac{1}{n}\sum_{i=1}^n\bold{1}(X_i=x) P~(x)=n1∑i=1n1(Xi=x),即 n n n次实验中 x x x出现的次数占实验次数的比例。特征函数 f ( x , y ) f(x,y) f(x,y)描述形参 x x x、 y y y满足某个事实,其返回值为boolean
类型,当形参满足事实时返回true
否则返回false
。那么:
- f ( x , y ) f(x,y) f(x,y)基于 P ~ ( x , y ) \tilde{P}(x,y) P~(x,y)的期望 E P ~ ( f ) = P ~ ( x , y ) f ( x , y ) \mathbb{E}_{\tilde{P}}(f)=\tilde{P}(x,y)f(x,y) EP~(f)=P~(x,y)f(x,y),也就是预测分布;
- f ( x , y ) f(x,y) f(x,y)基于 P ( Y ∣ X ) P(Y|X) P(Y∣X)的期望 E P ( f ) = P ~ ( x ) P ( y ∣ x ) f ( x , y ) \mathbb{E}_P(f)=\tilde{P}(x)P(y|x)f(x,y) EP(f)=P~(x)P(y∣x)f(x,y),真实分布。
训练过程
最大熵模型试图求 P ∗ = max P H ( P ) P^*=\max_PH(P) P∗=maxPH(P),其中:
H ( P ) = − ∑ i = 1 n P ~ ( x i ) P ( y i ∣ x i ) log P ( y i ∣ x i ) H(P)=-\sum_{i=1}^n\tilde{P}(x_i)P(y_i|x_i)\log P(y_i|x_i) H(P)=−i=1∑nP~(xi)P(yi∣xi)logP(yi∣xi)
但是想要计算熵,我们虽然需要 P ~ ( x ) P ( y ∣ x ) \tilde{P}(x)P(y|x) P~(x)P(y∣x)的值,但通过训练模型时计算的是 P ~ ( x , y ) \tilde{P}(x,y) P~(x,y),每次选取一对 ( x , y ) (x,y) (x,y)只能得到 x x x和 y y y同时发生时的经验概率而不能 x x x发生时 y y y的概率。而且标签集合 y y y一定要包含 x x x的所有可能的类别,即 ∑ y P ( y ∣ x ) = 1 \sum_yP(y|x)=1 ∑yP(y∣x)=1。训练过程等价于条件极值问题:
P ∗ = max P ( − ∑ i = 1 n P ~ ( x i ) P ( y i ∣ x i ) log P ( y i ∣ x i ) ) s.t. E P ( f i ) = E P ~ ( f i ) , ∑ y P ( y ∣ x ) = 1 P^*=\max_P\Big(-\sum_{i=1}^n\tilde{P}(x_i)P(y_i|x_i)\log P(y_i|x_i)\Big)\\\text{s.t.}\ \mathbb{E}_P(f_i)=\mathbb{E}_{\tilde{P}}(f_i),\ \sum_yP(y|x)=1 P∗=Pmax(−i=1∑nP~(xi)P(yi∣xi)logP(yi∣xi))s.t. EP(fi)=EP~(fi), y∑P(y∣x)=1
为将条件极值问题转化成无条件极值问题,定义拉格朗日函数:
L ( P , θ ) = − H ( P ) + θ 0 ( 1 − ∑ y P ( y ∣ x ) ) + ∑ i = 1 n θ i ( E P ~ ( f i ) − E P ( f i ) ) L(P,\bm{\theta})=-H(P)+\theta_0\Big(1-\sum_yP(y|x)\Big)+\sum_{i=1}^n\theta_i\Big(\mathbb{E}_{\tilde{P}}(f_i)-\mathbb{E}_P(f_i)\Big) L(P,θ)=−H(P)+θ0(1−y∑P(y∣x))+i=1∑nθi(EP~(fi)−EP(fi))
∂ L ( P , θ ) ∂ P ( y ∣ x ) = ∑ ( x , y ) P ~ ( x ) ( log P ( y ∣ x ) + 1 − θ 0 − ∑ i = 1 n θ i f i ( x , y ) ) = 0 \frac{\partial L(P,\bm\theta)}{\partial P(y|x)}=\sum_{(x,y)}\tilde{P}(x)\Big(\log P(y|x)+1-\theta_0-\sum_{i=1}^n\theta_if_i(x,y)\Big)=0 ∂P(y∣x)∂L(P,θ)=(x,y)∑P~(x)(logP(y∣x)+1−θ0−i=1∑nθifi(x,y))=0
原始优化问题 min P ∈ P max θ L ( P , θ ) \min_{P\in\mathcal{P}}\max_{\bm{\theta}}L(P,\bm{\theta}) minP∈PmaxθL(P,θ)的对偶问题为 max θ min P ∈ P L ( P , θ ) \max_{\bm{\theta}}\min_{P\in\mathcal{P}}L(P,\bm{\theta}) maxθminP∈PL(P,θ),令 ∂ L ( P , θ ) ∂ P ( y ∣ x ) = 0 \frac{\partial L(P,\bm\theta)}{\partial P(y|x)}=0 ∂P(y∣x)∂L(P,θ)=0也就是 L ( P , θ ) L(P,\bm{\theta}) L(P,θ)取到极小值 P θ ( y ∣ x ) P_{\bm\theta}(y|x) Pθ(y∣x)时,得 log P ( y ∣ x ) + 1 − θ 0 − ∑ i = 1 n θ i f i ( x , y ) = 0 \log P(y|x)+1-\theta_0-\sum_{i=1}^n\theta_if_i(x,y)=0 logP(y∣x)+1−θ0−∑i=1nθifi(x,y)=0,这时:
∑ y P ( y ∣ x ) = e θ 0 − 1 ∑ y e ∑ i = 1 n θ i f i ( x , y ) \sum_yP(y|x)=e^{\theta_0-1}\sum_ye^{\sum_{i=1}^n\theta_if_i(x,y)} y∑P(y∣x)=eθ0−1y∑e∑i=1nθifi(x,y)
P θ ( y ∣ x ) = e θ 0 − 1 e ∑ i = 1 n θ i f i ( x , y ) e θ 0 − 1 ∑ y ′ e ∑ i = 1 n θ i f i ( x , y ′ ) = e ∑ i = 1 n θ i f i ( x , y ) ∑ y ′ e ∑ i = 1 n θ i f i ( x , y ′ ) P_{\bm\theta}(y|x)=\frac{e^{\theta_0-1}e^{\sum_{i=1}^n\theta_if_i(x,y)}}{e^{\theta_0-1}\sum_{y^\prime}e^{\sum_{i=1}^n\theta_if_i(x,y^\prime)}}=\frac{e^{\sum_{i=1}^n\theta_if_i(x,y)}}{\sum_{y^\prime}e^{\sum_{i=1}^n\theta_if_i(x,y^\prime)}} Pθ(y∣x)=eθ0−1∑y′e∑i=1nθifi(x,y′)eθ0−1e∑i=1nθifi(x,y)=∑y′e∑i=1nθifi(x,y′)e∑i=1nθifi(x,y)
所以 θ ∗ = arg max θ P θ ( y ∣ x ) \bm{\theta}^*=\arg\max_{\bm\theta}P_{\bm\theta}(y|x) θ∗=argmaxθPθ(y∣x),只留下分子指数部分,得到最大熵模型的最优参数 θ ∗ = arg max θ ∑ i = 1 n θ i f i ( x , y ) \bm{\theta}^*=\arg\max_{\bm\theta}\sum_{i=1}^n\theta_if_i(x,y) θ∗=argmaxθ∑i=1nθifi(x,y)。