损失函数之交叉熵

记录一下自己的笔记。

1.信息熵

首先是信息量的定义,根据信息论原理得出。。
损失函数之交叉熵_第1张图片
这里一开始就给出了负号,保证 I(x)>=0.

信息熵

就是信息量的数学期望。
在这里插入图片描述

2.KL散度(相对熵)

中间还有一个条件熵,略过了。。
损失函数之交叉熵_第2张图片
这里对应就是我们机器学习中的P(X)真实分布,Q(X)预测分布。
从式中得知,KL越少就是表示两个分布越接近。
在机器学习中,我们的目的就是将Q(x)无限接近P(x).
其中Dkl可以证明是非负数。

损失函数之交叉熵_第3张图片
从而得出交叉熵的定义。

注意目的是最小化KL离散度,但是因为信息熵H(x)一般是常量,那么就转化成最小化交叉熵(同样非负,刻画两个随机变量分布的距离)了。 同样也等价于最大化似然估计。

另外多分类交叉熵应该就是 多个loss相加为一个样本的交叉熵。

同理在代码中

import torch
import torch.nn as nn
loss = nn.nn.CrossEntropyLoss(inputs,target,reduction,weight) # 一个四个参数
# reduction (string,可选) – 指定要应用于输出的reduction操作:' none ' | 'mean' | ' sum '。“none”:表示不进行任何reduction,
    # “mean”:输出的和除以输出中的元素数,即求平均值,“sum”:输出求和。注意:size_average和reduce正在被弃用,
    # 与此同时,指定这两个arg中的任何一个都将覆盖reduction参数。默认值:“mean”
 

其实就是因为pytorch对输出做了一个onehot变化,只算出预测成功的类别(P(x) =1,其他class为0) 再加上softmax就得出下面的结果。
在这里插入图片描述
在这里插入图片描述

一般加入weight参数,用在NLP处理序列,补零后的mask掩码序列,对补零的参数不做更新。

多分类

最大似然估计的对数等价形式将损失函数定义为如下:看来和我想的是一样的,一个样本,为1的class算出他们的loss再相加。

∑ t = 1 T ∑ − m ≤ j ≤ m , j ≠ 0 [ − log ⁡ P ( D = 1 ∣ w ( t ) , w ( t + j ) ) ] \sum_{t=1}^T\sum_{-m\le j\le m,j\ne 0} [-\log P(D=1\mid w^{(t)},w^{(t+j)})] t=1Tmjm,j=0[logP(D=1w(t),w(t+j))]

你可能感兴趣的:(损失函数之交叉熵)