损失函数

一、基础定义

==损失函数是用于刻画 预期模型 和 实际模型的误差,用于指导模型优化的方向==,是一种将模型误差量化的方式。

loss = f(x) - Y;

在机器学习中,训练的目的,就是寻找loss极小值。

二、回归问题的损失函数

1. 平均绝对误差(L1)

也是线性问题中用到的,衡量的也是和真实值的误差。 ==但是它会忽略异常数据带来的问题==。

image
image

2 均方误差(L2)

在线性问题中最常用的损失函数。 计算方法是预测值和真实值
之间的距离平方和,==如果存在异常数值,会将它放大==, 次放越大,越会放大异常数值。

在线性中选用这种是最好的,获得的loss是放大的,可以很快的调整模型,但是要注意的是,需要处理掉异常数值。

image
image

3.smooth损失函数

在神经网络中,更新梯度始终相同,也就是说,即使很小的损失也会在成模型大幅度调整,这样不利于模型的学习,所以在损失接近最小值时, 可以降低学习率。

首先我们先分析一下,上面两种损失函数各自的优缺点

L1: 不容易被异常数据影响,但是学习速率是固定的。
L2: 容易被异常数据影响,但是学习速率在趋于0是会减速。

综合上述的两个优缺点,smooth L1 就此诞生


image
image

三、分类问题的损失函数

交叉熵基础知识

1.交叉熵

M: 类别数量
yc: 期望输出
pc: 真实输出

image

在二分类中, 可以得到如下公式:
y:正的期望输出
p:当前模型输出

image

假设 y 的输出恒等于1 的模型是我们训练的目标,得到损失函数如下

image
image

根据凸显我们可以得到结论,模型输出 y 越接近 1 时,损失函数越小, 符合实际情况。

假设 y 的输出恒等于0 的模型是我们训练的目标,得到损失函数如下

image
image

根据凸显我们可以得到结论,模型输出 y 越接近 0 时,损失函数越小, 符合实际情况。

看一下曲线图,当 输出大的时候,损失L是以指数上升的,说明对当前模型的“惩罚”越大(w调整越大),有利于模型学习。

你可能感兴趣的:(损失函数)