keras中 损失函数 与 评价函数 详解

1.   损失函数  loss

损失函数(或称目标函数、优化评分函数)是编译模型时所需的两个参数之一:

model.compile(loss='mean_squared_error', optimizer='sgd')
from keras import losses

model.compile(loss=losses.mean_squared_error, optimizer='sgd')

(1)mean_squared_error / mse

均方误差,常用的目标函数,公式为((y_pred-y_true)**2).mean()

def mean_squared_error(y_true, y_pred):
    return K.mean(K.square(y_pred - y_true), axis=-1)

(2)mean_absolute_error / mae

绝对值均差,公式为(|y_pred-y_true|).mean()

def mean_absolute_error(y_true, y_pred):
    return K.mean(K.abs(y_pred - y_true), axis=-1)


(3) mean_absolute_percentage_error / mape

公式为:(|(y_true - y_pred) / clip((|y_true|),epsilon, infinite)|).mean(axis=-1) * 100,和mae的区别就是,累加的是(预测值与实际值的差)除以(剔除不介于epsilon和infinite之间的实际值),然后求均值。

def mean_absolute_percentage_error(y_true, y_pred):
    diff = K.abs((y_true - y_pred) / K.clip(K.abs(y_true),
                                            K.epsilon(),
                                            None))
    return 100. * K.mean(diff, axis=-1)


(4)mean_squared_logarithmic_error / msle

公式为: (log(clip(y_pred, epsilon, infinite)+1)- log(clip(y_true, epsilon,infinite)+1.))^2.mean(axis=-1),这个就是加入了log对数,剔除不介于epsilon和infinite之间的预测值与实际值之后,然后取对数,作差,平方,累加求均值。

def mean_squared_logarithmic_error(y_true, y_pred):
    first_log = K.log(K.clip(y_pred, K.epsilon(), None) + 1.)
    second_log = K.log(K.clip(y_true, K.epsilon(), None) + 1.)
    return K.mean(K.square(first_log - second_log), axis=-1)


(5)squared_hinge

公式为:(max(1-y_truey_pred,0))^2.mean(axis=-1),取1减去预测值与实际值乘积的结果与0比相对大的值的平方的累加均值。

def squared_hinge(y_true, y_pred):
    return K.mean(K.square(K.maximum(1. - y_true * y_pred, 0.)), axis=-1)


(6)hinge

公式为:(max(1-y_true*y_pred,0)).mean(axis=-1),取1减去预测值与实际值乘积的结果与0比相对大的值的的累加均值。

def hinge(y_true, y_pred):
    return K.mean(K.maximum(1. - y_true * y_pred, 0.), axis=-1)


(7)binary_crossentropy

 常说的逻辑回归, 就是常用的交叉熵函

def binary_crossentropy(y_true, y_pred):
    return K.mean(K.binary_crossentropy(y_true, y_pred), axis=-1)


(8)categorical_crossentropy

 多分类的逻辑

def categorical_crossentropy(y_true, y_pred):
    return K.categorical_crossentropy(y_true, y_pred)

2.   性能评估函数

评价函数用于评估当前训练模型的性能。当模型编译后(compile),评价函数应该作为 metrics的参数来输入。

model.compile(loss='mean_squared_error',
              optimizer='sgd',
              metrics=['mae', 'acc'])
from keras import metrics

model.compile(loss='mean_squared_error',
              optimizer='sgd',
              metrics=[metrics.mae, metrics.categorical_accuracy])

评价函数和 损失函数 相似,只不过评价函数的结果不会用于训练过程中。

我们可以传递已有的评价函数名称,或者传递一个自定义的 Theano/TensorFlow 函数来使用(查阅自定义评价函数)。

 

(1)binary_accuracy:

对二分类问题,计算在所有预测值上的平均正确率


(2)categorical_accuracy

对多分类问题,计算再所有预测值上的平均正确率


(3)sparse_categorical_accuracy

与categorical_accuracy相同,在对稀疏的目标值预测时有用


(4)top_k_categorical_accracy

计算top-k正确率,当预测值的前k个值中存在目标类别即认为预测正确


(5)sparse_top_k_categorical_accuracy

与top_k_categorical_accracy作用相同,但适用于稀疏情况
 

你可能感兴趣的:(Keras,深度学习)