专栏首页AIUAI机器学习 - 交叉熵Cross Entropy

机器学习 - 交叉熵Cross Entropy

机器学习 - 交叉熵Cross Entropy

1. 二值交叉熵 Binary Cross Entropy

假设训练数据 D={(x1,y1),(x2,y2),...,(xn,yn)}D={(x1,y1),(x2,y2),...,(xn,yn)}D = \{(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)\} ,

其中

x∈Rnx∈Rnx \in R^n - 训练样本, 如图片;

y∈{0,1}y∈{0,1}y \in \{0, 1\} - 标签labels, 只有 0 和 1, 二值分类问题.

假设已经有训练模型 f(x,θ)f(x,θ)f(x, \theta), 在给定 xxx 时, 输出 yyy 的概率. f(x,θ)f(x,θ)f(x, \theta) 是深度 CNN 模型或传统机器学习模型, θθ\theta 是模型参数.

基于 最大似然(Maximum Likelihood) 思想, 其目的是为了寻找能够最大化 P(D|θ)P(D|θ)P(D | \theta) 的参数 θθ\theta .

假设数据服从伯努利分布(Bernoulli distribution), 且 {(x1,y1),(x2,y2),...,(xn,yn)}{(x1,y1),(x2,y2),...,(xn,yn)}\{(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)\} 相互独立, 则有:

P(D|θ)=∏ni=1f(xi,θ)yi⋅(1−f(xi,θ))(1−yi)P(D|θ)=∏i=1nf(xi,θ)yi⋅(1−f(xi,θ))(1−yi)P(D | \theta) = \prod _{i=1}^{n} f(x_i, \theta)^{y_i} \cdot (1 - f(x_i, \theta))^{(1 - y_i)} (1)

取 log,

logP(D|θ)=log(∏ni=1f(xi,θ)yi⋅(1−f(xi,θ))(1−yi))logP(D|θ)=log(∏i=1nf(xi,θ)yi⋅(1−f(xi,θ))(1−yi))log P(D | \theta) = log ( \prod _{i=1}^n f(x_i, \theta)^{y_i} \cdot (1 - f(x_i, \theta))^{(1- y_i)} ) (2)

简化,

logP(D|θ)=∑ni=1yilogf(xi,θ)+(1−yi)log(1−f(xi,θ))logP(D|θ)=∑i=1nyilogf(xi,θ)+(1−yi)log(1−f(xi,θ))log P(D | \theta) = \sum_{i=1}^n y_i logf(x_i, \theta) + (1 - y_i)log(1 - f(x_i, \theta)) (3)

相比于直接最大化等式 (1) 进行优化, 一般采用对其 log 等式 (3) 的负值进行最小化优化:

−log(P(D|θ))=−∑ni=1yilogf(xi,θ)+(1−yi)log(1−f(xi,θ))−log(P(D|θ))=−∑i=1nyilogf(xi,θ)+(1−yi)log(1−f(xi,θ))-log(P(D | \theta)) = - \sum_{i=1}^n y_i logf(x_i, \theta) + (1 - y_i)log(1 - f(x_i, \theta)) (4)

因此, 可以得到二值交叉熵函数 , 如下:

−∑ni=1yilogf(xi,θ)+(1−yi)log(1−f(xi,θ))−∑i=1nyilogf(xi,θ)+(1−yi)log(1−f(xi,θ))- \sum_{i=1}^n y_i logf(x_i, \theta) + (1 - y_i)log(1 - f(x_i, \theta)) (5)

二值交叉熵函数可用于二值分类任务中的损失函数. CNN 中, 输出层可以采用 sigmoid 作为激活函数, 并将 sigmoid 输出结果, 送入二值交叉熵损失函数.

2. 交叉熵 Cross Entropy

根据二分类的二值交叉熵,可以延展到多分类 multi-classification 任务.

假设标签labels y∈{0,1,...,k}y∈{0,1,...,k}y \in \{0, 1, ..., k\}, kkk 个类别.

假设 kkk 个类别中, 每个类别包含的样本数分别为 n1,n2,...,nkn1,n2,...,nkn_1, n_2, ..., n_k, 且 ∑ki=1ni=n∑i=1kni=n\sum_{i=1}^{k} n_i = n.

同样基于 最大似然(Maximum Likelihood) 思想,

假设数据服从多项式分布(Multinomial distribution), 且 {(x1,y1),(x2,y2),...,(xn,yn)}{(x1,y1),(x2,y2),...,(xn,yn)}\{(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)\} 相互独立, 则有:

P(D|θ)=n!n1!⋅n2!⋅...⋅nk!∏ni=1f(xi,θ)yiP(D|θ)=n!n1!⋅n2!⋅...⋅nk!∏i=1nf(xi,θ)yiP(D | \theta) = \frac{n!}{n_1! \cdot n_2! \cdot ... \cdot n_k! } \prod _{i=1}^{n} f(x_i, \theta)^{y_i} (6)

取 log,

P(D|θ)=logn!−logn1!⋅n2!⋅...⋅nk!+log∏ni=1f(xi,θ)yiP(D|θ)=logn!−logn1!⋅n2!⋅...⋅nk!+log∏i=1nf(xi,θ)yiP(D | \theta) = log n! -logn_1! \cdot n_2! \cdot ... \cdot n_k! + log \prod_{i=1}^{n} f(x_i, \theta)^{y_i} (7)

简化,

P(D|θ)=logn!−logn1!⋅n2!⋅...⋅nk!+∑ni=1yilogf(xi,θ)P(D|θ)=logn!−logn1!⋅n2!⋅...⋅nk!+∑i=1nyilogf(xi,θ)P(D | \theta) = log n! -logn_1! \cdot n_2! \cdot ... \cdot n_k! + \sum_{i=1}^{n} y_i logf(x_i, \theta) (8)

由于 logn!−logn1!⋅n2!⋅...⋅nk!logn!−logn1!⋅n2!⋅...⋅nk!log n! -logn_1! \cdot n_2! \cdot ... \cdot n_k! 是与模型参数 θθ\theta 无关的项, 作为常数项, 可以忽略, 则有:

P(D|θ)=∑ni=1yilogf(xi,θ)P(D|θ)=∑i=1nyilogf(xi,θ)P(D | \theta) = \sum_{i=1}^{n} y_i logf(x_i, \theta) (9)

同样地, 最小化等式 (8) 的负值, 进行优化:

−P(D|θ)=−∑ni=1yilogf(xi,θ)−P(D|θ)=−∑i=1nyilogf(xi,θ) - P(D | \theta) = - \sum_{i=1}^{n} y_i logf(x_i, \theta) (10)

因此,可以得到交叉熵函数, 如下:

−∑ni=1yilogf(xi,θ)−∑i=1nyilogf(xi,θ)- \sum_{i=1}^{n} y_i logf(x_i, \theta) (11)

交叉熵函数可用于多分类multi-classification任务中的损失函数. CNN 中, 输出层可以采用 softmax 来输出每一类的概率值, 再将 softmax 输出结果, 送入交叉熵损失函数. Categorical CrossEntropy 多分类的对数损失函数

3. 信息论 & 熵 & 交叉熵

信息论中, 信号所包含的信息量多少, 可理解为:

  • 如果发生可能性很高的事情发生了, 则包含的信息量较少, 价值不大;
  • 如果发生的可能性很低的事情发生了, 则包含的信息量较多, 价值更大.

自信息定义为:

I(x)=−log(P(x))I(x)=−log(P(x))I(x) = -log(P(x))

则, P(x)P(x)P(x) 值较大, 则 I(x)I(x)I(x) 值较小;反之, P(x)P(x)P(x) 值较小, 则 I(x)I(x)I(x) 值较大. 很好的反映了 P(x)P(x)P(x) 的信息量.

是信息量的期望值, 度量了随机变量的确定性.

H(x)=−E(P(x))∗log(P(x))H(x)=−E(P(x))∗log(P(x))H(x) = -E(P(x)) * log(P(x))

以二分类为例, label X 值只能为 0 或 1, 则其熵为:

H(x)=−[P(X=0)∗log(P(X=0))+(1−P(X=1))∗log(1−P(X=1))]H(x)=−[P(X=0)∗log(P(X=0))+(1−P(X=1))∗log(1−P(X=1))]H(x) = -[P(X=0) * log(P(X=0)) + (1 - P(X=1))* log(1 - P(X=1))]

交叉熵 是对于两个分布的度量,

H(P,Q)=−E(P(x))∗log(Q(x))H(P,Q)=−E(P(x))∗log(Q(x))H(P, Q) = -E(P(x)) * log(Q(x))

其中, P(x)P(x)P(x) 和 Q(x)Q(x)Q(x) 表示两个分布, 如模型预测分布和真实标签分布.

当两个分布相同, 差别较小时, 即 P(x)P(x)P(x) 的位置, Q(x)Q(x)Q(x) 发生的概率非常确定为1, 则 −log(Q(x))=−log(1)=0−log(Q(x))=−log(1)=0-log(Q(x)) = -log(1) = 0, 二者的交叉熵为 H(P,Q)=0H(P,Q)=0H(P, Q) = 0.

当两个分布很不相同, 差别较大时, 即P(x)P(x)P(x) 的位置, Q(x)Q(x)Q(x) 发生的概率非常小, 则 −log(Q(x))−log(Q(x))-log(Q(x)) 值会较大, 随之二者的交叉熵也较大.

相对熵, 也叫 KL 散度, 用于分析两个分布的差异程度. 也是交叉熵可以作为 loss 的原因.

将交叉熵减去训练样本的熵, 有:

H(P,Q)−H(P)=−E(P(x))∗log(Q(x))−(−E(P(x))∗log(P(x)))H(P,Q)−H(P)=−E(P(x))∗log(Q(x))−(−E(P(x))∗log(P(x)))H(P, Q) - H(P) = -E(P(x)) * log(Q(x)) - (-E(P(x)) * log(P(x))) H(P,Q)−H(P)=−E(P(x))∗log(Q(x))+E(P(x))∗log(P(x))H(P,Q)−H(P)=−E(P(x))∗log(Q(x))+E(P(x))∗log(P(x))H(P, Q) - H(P) = -E(P(x)) * log(Q(x)) + E(P(x)) * log(P(x)) H(P,Q)−H(P)=−E(P(x))(log(Q(x))−log(P(x)))H(P,Q)−H(P)=−E(P(x))(log(Q(x))−log(P(x)))H(P, Q) - H(P) = -E(P(x)) (log(Q(x)) - log(P(x)) ) H(P,Q)−H(P)=−E(P(x))logQ(x)P(x)H(P,Q)−H(P)=−E(P(x))logQ(x)P(x)H(P, Q) - H(P) = -E(P(x)) log \frac{Q(x)}{P(x)}

其中, 训练样本的熵 P(x)P(x)P(x) 是固定的, 因为样本是固定的.

[1] - Caffe Loss 层 - SigmoidCrossEntropyLoss 推导与Python实现

[2] - Caffe Loss层 - SigmoidCrossEntropyLossLayer

[3] - Caffe源码 - SoftmaxWithLossLayer

[4] - Caffe Loss 层 - LossLayers

[5] -Caffe Loss层 - HingelossLayer

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于SVM的思想做CIFAR-10图像分类

    回顾一下之前的SVM,找到一个间隔最大的函数,使得正负样本离该函数是最远的,是否最远不是看哪个点离函数最远,而是找到一个离函数最近的点看他是不是和该分割函数离的...

    西红柿炒鸡蛋
  • Finale

    这几篇博客介绍的第一个feature transform方法就是kernel。kernel先出现是在SVM里面,原因就是为了减少 內积计算的复杂度,把特征转换和...

    西红柿炒鸡蛋
  • “不安分”的数据“提炼师” | 数据科学50人·贾西贝

    为什么数据科学才有科学后缀,而从未听过物联网科学或者是区块链科学?华傲数据创始人贾西贝在这次专访中提出了一个有意思的观点。他认为数据当然是一门科学。从数据求学到...

    DT数据侠
  • 第一章(1.2) 机器学习算法工程师技能树

    - 单机开发工具(numpy、sk-learn、pandas、libsvm、xgboost)

    两只橙
  • Data Structure_树

    对于有一类问题,时常关注的是一个区间或者是一个线段,那么就可以使用线段树来解决。比较经典的问题,就是区间染色问题:有一面墙,长度为n,每次选择一段墙来染色,一开...

    西红柿炒鸡蛋
  • Neural Network

    重新回顾一下一开始学的PLA,preceptron learning Algorithm。PLA适用于二维及高维的线性可分的情况,如果是非线性可分的数据,如果使...

    西红柿炒鸡蛋
  • Aggregation Model : Blending , Bagging , Boosting

    比如现在有一支股票,你不知道是跌还是涨。你有T个friends,每一个friend对应的建议分别是g1,g2,g3...gn,那么你应该怎么选择建议?

    西红柿炒鸡蛋
  • 响铃:ToB风口下,2019年BAT金融科技竞争关键点在哪?

    先是在年中时,百度宣布拆分百度金融并成立独立运营的金融品牌“度小满”;接着临近年末时,京东金融宣布“京东金融”品牌升级成为“京东数字科技”;再结合度小满CEO朱...

    曾响铃
  • AI戒毒:被机器监控的毒品“心瘾”

    AI应用场景不断被挖掘出来,除了商业场景,AI技术也正在凸显其社会价值。“珍爱生命,远离毒品”人人都听过,却不是人人都能做到,于是,戒毒成了吸毒人员的“痛点”和...

    DT数据侠
  • 张一鸣、王欣和罗永浩的社交梦

    今天是 1 月 15 日,农历腊月初十,是一个看起来很好的日子,也将是 2019 年新年以来,科技圈颇为热闹的一天,因为字节跳动、云歌人工智能以及快如科技均选择...

    心莱科技雪雁

扫码关注云+社区

领取腾讯云代金券