数据分析-神经网络-损失函数

目录

前言

均方误差(MSE)

平均绝对误差(MAE)

二元交叉熵

(tf.keras.losses.binary_crossentropy)

多分类交叉熵

(tf.keras.losses.categorical_crossentropy)

稀疏多分类交叉熵

(tf.keras.losses.sparse_categorical_crossentropy)


前言

损失函数就是神经网络每次迭代的前向计算表达式与真实值的差,是神经网络优化的基础,神经网络模型据此调整权重和bias,使得神经网络模型的输出值向真实值靠近。

  1. 用随机值初始化权重和bias;
  2. 输入样本,模型输出的预测值;
  3. 用损失函数计算预测值和真实值的差;
  4. 对损失函数求导(对权重和bias),沿梯度最大方向将误差回传,修正权重与bias;
  5. goto 2, 直到损失函数值足够小或到迭代次数上限。

均方误差(MSE)

神经网络做回归时,可以选择均方误差作为损失函数(真实值和预测值的平方差的平均值)。

可以认为模型输出为实数时,可使用此损失函数。输出层不使用激活函数。

平均绝对误差(MAE)

神经网络做回归时,除了可以选择均方误差作为损失函数,也可以使用MAE(真实值和预测值差的绝对值的平均值)。

同样模型输出为实数时,可使用此损失函数。

输出层不使用激活函数。

二元交叉熵

(tf.keras.losses.binary_crossentropy

神经网络用于二元分类任务时,输出层一个节点,输出通常使用sigmoid激活函数,输出在(0-1)范围,为样本属于0,1类别的概率。可使用二元交叉熵损失函数。

例如,神经网络对猫狗图像分类。如果输出大于0.5,则网络将其分类为猫(猫的标签为1);如果输出小于0.5,则网络将其分类为狗。即概率得分值越大,猫的机会越大。

在二分类的情况下,模型最后需要预测的结果只有两种情况,对于每个类别我们的预测得到的概率为p_{i}1-p_{i},此时交叉熵计算公式为:

1/n\sum(-y_{i}*lnp_{i})-(1-y_{i})*ln(1-p_{i})

 其中:
- 其中y_{i} 表示样本i 的label,正类为1,负类为 0
-  p_{i}表示样本  预测为正类的概率

预测 真实 是否正确
0.3 0  (狗-负类) 正确
0.6 1  (猫-正类) 正确

 交叉熵为:

1/2(-0*ln(0.3)+(1-0)ln(1-0.3)+(-1*ln(0.6)-(1-1)ln(0.4))

多分类交叉熵

tf.keras.losses.categorical_crossentropy

对于多类分类任务,可以选择多分类交叉熵损失函数。使用多分类交叉熵损失函数,输出节点的数量必须与这些类相同。最后一层的输出应该通过softmax激活函数,以便每个节点输出介于(0-1)之间的概率值,所有输出节点的概率之和为1,概率最大的输出对应的类别为该样本的类别。样本的标签为one-hot编码。

例如,在一个多分类神经网络中,它读取图像并将其分类为T恤,背心,鞋子,裙子,裤子。如果鞋子输出节点具有最高概率得分,则将图像分类为鞋子。

多分类的交叉熵计算公式为:

数据分析-神经网络-损失函数_第1张图片

 

稀疏多分类交叉熵

(tf.keras.losses.sparse_categorical_crossentropy

该损失函数与多分类交叉熵基本相同,区别在使用稀疏多分类交叉熵损失函数时,不需要对数据集标签进行one-hot形式的编码,使用标签编码即可。模型输出和多分类交叉熵一样,多少类别就对应多少输出节点。激活函数使用softmax。

待完善......

你可能感兴趣的:(数据分析入门,深度学习,数据挖掘,深度学习,神经网络,数据分析)