目录

损失函数

所谓损失函数(别名: loss function / cost function / objective function / error function),即一个衡量预测值与真实值之间差异的指标,我的真实数据结果为1,预测结果为0.98,那么我就可以说他们之间的“差异”为0.02

# 交叉熵

在深度学习的分类任务中使用最多的是交叉熵损失函数,所以在这里我们着重介绍这种损失函数。

在多分类任务通常使用softmax将logits转换为概率的形式,所以多分类的交叉损失也叫做softmax损失,他的计算方式为: $$CE Loss = -\frac{1}{m} \sum_{i=1}^{m} y_i*log(p_i) + (1-y_i) * log(1-p_i)$$ avatar

其中,y是样本x属于某一个类别的真实概率,而f(x)是样本属于某一类别的预测分数,S是softmax函数,L用来衡量p,q之间差异性的损失结果。

avatar 上图中的交叉熵损失为: $-(0log(0.10)+1log(0.7)+0log(0.2)) = -log(0.7)$

tf.keras中使用CategoricalCrossentropy实现:

y_true = [[0,1,0],[0,0,1]]
y_pred = [[0.05,0.95,0],[0.1,0.8,0.1]]

# 实例化交叉熵损失函数
cce = tf.keras.losses.CategoricalCrossentropy()

# 计算
cce(y_true, y_pred).numpy()
1
2
3
4
5
6
7
8

# 二分类任务

在处理二分类任务时,我们不在使用softmax激活函数,而是使用sigmoid激活函数,那损失函数也相应的进行调整,使用二分类的交叉熵损失函数: $-{(y\log(p) + (1 - y)\log(1 - p))}$

其中,y是样本x属于某一个类别的真实概率,而p是样本属于某一类别的预测概率,L用来衡量真实值与预测值之间差异性的损失结果。

#设置真实值和预测值
y_true =[[0],[1]]
y_pred =[[0.4],[0.6]]

#实例化二分类交叉熵损失
bce = tf.keras.losses.BinaryCrossentropy()
#计算损失结果
bce(y_true,y_pred).numpy()
1
2
3
4
5
6
7
8

# MAE损失 / L1 Loss

Mean absolute loss(MAE)也被称为L1 Loss,是以绝对误差作为距离: $\frac{1}{D}\sum_{i=1}^{D}|x_i-y_i|$

特点是: 由于L1loss具有稀疏性,为了惩罚较大的值,因此常常将其作为正则项添加到其他loss中作为约束。L1loss的最大问题是梯度在零点不平滑,导致会跳过极小值。

y_true = [[0.],[0.]]
y_pred = [[1.],[1.]]

# 实例化MAE损失
mae = tf.keras.l;osses.MeanAbsoluteError()

# 计算
mae(y_true,y_pred).numpy()
1
2
3
4
5
6
7
8

# MSE损失 / L2 Loss

欧氏距离,特点是L2 loss也常常作为正则项。当预测值与目标值相差很大时,梯度容易爆炸

#导入相应的包
import tensorflow as tf
# 设置真实值和预测值
y_true = [[0.][1.]]
y-pred = [[1.][1.]]
# 实例化MSE损失
mse = tf.keras.losses .MeanSquaredError()
#计算损失结果
mse(y_true,y_pred).numpy()
1
2
3
4
5
6
7
8
9
最近更新
01
基本知识
07-18
02
卷积神经网络识别图像
07-18
03
激活函数
07-18
更多文章>