损失函数

损失函数,也称目标函数或者优化评分函数,是编译模型时所必需的两个参数之一。在编译时,可以给loss参数传递一个字符串形式的损失函数名或者TensorFlow/Theano符号函数。

常用的损失函数有以下这些:

  • mean_squared_errormse,均方误差,\(L=\frac{1}{n}\sum_{i=1}^{n}(y_{true}^{(i)}-y_{pred}^{(i)})^2\)。
  • mean_absolute_error,绝对值误差,\(L=\frac{1}{n}\sum_{i=1}^{n}|y_{true}^{(i)}-y_{pred}^{(i)}|\)。
  • mean_absolute_percentage_error,\(L=\frac{1}{n}\sum_{i=1}^{n}|\frac{y_{true}^{(i)}-y_{pred}^{(i)}}{y_{true}^{(i)}}| \cdot 100\)。
  • mean_squared_logarithmic_error,\(L=\frac{1}{n}\sum_{i=1}^{n}(log(y_{true}^{(i)}+1)-log(y_{pred}^{(i)}+1))^2\)。
  • squared_hinge,\(L=\frac{1}{n}\sum_{i=1}^{n}(max(0, 1-y_{true}^{(i)} \cdot y_{pred}^{(i)}))^2\)。
  • hinge,\(L=\frac{1}{n}\sum_{i=1}^{n}max(0, 1-y_{true}^{(i)} \cdot y_{pred}^{(i)})\)。
  • categorical_hinge
  • logcosh
  • categorical_crossentropy,分类交叉熵,目标值需要使用分类格式,如果有n个类,那么每个样本的目标值应该是一个n维的向量,所属类的目标值应该是1,不属于该类的目标值为0。从整型目标值转换为分类目标值可以使用Keras的工具函数to_categorical
  • binary_crossentropy,对数损失(二元交叉熵),主要用于二选一的分类。
  • kullback_leibler_divergence,从预测值概率分布到真值概率分布的信息增益,用来度量两个分布的差异。
  • poisson,\(L=\frac{1}{n}\sum_{i=1}^{n}(y_{pred}^{(i)}-y_{true}^{(i)} \cdot log(y_{pred}^{(i)}))\)。
  • cosine_proximity,\(L=-\frac{\sum_{i=1}^{n}y_{true}^{(i)} \cdot y_{pred}^{(i)}}{\sqrt{\sum_{i=1}^{n}(y_{true}^{(i)})^2} \cdot \sqrt{\sum_{i=1}^{n}(y_{pred}^{(i)})^2}}\)。