损失函数
1 损失函数、代价函数 与 目标函数
损失函数(Loss Function):是定义在单个样本上的,是指一个样本的误差。
代价函数(Cost Function):是定义在整个训练集上的,是所有样本误差的平均,也就是所有损失函数值的平均。
目标函数(Object Function):是指最终需要优化的函数,一般来说是经验风险+结构风险,也就是(代价函数+正则化项)。
损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。不同的模型用的损失函数一般也不一样。
损失函数分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是指经验风险损失函数加上正则项。
• 损失函数:一次预测的好坏;
• 风险函数:平均意义下模型预测的好坏;
常见的损失函数以及其优缺点如下:
2 损失函数
2.1 0-1损失函数
0-1 损失是指预测值和目标值不相等为 1, 否则为 0。
$L(Y, f(X))=\left\{\begin{array}{l} 1, Y \neq f(X) \\ 0, Y=f(X) \end{array}\right.$
特点:
- 0-1损失函数直接对应分类判断错误的个数,但是它是一个非凸函数,不太适用;
- 感知机就是用的这种损失函数。但是相等这个条件太过严格,因此可以放宽条件,即满足 $| Y - f(x) | < T$ 时认为相等,
$L(Y, f(X))=\left\{\begin{array}{l} 1,|Y-f(X)| \geq T \\ 0,|Y=f(X)|<T \end{array}\right.$
2.2 平方损失函数
平方损失函数标准形式如下:
$L(Y, f(X))=(Y-f(X))^{2}$
2.3 绝对损失函数
绝对值损失函数是计算预测值与目标值的差的绝对值:
$L(Y, f(x))=|Y-f(x)|$
2.4 对数损失函数
log对数损失函数的标准形式如下:
$L(Y, P(Y \mid X))=-\log P(Y \mid X)=-\frac{1}{N} \sum \limits_{i=1}^{N} \sum \limits_{j=1}^{M} y_{i j} \log \left(p_{ij}\right)$
特点:
- log对数损失函数能非常好的表征概率分布,在很多场景尤其是多分类,如果需要知道结果属于每个类别的置信度,那它非常适合;
- 健壮性不强,相比于hinge loss对噪声更敏感;
- 逻辑回归的损失函数就是log对数损失函数。
2.5 指数损失函数
指数损失函数的标准形式如下:
$L(Y \mid f(X))=\exp [-y f(x)]$
特点:
对离群点、噪声非常敏感。经常用在AdaBoost算法中。
2.6 Hinge 损失函数
Hinge 损失函数标准形式如下:
$L(y, f(x))=\max (0,1-y f(x))$
特点:
- hinge损失函数表示如果被分类正确,损失为 $0$,否则损失就为 $ 1 - yf(x)$ 。SVM 就是使用这个损失函数。
- 一般的 $f(x)$ 是预测值,在 $-1$ 到 $1$ 之间,$y$ 是目标值 $(-1或1)$ 。其含义是,$ f(x)$ 的值在 $-1$ 和 $+1$ 之间就可以了,并不鼓励 $ |f(x)|>1 $,即并不鼓励分类器过度自信,让某个正确分类的样本距离分割线超过 $1$ 并不会有任何奖励,从而使分 类器可以更专注于整体的误差。
- 健壮性相对较高,对异常点、噪声不敏感,但它没太好的概率解释。
2.7 感知损失函数
感知损失函数的标准形式如下:
$L(y, f(x))=\max (0,-f(x))$
特点:
是Hinge损失函数的一个变种,Hinge loss对判定边界附近的点(正确端)惩罚力度很高。而perceptron loss只要样本的判定类别正确的话,它就满意,不管其判定边界的距离。它比Hinge loss简单,因为不是max-margin boundary,所以模型的泛化能力没 hinge loss强。
2.8 交叉熵损失函数
交叉熵损失函数 (Cross-entropy loss function)
交叉熵损失函数的标准形式如下:
$C=-\frac{1}{n} \sum \limits_{x}[y \ln a+(1-y) \ln (1-a)]$
注意公式中 $x$ 表示样本, $y$ 表示实际的标签, $a$ 表示预测的输出,$n$ 表示样本总数量。
特点:
1> 本质上也是一种对数似然函数,可用于二分类和多分类任务中。
二分类问题中的loss函数(输入数据是softmax或者sigmoid函数的输出):
$\operatorname{los} s=-\frac{1}{n} \sum \limits_{x}[y \ln a+(1-y) \ln (1-a)]$
多分类问题中的loss函数(输入数据是softmax或者sigmoid函数的输出):
$\operatorname{loss}=-\frac{1}{n} \sum \limits_{i} y_{i} \ln a_{i}$
2> 当使用sigmoid作为激活函数的时候,常用交叉熵损失函数而不用均方误差损失函数,因为它可以完美解决平方损失函数权重更新过慢的问题,具有“误差大的时候,权重更新快;误差小的时候,权重更新慢”的良好性质。
3 常用的代价函数
3.1 均方误差(Mean Squared Error)
$M S E=\frac{1}{N} \sum \limits _{i=1}^{N}\left(y^{(i)}-f\left(x^{(i)}\right)\right)^{2}$
均方误差是指参数估计值与参数真值之差平方的期望值; MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。( $i$ 表示第 $i$ 个样本,$N$ 表示样本总数),通常用来做回归问题的代价函数。
3.2 均方根误差
$R M S E=\sqrt{\frac{1}{N} \sum \limits _{i=1}^{N}\left(y^{(i)}-f\left(x^{(i)}\right)\right)^{2}}$
均方根误差是均方误差的算术平方根,能够直观观测预测值与实际值的离散程度。
通常用来作为回归算法的性能指标。
3.3 平均绝对误差(Mean Absolute Error)
$M A E=\frac{1}{N} \sum \limits _{i=1}^{N}\left|y^{(i)}-f\left(x^{(i)}\right)\right|$
平均绝对误差是绝对误差的平均值 ,平均绝对误差能更好地反映预测值误差的实际情况。
通常用来作为回归算法的性能指标。
3.4 交叉熵代价函数(Cross Entry)
$H(p, q)=-\sum_{i=1}^{N} p\left(x^{(i)}\right) \log q\left(x^{(-i)}\right)$
交叉熵是用来评估当前训练得到的概率分布与真实分布的差异情况,减少交叉熵损失就是在提高模型的预测准确率。其中 $p(x)$ 是指真实分布的概率,$ q(x)$ 是模型通过数据计算出来的概率估计。
比如对于二分类模型的交叉熵代价函数(可参考逻辑回归一节):
$L(w, b)=-\frac{1}{N} \sum \limits _{i=1}^{N}\left(y^{(i)} \log f\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \log \left(1-f\left(x^{(i)}\right)\right)\right)$
其中 $f(x) $ 可以是sigmoid函数。或深度学习中的其它激活函数。而 $y^{(i)} \in 0,1 $ 。 通常用做分类问题的代价函数。
相关文章
- NETs相关基因构建预后模型干湿结合发12分+SCI
- 用 Minio 快速启动 Velero 实现 Kubernetes资源备份
- MySQL(1) - 用户管理及root密码修改
- Jmeter系列(40)- 详解 Jmeter 图形化 HTML 压测报告
- Jmeter系列(39)- 详解 Jmeter CLI 模式
- Jmeter系列(38)- Jmeter 分布式测试
- Jmeter系列(37)- 跨平台运行 Jmeter,CSV 文件路径设置
- Jenkins操作手册 - 巨详细,一篇足矣!
- 【JVM实战系列】「监控调优体系」实战开发arthas-spring-boot-starter监控你的微服务是否健康
- 【Spring专题】「开发指南」夯实实战基础功底之解读logback-spring.xml文件的详解实现
- 精华推荐 |【深入浅出Sentinel原理及实战】「原理探索专题」完整剖析Alibaba微服务架构体系之轻量级高可用流量控制组件Sentinel(1)
- 【深入浅出Spring原理及实战】「源码原理实战」从底层角度去分析研究PropertySourcesPlaceholderConfigurer的原理及实战注入机制
- 精华推荐 | 【深入浅出RocketMQ原理及实战】「性能原理挖掘系列」透彻剖析贯穿RocketMQ的事务性消息的底层原理并在分析其实际开发场景
- 深度剖析 | 【JVM深层系列】[HotSpotVM研究系列] JVM调优的"标准参数"的各种陷阱和坑点分析(攻克盲点及混淆点)「 1 」
- 【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析?
- 【深入浅出SpringCloud原理及实战】「SpringCloud-Alibaba系列」微服务模式搭建系统基础架构实战指南及版本规划踩坑分析
- 【秒杀购物商城业务服务】「分布式架构服务」盘点中间件服务的高可用模式及集群技术的方案分析
- 作者推荐 | 【分布式技术专题】「架构设计方案」图解学习法总结集群模式下的各种软负载均衡策略实现及原理分析
- 【分布式技术专题】「架构设计方案」盘点和总结秒杀服务的功能设计及注意事项技术体系
- Kafka技术专题之「性能调优篇」消息队列服务端出现内存溢出OOM以及相关性能调优实战分析