1、交叉熵
- 是一种用于衡量两个概率分布之间的距离或相似性的度量方法。
- 机器学习中,交叉熵常用于损失函数,用于评估模型的预测结果和实际标签的差异。
- 公式:
y:真是标签的概率分布,y':模型预测的概率分布
- 交叉熵损失函数的目的:是最小化预测概率分布和真是概率分布之间的差异,使模型能够更好的学习到数据的内在规律和特征。
2、torch.nn.CrossEntropyLoss()
- 多分类的损失函数
- CrossEntropyLoss()包含两部分,softmax和交叉熵计算
- softmax将预测值转化为概率值
- torch.nn.CrossEntropyLoss(logits,target)
其中logits预测值是网络输出:[[0.8, 0.5, 0.2, 0.5],
[0.2, 0.9, 0.3, 0.2],
[0.4, 0.3, 0.7, 0.1],
[0.1, 0.2, 0.4, 0.8]]
其中target标签可以是:列表:torch.tensor([[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 1]], dtype=torch.float)
索引:torch.tensor([0,1, 1, 3], dtype=torch.long)
3、torch.nn.BCEWithLogitsLoss()
- BCEWithLogitsLoss()用于二元分类的损失函数。
- BCEWithLogitsLoss()包含两部分:Sigmoid层(将输出映射在[0,1]范围内)和BEC损失。
- 优点:采用Sigmoid激活函数,可以避免梯度消失和爆炸。
- torch.nn.BCEWithLogitsLoss()(logits,target)
logits:网络输出,没有进行Sigmoid:tensor([ 0.5555, -0.2509, 1.3131])
target:标签:tensor([0., 0., 1.], dtype=torch.float)