一、生成模型
假设有两个类别 C 1 、 C 2 C_{1}、C_{2} C1、C2, P ( C 1 ∣ x ) = P ( x ∣ C 1 ) P ( C 1 ) P ( x ∣ C 1 ) P ( C 1 ) + P ( x ∣ C 2 ) P ( C 2 ) P(C_{1}|x)=\frac{P(x|C_{1})P(C_{1})}{P(x|C_{1})P(C_{1})+P(x|C_{2})P(C_{2})} P(C1∣x)=P(x∣C1)P(C1)+P(x∣C2)P(C2)P(x∣C1)P(C1)其中 P ( C 1 ) 、 P ( C 2 ) P(C_{1})、P(C_{2}) P(C1)、P(C2)为先验分布, P ( x ∣ C 1 ) 、 P ( x ∣ C 2 ) P(x|C_{1})、P(x|C_{2}) P(x∣C1)、P(x∣C2)都是高斯分布,服从以下分布:
f μ , Σ ( x ) = 1 ( 2 π ) D / 2 ∣ Σ ∣ 1 / 2 e x p − 1 2 ( x − u ) T Σ − 1 ( x − u ) f_{\mu ,\Sigma }(x)=\frac{1}{(2\pi )^{D/2}|\Sigma |^{1/2}}exp^{-\frac{1}{2}(x-u)^{T}\Sigma ^{-1}(x-u)} fμ,Σ(x)=(2π)D/2∣Σ∣1/21exp−21(x−u)TΣ−1(x−u)
二、计算某一类样本的高斯分布
根据已有的标签数据可以求得每一类均值和方差的估计,由于该类样本服从高斯分布,则其似然如下:
L ( μ , Σ ) = f μ , Σ ( x 1 ) f μ , Σ ( x 2 ) f μ , Σ ( x 1 ) ⋯ f μ , Σ ( x N ) L(\mu ,\Sigma )=f_{\mu ,\Sigma }(x_{1})f_{\mu ,\Sigma }(x_{2})f_{\mu ,\Sigma }(x_{1})\cdots f_{\mu ,\Sigma }(x_{N}) L(μ,Σ)=fμ,Σ(x1)fμ,Σ(x2)fμ,Σ(x1)⋯fμ,Σ(xN)
μ ∗ , Σ ∗ = a r g m a x μ ∗ , Σ ∗ L ( μ , Σ ) \mu ^{*},\Sigma^{*}=\underset{\mu ^{*},\Sigma^{*}}{argmax}L(\mu ,\Sigma ) μ∗,Σ∗=μ∗,Σ∗argmaxL(μ,Σ)
求解可得:
μ ∗ = 1 N ∑ 1 N x n \mu ^{*}=\frac{1}{N}\sum_{1}^{N}x^{n} μ∗=N11∑Nxn
Σ ∗ = 1 N ∑ 1 N ( x n − μ ∗ ) ( x n − μ ∗ ) T \Sigma^{*}=\frac{1}{N}\sum_{1}^{N}(x^{n}-\mu ^{*})(x^{n}-\mu ^{*})^{T} Σ∗=N11∑N(xn−μ∗)(xn−μ∗)T
三、逻辑回归(判别模型)推导
这里的推导假设 P ( C 1 ) 、 P ( C 2 ) P(C_{1})、P(C_{2}) P(C1)、P(C2)具有同样的方差,且 Σ \Sigma Σ是对角线矩阵(即假设特征之间相互独立),证明如下:
后验概率 P ( C 1 ∣ x ) = P ( x ∣ C 1 ) P ( C 1 ) P ( x ∣ C 1 ) P ( C 1 ) + P ( x ∣ C 2 ) P ( C 2 ) = 1 1 + P ( x ∣ C 2 ) P ( C 2 ) P ( x ∣ C 1 ) P ( C 1 ) P(C_{1}|x)=\frac{P(x|C_{1})P(C_{1})}{P(x|C_{1})P(C_{1})+P(x|C_{2})P(C_{2})}=\frac{1}{1+\frac{P(x|C_{2})P(C_{2})}{P(x|C_{1})P(C_{1})}} P(C1∣x)=P(x∣C1)P(C1)+P(x∣C2)P(C2)P(x∣C1)P(C1)=1+P(x∣C1)P(C1)P(x∣C2)P(C2)1
令 z = l n P ( x ∣ C 2 ) P ( C 2 ) P ( x ∣ C 1 ) P ( C 1 ) 令z=ln\frac{P(x|C_{2})P(C_{2})}{P(x|C_{1})P(C_{1})} 令z=lnP(x∣C1)P(C1)P(x∣C2)P(C2)
⇒ e − z = P ( x ∣ C 1 ) P ( C 1 ) P ( x ∣ C 2 ) P ( C 2 ) \Rightarrow e^{-z}=\frac{P(x|C_{1})P(C_{1})}{P(x|C_{2})P(C_{2})} ⇒e−z=P(x∣C2)P(C2)P(x∣C1)P(C1)
⇒ P ( C 1 ∣ x ) = 1 1 + e − z = σ ( z ) \Rightarrow P(C_{1}|x)=\frac{1}{1+e^{-z}}=\sigma (z) ⇒P(C1∣x)=1+e−z1=σ(z)
σ ( z ) \sigma (z) σ(z)即是sigmoid函数,其图像为:
另外 z = l n P ( x ∣ C 1 ) P ( x ∣ C 2 ) + l n P ( C 1 ) P ( C 2 ) z=ln\frac{P(x|C_{1})}{P(x|C_{2})}+ln\frac{P(C_{1})}{P(C_{2})} z=lnP(x∣C2)P(x∣C1)+lnP(C2)P(C1),其中
l n P ( x ∣ C 1 ) P ( x ∣ C 2 ) = l n 1 ( 2 π ) D / 2 ∣ Σ 1 ∣ 1 / 2 e x p − 1 2 ( x − μ 1 ) T ( Σ 1 ) − 1 ( x − μ 1 ) 1 ( 2 π ) D / 2 ∣ Σ 2 ∣ 1 / 2 e x p − 1 2 ( x − μ 2 ) T ( Σ 2 ) − 1 ( x − μ 2 ) ln\frac{P(x|C_{1})}{P(x|C_{2})}=ln\frac{\frac{1}{(2\pi )^{D/2}|\Sigma ^{1}|^{1/2}}exp^{-\frac{1}{2}(x-\mu ^{1})^{T}(\Sigma^{1}) ^{-1}(x-\mu ^{1})}}{\frac{1}{(2\pi )^{D/2}|\Sigma ^{2}|^{1/2}}exp^{-\frac{1}{2}(x-\mu ^{2})^{T}(\Sigma^{2}) ^{-1}(x-\mu ^{2})}} lnP(x∣C2)P(x∣C1)=ln(2π)D/2∣Σ2∣1/21exp−21(x−μ2)T(Σ2)−1(x−μ2)(2π)D/2∣Σ1∣1/21exp−21(x−μ1)T(Σ1)−1(x−μ1)
= l n ∣ Σ 1 ∣ 1 / 2 ∣ Σ 2 ∣ 1 / 2 e x p − 1 2 ( x − μ 1 ) T ( Σ 1 ) − 1 ( x − μ 1 ) + 1 2 ( x − μ 2 ) T ( Σ 2 ) − 1 ( x − μ 2 ) =ln\frac{|\Sigma ^{1}|^{1/2}}{|\Sigma ^{2}|^{1/2}}exp^{-\frac{1}{2}(x-\mu ^{1})^{T}(\Sigma^{1}) ^{-1}(x-\mu ^{1})+\frac{1}{2}(x-\mu ^{2})^{T}(\Sigma^{2}) ^{-1}(x-\mu ^{2})} =ln∣Σ2∣1/2∣Σ1∣1/2exp−21(x−μ1)T(Σ1)−1(x−μ1)+21(x−μ2)T(Σ2)−1(x−μ2)
= l n ∣ Σ 1 ∣ 1 / 2 ∣ Σ 2 ∣ 1 / 2 − 1 2 [ ( x − μ 1 ) T ( Σ 1 ) − 1 ( x − μ 1 ) − ( x − μ 2 ) T ( Σ 2 ) − 1 ( x − μ 2 ) ] =ln\frac{|\Sigma ^{1}|^{1/2}}{|\Sigma ^{2}|^{1/2}}-\frac{1}{2}[(x-\mu ^{1})^{T}(\Sigma^{1}) ^{-1}(x-\mu ^{1})-(x-\mu ^{2})^{T}(\Sigma^{2}) ^{-1}(x-\mu ^{2})] =ln∣Σ2∣1/2∣Σ1∣1/2−21[(x−μ1)T(Σ1)−1(x−μ1)−(x−μ2)T(Σ2)−1(x−μ2)]
其中
( x − μ 1 ) T ( Σ 1 ) − 1 ( x − μ 1 ) = x T ( Σ 1 ) − 1 x − x T ( Σ 1 ) − 1 μ 1 − ( μ 1 ) T ( Σ 1 ) − 1 x + ( μ 1 ) T ( Σ 1 ) − 1 μ 1 = x T ( Σ 1 ) − 1 x − 2 ( μ 1 ) T ( Σ 1 ) − 1 x + ( μ 1 ) T ( Σ 1 ) − 1 μ 1 (x-\mu ^{1})^{T}(\Sigma^{1})^{-1}(x-\mu ^{1})\\=x^{T}(\Sigma ^{1})^{-1}x{\color{Red} {-x^{T}(\Sigma ^{1})^{-1}\mu ^{1}-(\mu ^{1})^{T}(\Sigma ^{1})^{-1}x}}+(\mu ^{1})^{T}(\Sigma ^{1})^{-1}\mu ^{1}\\=x^{T}(\Sigma ^{1})^{-1}x{\color{Red} {-2(\mu^{1})^{T}(\Sigma ^{1})^{-1}x}}+(\mu ^{1})^{T}(\Sigma ^{1})^{-1}\mu ^{1} (x−μ1)T(Σ1)−1(x−μ1)=xT(Σ1)−1x−xT(Σ1)−1μ1−(μ1)T(Σ1)−1x+(μ1)T(Σ1)−1μ1=xT(Σ1)−1x−2(μ1)T(Σ1)−1x+(μ1)T(Σ1)−1μ1
同理
( x − μ 2 ) T ( Σ 2 ) − 1 ( x − μ 2 ) = x T ( Σ 2 ) − 1 x − 2 ( μ 2 ) T ( Σ 2 ) − 1 x + ( μ 2 ) T ( Σ 2 ) − 1 μ 2 (x-\mu ^{2})^{T}(\Sigma^{2})^{-1}(x-\mu ^{2})=x^{T}(\Sigma ^{2})^{-1}x{\color{Red} {-2(\mu^{2})^{T}(\Sigma ^{2})^{-1}x}}+(\mu ^{2})^{T}(\Sigma ^{2})^{-1}\mu ^{2} (x−μ2)T(Σ2)−1(x−μ2)=xT(Σ2)−1x−2(μ2)T(Σ2)−1x+(μ2)T(Σ2)−1μ2
因为前面假设 Σ 1 = Σ 2 = Σ \Sigma^{1}=\Sigma^{2}=\Sigma Σ1=Σ2=Σ,所以 l n ∣ Σ 1 ∣ 1 / 2 ∣ Σ 2 ∣ 1 / 2 = 0 ln\frac{|\Sigma ^{1}|^{1/2}}{|\Sigma ^{2}|^{1/2}}=0 ln∣Σ2∣1/2∣Σ1∣1/2=0, x T ( Σ 1 ) − 1 x = x T ( Σ 2 ) − 1 x x^{T}(\Sigma ^{1})^{-1}x=x^{T}(\Sigma ^{2})^{-1}x xT(Σ1)−1x=xT(Σ2)−1x则
z = ( μ 1 ) T ( Σ 1 ) − 1 x − 1 2 ( μ 1 ) T ( Σ 1 ) − 1 μ 1 − ( μ 2 ) T ( Σ 2 ) − 1 x + 1 2 ( μ 2 ) T ( Σ 2 ) − 1 μ 2 + l n P ( C 1 ) P ( C 2 ) z=(\mu^{1})^{T}(\Sigma ^{1})^{-1}x-\frac{1}{2}(\mu ^{1})^{T}(\Sigma ^{1})^{-1}\mu ^{1}-(\mu^{2})^{T}(\Sigma ^{2})^{-1}x+\frac{1}{2}(\mu ^{2})^{T}(\Sigma ^{2})^{-1}\mu ^{2}+ln\frac{P(C^{1})}{P(C^{2})} z=(μ1)T(Σ1)−1x−21(μ1)T(Σ1)−1μ1−(μ2)T(Σ2)−1x+21(μ2)T(Σ2)−1μ2+lnP(C2)P(C1)
= ( μ 1 − μ 2 ) T Σ − 1 ⏟ w x − 1 2 ( μ 1 ) T Σ − 1 μ 1 + 1 2 ( μ 2 ) T Σ − 1 μ 2 + l n P ( C 1 ) P ( C 2 ) ⏟ b =\underset{w}{\underbrace{(\mu ^{1}-\mu ^{2})^{T}\Sigma ^{-1}}}x\underset{b}{\underbrace{-\frac{1}{2}(\mu ^{1})^{T}\Sigma ^{-1}\mu ^{1}+\frac{1}{2}(\mu ^{2})^{T}\Sigma ^{-1}\mu ^{2}+ln\frac{P(C_{1})}{P(C_{2})}}} =w (μ1−μ2)TΣ−1xb −21(μ1)TΣ−1μ1+21(μ2)TΣ−1μ2+lnP(C2)P(C1)
则 P ( C 1 ∣ x ) = σ ( w x + b ) P(C_{1}|x)=\sigma (wx+b) P(C1∣x)=σ(wx+b)
在使用生成模型时需要估计 μ 1 、 μ 2 、 Σ \mu_{1}、\mu_{2}、\Sigma μ1、μ2、Σ,现在可以直接估计 w w w和 b b b。
四、逻辑回归的损失函数
- 交叉熵损失函数
令 f w , b ( x ) = σ ( w x + b ) f_{w,b}(x)=\sigma (wx+b) fw,b(x)=σ(wx+b),则逻辑回归的损失函数(即似然)为:
L ( w , b ) = f w , b ( x 1 ) f w , b ( x 2 ) ( 1 − f w , b ( x 3 ) ) ⋯ f w , b ( x N ) L (w,b)=f_{w,b}(x^{1})f_{w,b}(x^{2})(1-f_{w,b}(x^{3}))\cdots f_{w,b}(x^{N}) L(w,b)=fw,b(x1)fw,b(x2)(1−fw,b(x3))⋯fw,b(xN)
w ∗ , b ∗ = a r g m a x w , b L ( w , b ) = a r g m i n w , b ( − l n L ( w , b ) ) w^{*},b^{*}=\underset{w,b}{argmax}L (w,b)=\underset{w,b}{argmin}(-lnL (w,b)) w∗,b∗=w,bargmaxL(w,b)=w,bargmin(−lnL(w,b))
上式中
l n L ( w , b ) = − [ y ^ 1 l n f ( x 1 ) + ( 1 − y ^ 1 ) l n ( 1 − f ( x 1 ) ) ] − [ y ^ 2 l n f ( x 2 ) + ( 1 − y ^ 2 ) l n ( 1 − f ( x 2 ) ) ] − [ y ^ 3 l n f ( x 3 ) + ( 1 − y ^ 3 ) l n ( 1 − f ( x 3 ) ) ] ⋯ = ∑ − [ y ^ n l n f ( x n ) + ( 1 − y ^ n ) l n ( 1 − f ( x n ) ) ] lnL (w,b)\\=-[\hat{y}^{1}lnf(x^{1})+(1-\hat{y}^{1})ln(1-f(x^{1}))]\\-[\hat{y}^{2}lnf(x^{2})+(1-\hat{y}^{2})ln(1-f(x^{2}))]\\-[\hat{y}^{3}lnf(x^{3})+(1-\hat{y}^{3})ln(1-f(x^{3}))]\\\cdots \\=\sum-[\hat{y}^{n}lnf(x^{n})+(1-\hat{y}^{n})ln(1-f(x^{n}))] lnL(w,b)=−[y^1lnf(x1)+(1−y^1)ln(1−f(x1))]−[y^2lnf(x2)+(1−y^2)ln(1−f(x2))]−[y^3lnf(x3)+(1−y^3)ln(1−f(x3))]⋯=∑−[y^nlnf(xn)+(1−y^n)ln(1−f(xn))]
上式即为交叉熵损失函数:
H ( p , q ) = − ∑ x p ( x ) l n q ( x ) H(p,q)=-\sum_{x}p(x)lnq(x) H(p,q)=−x∑p(x)lnq(x)
接下来对参数进行求导:
∂ − L n f ( w , b ) ∂ w i = ∑ − [ y ^ n ∂ l n f ( x n ) ∂ w i + ( 1 − y ^ n ) ∂ l n ( 1 − f ( x n ) ) ) ∂ w i ] \frac{\partial -Lnf(w,b)}{\partial w_{i}}=\sum-[\hat{y}^{n}\frac{\partial lnf(x^{n})}{\partial w_{i}}+(1-\hat{y}^{n})\frac{\partial ln(1-f(x^{n})))}{\partial w_{i}}] ∂wi∂−Lnf(w,b)=∑−[y^n∂wi∂lnf(xn)+(1−y^n)∂wi∂ln(1−f(xn)))]
∂ l n f ( x n ) ∂ w i = ∂ l n f ( x n ) ∂ z ∂ z ∂ w i = ∂ l n σ ( z ) ∂ z ∂ z ∂ w i = 1 σ ( z ) σ ( z ) ( 1 − σ ( z ) ) ∂ z ∂ w i ( 注 意 : ∂ σ ( z ) ∂ z = σ ( z ) ( 1 − σ ( z ) ) , s i g m o i d 函 数 的 导 数 ) \frac{\partial lnf(x^{n})}{\partial w_{i}}=\frac{\partial lnf(x^{n})}{\partial z}\frac{\partial z}{\partial w_{i}}=\frac{\partial ln\sigma (z)}{\partial z}\frac{\partial z}{\partial w_{i}}=\frac{1}{\sigma (z)}\sigma (z)(1-\sigma (z))\frac{\partial z}{\partial w_{i}}\\(注意:\frac{\partial \sigma (z)}{\partial z}=\sigma (z)(1-\sigma (z)),sigmoid函数的导数) ∂wi∂lnf(xn)=∂z∂lnf(xn)∂wi∂z=∂z∂lnσ(z)∂wi∂z=σ(z)1σ(z)(1−σ(z))∂wi∂z(注意:∂z∂σ(z)=σ(z)(1−σ(z)),sigmoid函数的导数)
∂ l n ( 1 − f w , b ( x n ) ) ∂ w i = − 1 1 − σ ( z ) ( 1 − σ ( z ) ) σ ( z ) x i = − σ ( z ) x i \frac{\partial ln(1-f_{w,b}(x^{n}))}{\partial w_{i}}=\frac{-1}{1-\sigma (z)}(1-\sigma (z))\sigma (z)x_{i}=-\sigma (z)x_{i} ∂wi∂ln(1−fw,b(xn))=1−σ(z)−1(1−σ(z))σ(z)xi=−σ(z)xi
所以 − ∂ l n L ( w , b ) ∂ w i = ∑ − [ y ^ n ( 1 − f w , b ( x n ) ) x i n − ( 1 − y ^ n ) f w , b ( x n ) x i n ] = ∑ − ( y ^ n − f w , b ( x n ) ) x i n -\frac{\partial lnL(w,b)}{\partial w_{i}}=\sum-[\hat{y}^{n}(1-f_{w,b}(x^{n}))x_{i}^{n}-(1-\hat{y}^{n})f_{w,b}(x^{n})x_{i}^{n}]=\sum-(\hat{y}^{n}-f_{w,b}(x^{n}))x_{i}^{n} −∂wi∂lnL(w,b)=∑−[y^n(1−fw,b(xn))xin−(1−y^n)fw,b(xn)xin]=∑−(y^n−fw,b(xn))xin
更新梯度
w i ← w i − η ∑ − ( y ^ n − f w , b ( x n ) ) x i n ( 这 表 明 当 使 用 交 叉 熵 作 为 损 失 函 数 是 , 如 果 预 测 值 与 实 际 值 有 较 大 的 差 距 时 会 产 生 较 大 的 梯 度 更 新 。 ) w_{i}\leftarrow w_{i}-\eta \sum-(\hat{y}^{n}-f_{w,b}(x^{n}))x_{i}^{n}\\(这表明当使用交叉熵作为损失函数是,如果预测值与实际值有较大的差距时会产生较大的梯度更新。) wi←wi−η∑−(y^n−fw,b(xn))xin(这表明当使用交叉熵作为损失函数是,如果预测值与实际值有较大的差距时会产生较大的梯度更新。)
- 均方误差损失函数
L ( w , b ) = 1 2 ∑ ( f w , b ( x ) − y ^ n ) 2 L (w,b)=\frac{1}{2}\sum (f_{w,b}(x)-\hat{y}^{n})^{2} L(w,b)=21∑(fw,b(x)−y^n)2
接下来对参数进行求导:
∂ ( f w , b ( x ) − y ^ n ) 2 ∂ w i = 2 ( f w , b ( x ) − y ^ n ) ∂ f w , b ( x ) ∂ z ∂ z ∂ w i = 2 ( f w , b ( x ) − y ^ n ) f w , b ( x ) ( 1 − f w , b ( x ) ) x i \frac{\partial (f_{w,b}(x)-\hat{y}^{n})^{2}}{\partial w_{i}}=2(f_{w,b}(x)-\hat{y}^{n})\frac{\partial f_{w,b}(x)}{\partial z}\frac{\partial z}{\partial w_{i}}=2(f_{w,b}(x)-\hat{y}^{n}){\color{Red} {f_{w,b}(x)(1-f_{w,b}(x))}}x_{i} ∂wi∂(fw,b(x)−y^n)2=2(fw,b(x)−y^n)∂z∂fw,b(x)∂wi∂z=2(fw,b(x)−y^n)fw,b(x)(1−fw,b(x))xi
由于上式红色部分的存在会导致当 f w , b ( x ) = 0 f_{w,b}(x)=0 fw,b(x)=0时 ∂ L ∂ w i = 0 \frac{\partial L}{\partial w_{i}}=0 ∂wi∂L=0,而当 f w , b ( x ) = 1 f_{w,b}(x)=1 fw,b(x)=1时也有 ∂ L ∂ w i = 0 \frac{\partial L}{\partial w_{i}}=0 ∂wi∂L=0。
交叉熵与均方误差的图像如下:
- 总结
关于为什么使用交叉熵而不使用均方误差,总结如下:
- 神经网络中如果预测值与实际值的误差越大,那么在反向传播训练的过程中,各种参数调整的幅度就要更大,从而使训练更快收敛,如果预测值与实际值的误差小,各种参数调整的幅度就要小,从而减少震荡。
- 使用平方误差损失函数,误差增大参数的梯度会增大,但是当误差很大时,参数的梯度就会又减小了。
- 使用交叉熵损失是函数,误差越大参数的梯度也越大,能够快速收敛。
五、判别模型 vs 生成模型
P ( C 1 ∣ x ) = σ ( w x + b ) P(C_{1}|x)=\sigma (wx+b) P(C1∣x)=σ(wx+b)
判别模型会直接估计
w
,
b
w,b
w,b。
生成模型会估计
μ
1
、
μ
2
、
Σ
\mu_{1}、\mu_{2}、\Sigma
μ1、μ2、Σ,其中
w T = ( μ 1 − μ 2 ) Σ − 1 , b = − 1 2 ( μ 1 ) T Σ − 1 μ 1 + 1 2 ( μ 2 ) T Σ − 1 μ 2 + l n P ( C 1 ) P ( C 2 ) w^{T}=(\mu ^{1}-\mu ^{2})\Sigma ^{-1},b=-\frac{1}{2}(\mu ^{1})^{T}\Sigma ^{-1}\mu ^{1}+\frac{1}{2}(\mu ^{2})^{T}\Sigma ^{-1}\mu ^{2}+ln\frac{P(C_{1})}{P(C_{2})} wT=(μ1−μ2)Σ−1,b=−21(μ1)TΣ−1μ1+21(μ2)TΣ−1μ2+lnP(C2)P(C1)
一般情况下两种 w 和 b w和b w和b不一定相同。
生成模型的优点:
- 因为生成模型有一个先验的假设,所以需要更少的训练数据,而且对噪声有更高的鲁棒性。
- 先验分布和类别依赖的概率分布可以从不同的来源估计。