为什么交叉熵损失函数可以用作逻辑回归的损失函数?

什么是熵(entropy)?

熵是一种度量,可以用熵的大小度量信息的混乱程度,或者是信息的不确定性。熵越大,信息的不确定性越大。同样,熵也可以用来衡量变量的不确定性。

熵也可以衡量一件事的信息量的大小,因为一件事确定性越大,那它的信息量就越小;反之,一件事不确定性越大它得信息量就越大。比如,“中国乒乓球队再次得了世界冠军”,这件事确定性很大,所以包含的信息量就很小,甚至信息量接近0(等于没说一样);“2020年疫情会复发”,这件事信息量就很大,因为不确定性很大。所以熵也可以用来衡量信息量的大小,熵越大信息量越大,熵越小信息量越小。

相互独立的两件事信息量是叠加的,因此熵也是叠加的。“今天中国排球队夺冠”,“今天中国乒乓球队夺冠”,这两件事的信息量就是叠加的,熵自然也是叠加的。

假设一个随机变量X有n个取值,x取每个值的情况自然是相互独立的,所以x熵就是将各个取值的熵叠加起来。

熵的定义

假设随机变量X的概率分布是:

P(X=x_i)=p_i, i=1,2,3...,n

那么随机变量X的熵定义为:

H(X)=-\sum _{i-1}^{n}p_i logp_i(通常取以2为底(bit)或者是以e为底(nat))

如果一件事一定不会发生,p=0,定义0*log0=0;同时,当一个事一定会发生的时候,p=1,1*log(1)=0,这就说明了为什么一件事确定性越大越大,熵就越小。

什么是KL散度(相对熵,Relative entropy)?

KL散度也叫做相对熵,熵是用来衡量自己的信息量,相对熵就是两件事之间一件事与另一件事相比有多少不同。

相对熵的公式如下:

D_{KL}(p||q)=\sum _{i=1}^N[p(x_i)(\log p(x_i)-\log q(x_i))]

可以写成这样的形式:

D_{KL}(p||q)=\sum _{i=1}^Np(x_i)\log p(x_i)-\sum _{i=1}^Np(x_i)\log q(x_i)

\sum _{i=1}^Np(x_i)\log p(x_i)这个部分就是上面的熵的相反数定义,\sum _{i=1}^Np(x_i)\log q(x_i)这个部分(与后面交叉熵有关)可以理解为在p分布的视角下,q分布的熵的大小的相反数,两者做差就是两个分布相比有多少不同。

然后我们再想一下二分类和多分类的逻辑回归,也就是sigmoid和softmax,两者都是输出一个归一化的概率分布,因此我们就可以用kl散度来度量逻辑回归的输出的分布和真实的分布之间的差距。

什么是交叉熵( Cross Entropy)?

交叉熵就可以理解为,两个分布,从一个分布去看另一个分布的熵的大小,公式定义如下:

H(p,q)=-\sum _{i=1}^Np(x_i)\log q(x_i)

对比一下熵、相对熵、交叉熵的公式可以发现:

H(X)=-\sum _{i-1}^{n}p_i logp_i

D_{KL}(p||q)=\sum _{i=1}^Np(x_i)\log p(x_i)-\sum _{i=1}^Np(x_i)\log q(x_i)

H(p,q)=-\sum _{i=1}^Np(x_i)\log q(x_i)

可以发现相对熵就等于交叉熵减去熵:

D_{KL}(p||q)=H(p,q)-H(p)

而上面提到了相对熵可以用来衡量逻辑回归的结果与真实结果之间的差距,也就是可以用作逻辑回归的损失函数,而H(p)作为真实的结果的熵,大小恒定是个常数,所以在对KL散度最小化的时候,只需要对交叉熵最小化就可以了,这就是交叉熵损失函数。

你可能感兴趣的:(历程,机器学习算法,逻辑回归,交叉熵,机器学习,信息熵,KL散度)