目录
Loss损失函数的作用
- 损失函数用来评价模型的预测值和真实值不一样的程度,深度学习训练模型的时候就是通过计算损失函数,更新模型参数,从而减小优化误差,直到损失函数值下降到目标值 或者 达到了训练次数。
- 不同的模型用的损失函数一般也不一样。损失函数设置的越好,通常模型的性能越好。
- loss函数可以自定义
损失函数loss和准确率accuracy的比较
- 在分类问题中,准确率accuracy更加直观,也更具有可解释性;对于回归问题,accuracy不可用,只能用loss
- 准确率accuracy不可微分,无法直接用于网络训练,而反向传播算法要求损失函数是可微的
- 损失函数loss可微分,可以求梯度,运用反向传播更新参数。
回归任务中的loss主要包括
- 均方误差mean squareerror(MSE):MSE表示了预测值与目标值之间差值的平方和然后求平均
- L2范数:L2损失表示了预测值与目标值之间差值的平方和然后开更方,L2表示的是欧几里得距离。
- MSE和L2的曲线走势都一样。区别在于一个是求的平均np.mean(),一个是求的更方np.sqrt()
tensorflow和keras代码体现:
#tensorflow
tf.losses.mean_squared_error(
labels,
predictions,
weights=1.0,
scope=None,
loss_collection=tf.GraphKeys.LOSSES,
reduction=Reduction.SUM_BY_NONZERO_WEIGHTS
)
tf.metrics.mean_squared_error(
labels,
predictions,
weights=None,
metrics_collections=None,
updates_collections=None,
name=None
)
#keras
mean_squared_error(y_true, y_pred)
复制代码
- 平均绝对误差meanabsolute error(MAE ):MAE表示了预测值与目标值之间差值的绝对值然后求平均
- L1范数:L1表示了预测值与目标值之间差值的绝对值,L1也叫做曼哈顿距离
MAE和L1的区别在于一个求了均值np.mean(),一个没有求np.sum()。2者的曲线走势也是完全一致的。
- tensorflow和keras代码体现:
#tensorflow
tf.metrics.mean_absolute_error(
labels,
predictions,
weights=None,
metrics_collections=None,
updates_collections=None,
name=None
)
#keras
mean_absolute_error(y_true, y_pred)
复制代码
- MSE,MAE对比:
MAE损失对于局外点更鲁棒,但它的导数不连续使得寻找最优解的过程低效;MSE损失对于局外点敏感,但在优化过程中更为稳定和准确。
- 其他可用的损失函数参考:
补充知识
平均绝对误差MAE(mean absolute error
) 和均方根误差 RMSE(root mean squared error
)是衡量变量精度的两个最常用的指标,同时也是机器学习中评价模型的两把重要标尺。
1. 定义
平均绝对误差MAE(mean absolute error
)是绝对误差的平均值,它其实是更一般形式的误差平均值。
或者
均方根误差 RMSE(root mean squared error
),也有资料称为RMSD
,也可以测量误差的平均大小,它是预测值和实际观测之间平方差异平均值的平方根。
或者
2. 比较
均方根误差 RMSE 受异常值的影响更大。
3. 应用
当我们处理较大的数据集时,我们不能检查每个值以了解是否有一个或一些异常值,或者是否所有的错误都系统性地更高
解决办法:查看 MAE 和 RMSE 的比值可以帮助我们理解是否存在较大但不常见的错误。
参考资料:
【1】zhuanlan.zhihu.com/p/58883095