熵,交叉熵和损失函数,在机器学习中,这些概念容易让人迷糊,基于现有的理解,简要做一下总结供参考,以后理解深刻了,在进行拓展。
熵
熵作为一种测量信息量的一个度量,可以用意外程度的期望值来定义,其反应了系统的有序化程度。
假设一个事件发生的概率为p,则得知该消息的意外程度
log2(1p)
这个事件发生的概率越大,意外程度越小,包含的信息也越小。若一件事必然发生,概率为1,则意外程度为0,信息量为0.
假设对于一个不均匀的色子,其离散随机变量X可能取值
X={x1,x2,...,x6}
,每个取值发生的概率
p(X=xi)
,记为
pi
,
pi
可称为意外程度,意外程度是一个随机变量,那么意外程度随机变量的期望值定义为:
期望值H即是熵,或称香浓信息量,值越大,不确定度越大。
对于只有两种结果的一个事件,比如投不均匀的硬币,正面朝上为p,则熵可得:
对H求导,当p=1/2时,熵H最大,无序度越大,不确定度越大,整个集合包含的信息量也越大。
在用比特来度量时:
若投硬币正面朝上,p=1/2,则log(2)=1,只需1bit就可表示两种结果
若投色子点数为1, p=1/6, 则log(6)=2.6,只需2.6bit就可表示六种结果。
换种角度来理解,给定一个分布p(x), 随机变量x来自p的分布,其可以用-log(p(x)) bit来编码。
则对于x这个随机变量来自p的所有取值,需要的编码bit数目为
然而如果这个随机变量x取自一个分布q,但其实际上属于p分布, 则实际需要的编码bit数目为
交叉熵
针对同一个事件,分别用两个概率分布p(代表真实概率)和q(代表模型概率)来度量信息量。交叉熵定义为:
其可用来度量p(假定为给定标签), q(假定为预测值)的相似程度,
H(p)值固定时, 此时H(p,q)等价于 DKL(p||q)
表示用q来逼近p时信息的损失程度(可以理解为距离,但并不是真正的距离 D(p||q)≠D(q||p) ), q=0时, p必须为0, p=q时,损失最小
损失函数
交叉熵在机器学习中,一般用来定义损失函数,当这个事件只有两种结果p={y,1-y},
q=y˙,1−y˙
,交叉熵:
则对应于logistic regression的损失函数(计算所有样本 m个的交叉熵平均值)为:
其中, y˙i=p(yi=j|xi;θ)=h(xi;θ) ,代表一个样本输出概率值
交叉熵为正数>0, 当实际输出 y˙i 靠近期望的输出 yi 时,交叉熵靠近0.
将其拓展到softmax损失函数的定义为:
交叉熵代价函数的引入,主要是为了弥补二次代价函数的不足,二次代价函数权值和偏置更新需要乘以激活函数的偏导项,而sigmoid函数很容易饱和,饱和时,其偏导数趋向于0,从而导致权值和偏置更新缓慢甚至不跟新,交叉函数其梯度中没有了偏导数,其权值更新速度会更快。