第6章 反向传播-交叉熵

神经网络与机器学习

第6章 反向传播-多层前馈神经网络训练

§6.4 目标函数的选择

上一节详细推导了反向传播算法,并举了两个例子。我们再来回顾一下当取目标函数为均方误差的时候,反向传播敏感度

后向传播

可见敏感度输出层的激活函数导数和误差乘积,特别地分类问题中经常用到的sigmoid函数

sigmoid函数与其导数

这里出现了问题,比如,当输出接近0.9526,而实际标签分类为0,那么误差非常大0.9526-0=0.9526,错误很大,但是,所以此时的敏感度非常小,代入权系数的更新公式中,当给定学习率时,权改变量也小。

这不符合人类学习特点,犯了明显的错误的时候应该学习快、改变大!因此均方误差碰到sigmoid函数时会出现学习缓慢现象,需要改进。

我们看交叉熵函数

求对于输出层的权系数梯度

可以看出输出层的梯度恰好消去了,这样当输出接近0.9526,而实际标签分类为0时,那么大的误差0.9526-0=0.9526将很好地反映到权改变量中,因此学习速度加快。

 

§6.5交叉熵为何称为熵

信息论发展是得益于Nyquist(1924)Hartley1928),Winer1940),Shannon1948),Foinstein1954),Kalman1960),Kailath1970

参考文献

周萌清,《信息理论基础》,北京航空航天出版社,2010

T CoverJ A Thomas Elements of Information Theory, John Wile & Sons Inc, 2006

信息论是利用数理统计方法研究信息的传输、存储、处理的有关通信的数学理论。物质、能量和信息是客观世界的三个要素,信息是物质和能量的在时空的表征,描述其分布的不均匀程度。消息是信息的载体,信号是消息的表现形式。信息的统计度量:统计分析中概率是基本指标,信息的统计度量也是和概率联系在一起的。

事件的自信息和条件自信息

自信息事件的概率,则其自信息定义为

表明概率小的事件包含信息量大。

联合自信息 二维联合事件()的联合概率,其联合自信息

条件自信息 事件给定下的条件概率,其条件自信息

两个事件的互信息

对于信息流,当接收到事件之后,重新估价给出关于事件的概率,则需要估计条件概率,其信息量为互信息

=

代表了不确定程度的减小,即自信息减去条件自信息

性质1)互易性

证明:由联合概率 那么有,两边取对数即可证。

性质2)互信息正负都有可能,取决于后验概率的大小。

性质3)互信息不等式

证明:由于,那么,那么

性质4)互信息链式法则

给定变量的条件下,事件的互信息为条件互信息

-平均自信息

自信息量是指消息符号含有的信息量,不能衡量信源的总体信息量,

那么集合的中事件出现的平均不确定性,虽然概率小的事件自信息大,但是发生概率小,二者相乘,整个样本的加和成为平均自信息

又称为信息熵,因为与热力学中的熵表示相似。

----------------------------------------------------------------------------------------------

凸函数定义函数,,对于任意,那么如果

则函数在区间内是(下)凸的。从一元函数图像可知,就是两点之间函数值总是在弦的下方。如

凸函数的判定定理:如果函数在某个区间存在非负二阶导数,那么函数在此区间是凸函数。

证明:函数在点处展开到二阶

已知,设,则得到

那么

故,函数为凸的。

Jensen不等式:给定凸函数和随机变量,那么

当不等式取等号时,,表示是个常向量。

证明:我们只证明离散分布情况,如果两点分布,那么就符合前面的凸函数定义,有,,那么

假设离散分布点k-1个成立,那么归纳法,设

因此离散随机变量分布是成立的,可以推广到连续随机变量。

对数和不等式 对于非负数,有不等式

证明:利用函数的凸性质,这里,设,利用Jensen不等式,那么

两边去掉相同的项,得到对数和不等式。

引理: 对于任意实数,有

证明,由于,因此极值是x=1所以是凹函数,

代入,可以得到

熵的性质:

1):非负性,仅对于离散信源成立。连续信源不成立。

2):极值性和最大熵定理

引理: ,这里。任意集合任意概率分布,该分布对于其他分布的自信息取期望,必不小于其熵。利用可以得到

最大熵定理:等概率场的熵最大。

证明:由于上面证明取等号时时取极值,那么设就是极值。设样本概率集合,且满足,为了使得熵最大,那么构造拉格朗日函数

求导数

因此等概率分布熵最大。

3):对称性:信息熵仅仅与统计特性有关,与具体的内部结构无关,比如

具有相同的熵。

 

联合熵联合概率分布上,每对元素()的联合概率期望平均值为联合熵

条件熵联合概率分布上,条件自信息的期望平均值为条件熵

这里是按照联合概率求的期望,这是因为

但是给不同的,上式是不同的,随机变量,那么再次对X空间上求均值即

条件熵:

相对熵:两个随机分布的距离度量。两个概率密度函数之间的相对熵或Kullback-Leibler距离定义为

交叉熵:在机器学习中二分类或多分类问题中,比如两类标记为t=0t=1,我们可以看成两点分布,神经网络输出为0-1之间,我们也赋予概率分布,那么交叉熵定义为

当它作为损失函数的时候,考虑多个样本的交叉熵则为

交叉熵与相对熵关系:

可见交叉熵就是相对熵和真实分布p的熵的和,由于代表了神经网络的输出,所以如果对于交叉熵求梯度,是已知量,有训练数据标签决定的,所以求梯度就是对相对熵求梯度。

相对熵的非负性:利用前面对数和不等式

定理:相对熵是凸函数,而熵是凹函数。

证明:对于两对概率密度,任意

对数和不等式

因此按照定义相对熵是凸函数。

,那么,所以

是凹函数。

§6.5神经网络分类问题中交叉熵与均方误差对比

这里比较均方误差和交叉熵解决一个XOR(异或)问题,线性不可分,数据为

{0,0,1,0}, {0,1,1,1} {1,0,1,1}, {1,1,1,0}

前面为输入,最后为标签,可以表示为

我们设计的网络是3的网络,激活函数为sigmoid

function y = Sigmoid(x)

y = 1 ./ (1 + exp(-x));

end

 

训练时采用均方误差函数的BP算法BackpropXOR.m

function [W1, W2] = BackpropXOR(W1, W2, X, D)

alpha = 0.9;

 

N = 4;

for k = 1:N

x = X(k, :)';%输入

d = D(k);%标签

%前向过程

v1 = W1*x;

y1 = Sigmoid(v1);

v = W2*y1;

y = Sigmoid(v);

%后向传播过程

e = d - y;

delta = y.*(1-y).*e;

e1 = W2'*delta;

delta1 = y1.*(1-y1).*e1;

%更新

dW2 = alpha*delta*y1';

W2 = W2 + dW2;

dW1 = alpha*delta1*x';

W1 = W1 + dW1;

end

end

 

采用交叉熵的BP算法BackpropCE.m

function [W1, W2] = BackpropCE(W1, W2, X, D)

alpha = 0.9;

 

N = 4;

for k = 1:N

x = X(k, :)'; % x = a column vector

d = D(k);

%前向

v1 = W1*x;

y1 = Sigmoid(v1);

v = W2*y1;

y = Sigmoid(v);

%后向

e = d - y;

delta = e;

e1 = W2'*delta;

delta1 = y1.*(1-y1).*e1;

%更新

dW2 = alpha*delta*y1';

W2 = W2 + dW2;

dW1 = alpha*delta1*x';

W1 = W1 + dW1;

 

end

end

 

我们比较的时候,选择上述训练方式,但是画同样的误差函数,程序如下

 

clear all

 

X = [ 0 0 1;

0 1 1;

1 0 1;

1 1 1];

 

D = [ 0

0

1

1];

 

E1 = zeros(500, 1);

E2 = zeros(500, 1);

 

W11 = 2*rand(4, 3) - 1; % Cross entropy

W12 = 2*rand(1, 4) - 1; %

W21 = W11; % Sum of squared error

W22 = W12; %

 

for epoch = 1:500

[W11 W12] = BackpropCE(W11, W12, X, D);

[W21 W22] = BackpropXOR(W21, W22, X, D);

 

es1 = 0;

es2 = 0;

N = 4;

for k = 1:N

x = X(k, :)';

d = D(k);

 

v1 = W11*x;

y1 = Sigmoid(v1);

v = W12*y1;

y = Sigmoid(v);

es1 = es1 + (d - y)^2;

 

v1 = W21*x;

y1 = Sigmoid(v1);

v = W22*y1;

y = Sigmoid(v);

es2 = es2 + (d - y)^2;

end

E1(epoch) = es1 / N;

E2(epoch) = es2 / N;

end

 

plot(E1, 'r')

hold on

plot(E2, 'b:')

 

 

测试

clear all

 

X = [ 0 0 1;

0 1 1;

1 0 1;

1 1 1;

];

 

D = [ 0

1

1

0

];

 

W1 = 2*rand(4, 3) - 1;

W2 = 2*rand(1, 4) - 1;

 

for epoch = 1:500 % train

[W1 W2] = BackpropCE(W1, W2, X, D);

end

 

N = 4; % inference

for k = 1:N

x = X(k, :)';

v1 = W1*x;

y1 = Sigmoid(v1);

v = W2*y1;

y = Sigmoid(v)

end

 

 

(选讲)各种熵的关系以及性质

联合熵=自熵+条件熵:利用,并注意,代入

条件熵的不等式:条件作用使熵减小。

证明为凹函数,设u=

依据Jensen不等式,有

联合熵独立界利用链式法则

即可

联合熵的不等式

 

平均互信息 average mutual information

是一个随机变量包含另外一个随机变量的信息量的度量,或者给定另外一个随机变量下,原来随机变量的不确定性减少量。

我们前面已经知道当接收到事件之后,重新估价给出关于事件的概率,则需要估计条件概率,其信息量为互信息

=

代表了不确定程度的减小,即自信息减去条件自信息。

平均条件互信息: 为由提供的关于集合X的信息量

性质:,当且仅当xy独立时等号成立。

平均互信息定义:对于平均条件互信息在整个Y集合上求平均。

又可以看成联合分布对于分布乘积的相对熵。

性质1:非负性,由于相对熵非负

性质2:互易性

性质3:极值性

,因为

性质4:互信息的链式法则,利用条件熵的链式法则

性质5:设(X,Y)的联合分布为,如果固定条件概率,那么,是的凹函数,固定,互信息是的凸函数。

平均互信息和熵:

关系图

解释:条件熵表示已知输出Y的条件下,输入X的剩余不确定性,即信道损失。那么互信息反映了信道传输信息的能力,最大互信息就是信道容量

微分熵(连续变量的熵)

我们将连续随机变量的概率密度进行离散化,设区间划分长度为,那么处于此区间的概率为

且有,那么量化之后的变量的熵为

当区间长度时,定义微分熵

后面一项省略掉了,无限大。

 

例子:上均匀分布,其微分熵为,可以看出,由于的取值,使得有时取负,这与离散变量的熵不同,但是熵功率,有时又称为支撑集合的体积,非负的。

联合熵:

条件熵:

互信息:

数值模拟的互信息计算,主要就是依据公式

posted @ 2021-03-30 22:53  bingoloser  阅读(1226)  评论(0)    收藏  举报