以色列理工暑期学习-机器学习中Loss函数的小结

2023-10-24 22:50

本文主要是介绍以色列理工暑期学习-机器学习中Loss函数的小结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

机器学习作为一种优化方法,最重要的一点是找到优化的目标函数——损失函数和正则项的组合;有了目标函数的“正确的打开方式”,才能通过合适的机器学习算法求解优化。

通俗来讲Loss函数是一种关于fitness的测度(关于数据是否合适模型的匹配度),或者是对于预测是否准确的一种判断,如果预测和判断没有错误,则损失函数的值为0;如果有错误则会进行一些“惩罚”措施,也可以称之为代价(风险)函数。借助文献中的原话:“the loss function measures “how bad” the mistake is. The loss can be interpreted as a penalty or error measure.”回到最开始的机器学习的问题上,对于机器学习一般会包含以下五个部分:

  1. 假设空间:如在线性回归、逻辑回归以及SVM中的参数

  2. 测度函数:最大似然或最小损失

  3. 是否有偏和方差的权衡:正则项或MAP最大后验估计

  4. 在假设空间中找到一个好的假设模型:优化模型、全局凸模型等

  5. 验证模型:在测试数据上实现预测,进行交叉验证

    通常我们定义Loss function如下:

图1 优化目标:损失函数+正则项

通常我们的误差函数包含以下五种:

  1. 黄金标准损失即 0-1 loss(在理想状态下的判别:下图中蓝色线)

  2. 铰链函数即 hinge loss(用于SVM中soft margin情况:下图中红色线)

  3. 对数函数即 log loss(用于逻辑回归、交叉熵损失:下图中黄色线)

  4. 平方损失即 square loss(用于线性回归:下图中黑色线)

  5. 指数损失即 exponential loss(用于boost情况:下图中绿色线)


下面我们来一一解释这些loss函数:

1. 0-1 Loss作为最为基本的分类器的评价函数,对于错误分类结果的一种计数,比较好理解:


这里需要引用参考文献的原文说明一点:

“The cost function induced by the 0-1-loss is the average misclassification error and the cost function induced by the squared loss is the mean squared error (MSE).

However, there are cost functions which cannot be decomposed using a loss function. For example, the area under the curve (AUC). In other words, all loss functions generate a cost function, but not all cost functions must be based on a loss function.“

cost函数可以归结为0-1Loss平均误分类的误差或由square损失的均方误差(最小二乘法推演);可能在一些问题上有所区分。

2. Hinge Loss作为SVM推导的损失函数去逼近0-1 Loss;很明显可以看出0-1是理想情况下的损失函数显式表达,SVM在感知机(Perceptron)的基础上,通过最大化分类边界(max margin)去进行分类;

然而对于不可分的情况下,引入soft margin,加入松弛,允许分类数据存在异常点:


所以SVM参数中,最重要的就是求解C和hinge loss,不同的情况下soft margin是不一样的,有待优化。所以最终的hinge loss的形式才会变成:

这样的近似对于优化来讲,就可以用一些凸优化的方法,第一项正则项为凸,hinge loss也是凸函数:

3. Log Loss看形式我们基本可以猜测是从概率的方向得到的;看过经典斯坦福的ML课程的同学都知道,先是讲 linear regression 然后引出最小二乘误差,之后概率角度高斯分布解释最小误差。然后讲逻辑回归,使用MLE来引出优化目标是使得所见到的训练数据出现概率最大。

如果我们在逻辑回归模型中,利用逻辑回归sigma函数,带入判别参数,求出最大似然估计式,其对应的就是我们的最小化的交叉熵函数。关于交叉熵与KL divergence关系,读者可以自行查找资料验证。

4. Square Loss就是这里大家最为熟知的最小二乘法在线性回归中的推导,最小二乘法是线性回归的一种,OLS将问题转化为一个凸优化的问题,假设样本和噪声满足高斯分布,最后通过极大似然推导出最小二乘,将样本点到拟合最优的回归线的距离最小,即残差最小化。

5. Exponential Loss 指数损失可能会有些陌生,形式如下:

用在boosting机制中,本公众号的经典算法文章中有关于boosting的介绍。可以作为补充阅读。


其实简明来讲就是通过弱分类器投票进行强分类器的合成,优势有很多,比如,序列性迭代决策,分类函数线介于square和log,对于过拟合的情况不必担心,但是计算量会较大。在学习boosting的过程中,会发现通过弱分类器发现的错误的会被逐渐削弱,弱分类器在已有分类器分出的错误空间上不断切割(分类空间),如图:

上图中,关于迭代停止条件,因为弱分类器的定义就是分类判别概率小于0.5,就像一枚硬币一样。大家应该会比较疑惑,关于参数是怎么得到的,然后去更新每一个弱分类器的权重,下图会根据定理求出上边界

参数a表示分类误差率越小的基本分类器在最终分类器中的作用越大。参考文献【5】中,July在博文中推导了,作为加法模型的指数损失函数的原型:向前分步学习算法的损失函数证明为指数形式,下图中,在做相关公式推导的过程中,也是比较直接的通过已经在算法中设定好的指数形式loss函数,根据最小化函数目标,求导得出a的参数值。

当然,现实情景中的损失函数可以进行自定义,但是需要考虑数据本身和未来通过什么优化的方法去求解更为方便。而且在真正的优化函数中会涉及到正则项,对于特征筛选和防止过拟合问题也是十分关键。需要各位读者认真领会Loss函数和正则项的意义才能更好地设计出符合实际的优化目标函数。

参考文献:

【1】https://www.youtube.com/watch?v=BsqqMVjzxCY

【2】https://github.com/JohnLangford/vowpal_wabbit/wiki/Loss-functions

【3】http://image.diku.dk/shark/sphinx_pages/build/html/rest_sources/tutorials/concepts/library_design/losses.html

【4】http://www.cs.cmu.edu/~yandongl/loss.html

【5】http://blog.csdn.net/v_july_v/article/details/40718799

这篇关于以色列理工暑期学习-机器学习中Loss函数的小结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/278289

相关文章

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一