基于Theano的深度学习(Deep Learning)框架Keras学习随笔-04-目标函数

时间:2022-02-03 13:07:37

        原地址:http://blog.csdn.net/niuwei22007/article/details/49132133可以查看更多文章

Objective(目标函数),就是常说的代价函数或者损失函数。是训练一个模型另外一个必备的参数。比较常用的就是均方误差和逻辑回归。上一个是优化器

        一、目标函数的使用方法

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

        这段代码已经见过很多次了。可以通过传递一个函数名。也可以传递一个为每一块数据返回一个标量的Theano symbolic function。而且该函数的参数是以下形式:

  • y_true : 实际标签。类型为Theano tensor
  • y_pred: 预测结果。类型为与y_true同shape的Theanotensor

        其实想一下很简单,因为损失函数的作用就是返回预测结果与实际值之间的差距。然后优化器根据差距进行参数调整。不同的损失函数之间的区别就是对这个差距的度量方式不同。这里是Keras对于目标函数实现的源代码。

        

        二、Keras内置的目标函数

  • mean_squared_error / mse均方误差,常用的目标函数,公式为((y_pred-y_true)^2).mean(axis=-1)就是把预测值与实际值差的平方累加求均值。
  • mean_absolute_error / mae绝对值均差,公式为(|y_pred-y_true|).mean(axis=-1)就是把预测值与实际值差的绝对值累加求和。
  • mean_absolute_percentage_error / mape公式为:(|(y_true - y_pred) / clip((|y_true|),epsilon, infinite)|).mean(axis=-1) * 100,和mae的区别就是,累加的是(预测值与实际值的差)除以(剔除不介于epsilon和infinite之间的实际值),然后求均值。
  • mean_squared_logarithmic_error / msle公式为: (log(clip(y_pred, epsilon, infinite)+1)- log(clip(y_true, epsilon,infinite)+1.))^2.mean(axis=-1),这个就是加入了log对数,剔除不介于epsiloninfinite之间的预测值与实际值之后,然后取对数,作差,平方,累加求均值。
  • squared_hinge公式为:(max(1-y_true*y_pred,0))^2.mean(axis=-1),取1减去预测值与实际值乘积的结果与0比相对大的值的平方的累加均值。
  • hinge公式为:(max(1-y_true*y_pred,0)).mean(axis=-1),取1减去预测值与实际值乘积的结果与0比相对大的值的的累加均值。
  • binary_crossentropy:常说的逻辑回归.
  • categorical_crossentropy:多分类的逻辑回归注意:using this objective requires that your labels are binary arrays ofshape (nb_samples, nb_classes).


        参考资料:

  1. 官方教程