原地址: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对数,剔除不介于epsilon和infinite之间的预测值与实际值之后,然后取对数,作差,平方,累加求均值。
- 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).
参考资料: