模式识别系列(三)logistic回归

目录

  • 1.logistic回归问题
  • 2.logistic回归损失函数
    • 2.1信息熵,KL散度简介
    • 2.2交叉熵损失函数
    • 2.3损失函数对比
  • 3.logistic回归算法

1.logistic回归问题

  logistic回归可以说是神经网络模型重要的基元,sigmoid函数在神经网络模型中是常用的一种激活函数。logistic回归起源于概率,我们在日常生活中下判断的时候,说这事儿有八成机会,就是80%的可能性。学过概率论都知道,概率被划到了0-1这个区间,0表示不可能发生,1表示必然发生。在上一篇的线性回归中,就很难表示这样的概率。在面对二分类的问题时,线性回归固然可以设定一个阈值来输出结果,但是我们并不能得出到底有多大的把握是这个结果。logistic回归就不一样了,它采用的sigmoid函数具有很好的性质,将一个实数映射到0-1的区间,并且为单调增函数,在0点的函数值为0.5,这就给出了一个概率模型,自然而然,当没有信息的时候概率就是0.5。sigmoid函数的具体形式是这样的:
θ ( x ) = 1 1 + e − x \theta(x) = \frac{1}{1+e^{-x}} θ(x)=1+ex1
用图形直观表示就是这样的模式识别系列(三)logistic回归_第1张图片它的导数是:
∂ θ ∂ x = θ ( x ) ⋅ ( 1 − θ ( x ) ) \frac{\partial\theta}{\partial {x}} = \theta (x) \cdot(1 - \theta(x)) xθ=θ(x)(1θ(x))
  结合之前PLA中的判别函数,那么logistic回归的判别函数就可以写成:
h ( x ) = θ ( w T x ) h(x) = \theta(w^Tx) h(x)=θ(wTx)

2.logistic回归损失函数

  上一节我们定义了logistic回归的函数,这一节,我们将来研究损失函数,因为损失函数决定了优化方向,一个好的损失函数才能获得一个好的结果。

2.1信息熵,KL散度简介

  信息熵是信息量的度量,要明白什么是信息熵,就得明白什么是信息量。信息量可以说是消除不确定性的多少,举个例子,如果天气预报说95%下雨,3%阴天,2%晴天,但是最后的结果是没有下雨, 这个信息它所带来的的信息量就非常大,因为消除了很大一部分的不确定性,又比如说太阳从东边出来,这是一个必然事件,因此这句话本身不携带任何信息,就没有信息量。香农在定义信息量的时候给出了几条性质:

  1. 单调性。一个事件发生的概率越高,那么它发生的这条信息所携带的信息量就越小
  2. 非负性。 也很直观,从系统里获得的信息不可能让系统更加不确定。
  3. 可加性。独立随机事件之间的不确定度是可以叠加的

因此, 香农给出了一个合理的公式来计算这种信息量:
− l o g ( p ( x ) ) -log(p(x)) log(p(x))
满足以上所有性质。而信息熵针对的不是某一个事件,而是一个系统,衡量的是一个系统的不确定度。这句话是什么意思呢?就是一个系统有 n n n个事件,各自的概率为 p i p_i pi,那么这个系统就可以表示为 H ( p ( x 1 ) , p ( x 2 ) , . . . , p ( x n ) ) H(p(x_1),p(x_2),...,p(x_n)) Hp(x1),p(x2),...,p(xn),那么系统的信息量的期望,也就是所谓的信息熵,就可以写成:
− ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) -\sum_{i=1}^np(x_i)log(p(x_i)) i=1np(xi)log(p(xi))
它的含义是系统的不确定性的大小,也是消除系统不确定性所需的信息量的大小。之所以谈信息熵,是因为在logistic回归中所使用的损失函数,也就是交叉熵损失函数,与信息熵有着非常相近的形式。

2.2交叉熵损失函数

  那么什么是交叉熵呢?交叉熵的形式与信息熵类似,但是交叉熵可以说是从 H ( p ) H(p) H(p),变成了 H ( p , q ) H(p,q) H(p,q),它实际上是两个分布的联合信息熵。参考上节信息熵的定义,交叉熵即为已知真实分布的情况下,使用模拟分布时不确定度的大小,也就是消除不确定度所需的信息量的大小。交叉熵的形式是这样的:
− ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) -\sum_{i=1}^np(x_i)log(q(x_i)) i=1np(xi)log(q(xi))
由于问题是一个二分类问题,因此,令 p ( x ) p(x) p(x)为真实的 y y y,而 q ( x ) q(x) q(x)为给出的预测 y ^ \hat{y} y^,那么损失函数就变成了:
− ∑ i = 1 n y n l o g ( h ( x n ) ) + ( 1 − y n ) l o g ( 1 − h ( x n ) ) -\sum_{i=1}^ny_nlog(h(x_n)) + (1-y_n)log(1-h(x_n)) i=1nynlog(h(xn))+(1yn)log(1h(xn))
y n y_n yn只有0和1两种取值,因此,上式衡量了预测与标签之间的相似程度。在实际应用中,为了方便求导,往往采用 l n ln ln而非2为底的对数。另外,如果只统计正样本的损失,那么后面一项可以舍去,即变成:
− ∑ i = 1 n l n ( h ( x n ) ) = ∑ i = 1 n l n ( 1 + e − w T x ) -\sum_{i=1}^nln(h(x_n)) = \sum_{i=1}^nln(1+e^{-w^Tx}) i=1nln(h(xn))=i=1nln(1+ewTx)

2.3损失函数对比

  前面引入了交叉熵的定义,却没有解决根本的问题:到底为什么要用它呢?平方误差为什么不合适呢?接下来,我们可以对比以下二者:
C E : − ∑ i = 1 n y n l n ( h ( x n ) ) + ( 1 − y n ) l n ( 1 − h ( x n ) ) S E : − ∑ i = 1 n ( h ( x n ) − y n ) 2 \begin{aligned} &CE:-\sum_{i=1}^ny_nln(h(x_n)) + (1-y_n)ln(1-h(x_n)) \\ &SE:-\sum_{i=1}^n(h(x_n) - y_n)^2 \end{aligned} CE:i=1nynln(h(xn))+(1yn)ln(1h(xn))SE:i=1n(h(xn)yn)2
CE表示交叉熵损失,而SE表示均方误差损失, h ( x n ) = θ ( w T x ) h(x_n) = \theta(w^Tx) h(xn)=θ(wTx),我们对两个损失函数分别求导,首先是CE:
∂ C E ∂ w = − ( y ⋅ 1 θ ( w T x ) − ( 1 − y n ) 1 1 − θ ( w T x ) ) ∂ θ ∂ w = − ( y ⋅ 1 θ ( w T x ) − ( 1 − y n ) 1 1 − θ ( w T x ) ) θ ( w T x ) ( 1 − θ ( w T x ) ) ∂ w T x ∂ w = − ( y ⋅ 1 θ ( w T x ) − ( 1 − y n ) 1 1 − θ ( w T x ) ) θ ( w T x ) ( 1 − θ ( w T x ) ) x = − ( y ( 1 − θ ( w T x ) ) − ( 1 − y ) θ ( w T x ) ) x = ( h ( x ) − y ) x \begin{aligned} \frac{\partial{CE}}{\partial {w}}& =-(y\cdot\frac{1}{\theta(w^Tx)}-(1-y_n)\frac{1}{1-\theta(w^Tx)} )\frac{\partial\theta}{\partial {w}}\\ &=-(y\cdot\frac{1}{\theta(w^Tx)}-(1-y_n)\frac{1}{1-\theta(w^Tx)} )\theta(w^Tx)(1-\theta(w^Tx))\frac{\partial {w^Tx}}{\partial {w}}\\ &=-(y\cdot\frac{1}{\theta(w^Tx)}-(1-y_n)\frac{1}{1-\theta(w^Tx)} )\theta(w^Tx)(1-\theta(w^Tx))x\\ &=-(y(1-\theta(w^{T} x))-(1-y) \theta(w^{T} x)) x\\ &=(h(x) - y)x \end{aligned} wCE=(yθ(wTx)1(1yn)1θ(wTx)1)wθ=(yθ(wTx)1(1yn)1θ(wTx)1)θ(wTx)(1θ(wTx))wwTx=(yθ(wTx)1(1yn)1θ(wTx)1)θ(wTx)(1θ(wTx))x=(y(1θ(wTx))(1y)θ(wTx))x=(h(x)y)x
接着是SE:
∂ S E ∂ w = − 2 ( h ( x ) − y ) ∂ θ ∂ w = − 2 ( h ( x ) − y ) θ ( w T x ) ( 1 − θ ( w T x ) ) x = − 2 ( h ( x ) − y ) h ( x ) ( 1 − h ( x ) ) x \begin{aligned} \frac{\partial{SE}}{\partial {w}}& =-2(h(x) - y )\frac{\partial\theta}{\partial {w}}\\ &=-2(h(x) - y )\theta(w^Tx)(1-\theta(w^Tx))x\\ &=-2(h(x)-y)h(x)(1-h(x)) x\\ \end{aligned} wSE=2(h(x)y)wθ=2(h(x)y)θ(wTx)(1θ(wTx))x=2(h(x)y)h(x)(1h(x))x
区别就在于均方误差的求导结果会出现一个 h ( x ) ( 1 − h ( x ) ) h(x)(1-h(x)) h(x)(1h(x))乘机项,我们可以想象,当 w T x w^Tx wTx很大的时候,由 θ \theta θ函数的性质知道h(x)趋向于1,此时 1 − h ( x ) = 0 1-h(x)=0 1h(x)=0梯度会消失。相反的,当 w T x w^Tx wTx很小的时候, h ( x ) = 0 h(x)=0 h(x)=0梯度同样会消失。但是CE不一样,当h(x)接近y的时候梯度小,反之,当h(x)与y差异大的时候梯度就大,从而保证了梯度的稳定性,避免了梯度消失的问题。用图形表示就是如下:
模式识别系列(三)logistic回归_第2张图片交叉熵误差避免了梯度消失的情况出现。所以我们在分类问题中进行了sigmoid变换后,选择交叉熵损失作为损失函数而非平方误差。

3.logistic回归算法

  logistic由于是非线性的,因此没有办法得出解析解,因此可以采用梯度下降法、SGD、或者mini-batch(见上一篇)的方法进行优化。这里采用梯度下降法,计算流程如下:

1.令X为ND维的矩阵,N表示样本个数,D为特征维度,Y为N1标签向量
2.计算X^T*(h(X)-Y),记为E
3. Wt+1=Wt - a * E
4.如此反复循环

你可能感兴趣的:(信息熵,机器学习,人工智能)