【机器学习】目标函数总结-程序员宅基地

技术标签: 聚类  算法  机器学习  


一、为什么需要目标函数?

几乎所有的机器学习算法最后都归结为求解最优化问题,以达到我们想让算法达到的目标。
为了完成某一目标,需要构造出一个目标函数来,然后让该函数取极大值或极小值(也就是优化),从而得到机器学习算法的模型参数。

如何构造出一个合理的目标函数,是建立机器学习算法的关键,一旦目标函数确定,接下来就是求解最优化问题,这在数学上一般有现成的方案。

下面我们将介绍机器学习中一些典型的目标函数的构造思路。


二、机器学习算法分类

一般而言,不同的机器学习算法有不同的目标函数。我们先来看看有哪些ML算法。

按照用途和要解决的问题,机器学习算法可以分为有监督学习,无监督学习,强化学习3种类型。
其中,有监督学习又进一步细分为分类问题与回归问题,无监督学习算法分为聚类问题和数据降维问题。
概括起来,各类算法要解决的核心问题是:

分类算法 是什么
回归算法 是多少
聚类算法 怎么分
数据降维 怎么压
强化学习 怎么做

各种机器学习算法的目的:

  1. 对于有监督学习中的分类问题与回归问题,机器学习算法寻找一个映射函数:

    为输入的样本数据预测出一个实数值或类别标签。
    不同的是,分类问题要确定样本的类别,即回答“是什么”的问题;回归问题要预测出一个实数值,即回答“是多少”的问题。
    例如,如果要确定一张图像是猫还是狗,则为分类问题,算法的输入为图像,输出为类别编号。如果我们要根据一个人的年龄、学历、行业等信息预测他/她的收入,则属于回归问题。二者都是要确定上面这种形式的函数。

  2. 对于无监督学习聚类问题,机器学习算法要寻找一个集合的划分,将样本集D划分成多个不相交的子集:

    每个样本属于这些子集中的一个,因此可以概括为解决 “怎么分的问题” ,与分类问题不同的是,这里没有人工事先定义好的类别,因此也没有训练过程。例如,如果要将一批新闻划分为不同类型的,就属于聚类问题,这里没有实现定义好的类,算法自己完成划分,这些类可能是政治、体育、娱乐、经济、军事等。

  3. 对于数据降维问题,机器学习算法要寻找一个映射函数,将一个高维向量映射成一个低维向量:

    但要尽可能的保留之前向量的一些重要信息。

  4. 对于强化学习,机器学习算法要为每种状态s下确定一个动作a来执行,即确定策略函数,使得执行这些动作之后得到我们预期的结果:

    执行动作后会得到奖励,这个预期的结果是让奖励最大化。例如,用强化学习来实现自动驾驶,要根据当前的路况来决定怎么开车,这里的路况就是状态,开车就是动作,通过控制汽车去我们想去的目的地,这就是目标。

上面这些算法要完成的目标是一个抽象的概念,具体实现时,要通过一个“目标函数”来体现,算法要通过让目标函数取极大值或极小值来确定模型的参数。

三、有监督学习的目标函数

概述

首先来看有监督学习,要确定一个映射函数,这个函数带有参数,而参数则通过训练样学习得到。假设映射函数为:

其中θ是模型的参数,如何确定它的值,是训练算法的核心。
一般来说,我们称有监督学习的目标函数为 “损失函数” ,它通过模型对每个训练样本x的预测值y与训练样本的真正标签值y来构造。其含义是,如果算法预测错了,则有损失,因此该函数反映了映射函数的预测值与样本真实标签值之间的误差。让误差最小化,就是让损失函数最小化:

其中L为训练样本数,(xi,yi),i=1,…,L为训练样本。样本的特征向量以及标签值此时是已知的,目标函数的未知数是模型的参数θ。

某些有监督的机器学习算法拟合的是概率密度函数或者某一概率分布,此时需要根据样本来确定概率分布的参数。
在学习概率论与数理统计时我们知道,确定一个概率分布的参数最常用的是最大似然估计,它求解如下的似然函数最大化问题:

求解函数极值时需要对参数求导,这种连乘形式的函数求导不方便,因此对似然函数取对数,得到对数似然函数

这类问题的核心是根据一组样本来估计概率分布的参数,使得在参数θ取最优值的时候,这组样本出现的概率最大。下面针对分类问题和回归问题,分别总结常用的目标函数。

1. 分类问题

对于分类问题,预测函数的输出值是离散化的类别标签。给定一组训练样本,在训练时的目标是让这组训练样本尽量被正确的分类,这对应于经验风险最小化的思想。

  1. 感知器算法的是最简单的线性分类器,它的目标是让所有样本尽可能分类。对于二分类问题,线性分类器的判别函数为:

    sgn(x)是符号函数,若x>0,则sgnx=1;若x=0,则sgnx= 0;若x<0,则sgnx=-1。
    样本的标签值为+1或-1,分别对应正样本和负样本。
    如果线性函数预测出来的值和样本的真实标签值异号,则预测错误;如果同号,则预测正确。要将预测错误最小化,只需求解如下最优化问题即可:

    如果我们把上式的最后一项想成已经经过sgn处理:那么和前面的yi,若同号则相乘结果为1,异号则相乘结果为-1。加个负号使得同号(预测正确)则结果为-1(损失函数减小),异号(预测错误)则结果为1(损失函数增大)。
    但式子中没有经过sgn处理,就是本身的计算值:那么,对于每个训练样本,如果预测正确,则损失函数为负,否则为正。这样我们就构造出了一个容易求解的损失函数。
    对于二分类或多分类问题,都可以用欧氏距离作为分类的损失函数。
    对于多分类问题,一般不直接用类别编号作为预测值,而是为类别进行向量化编码,如one-hot编码。此时损失函数定义为:

    在人工神经网络发展的 早期 ,这种函数被广泛使用,但后来对于多分类问题,更多的采用交叉熵损失函数

  2. 线性判别分析(LDA) 是一种有监督的数据降维算法,它的目标是最大化类间差异,最小化类内差异。数据经过投影之后,在低维空间里,同类样本聚集在一起,不同类的样本相距尽可能远。类内差异用每个类的方差来衡量,类间差异用各个类的类中心之间的距离来衡量,二者的比值为我们要优化的目标。由此构造出如下损失函数:

    求解这一问题最后归结为求解矩阵的特征值问题。

  3. 支持向量机
    前面介绍的感知器算法的目标函数,欧氏距离损失,代表的都是经验风险,即在训练样本集上让误差最小化。这样做的泛化性能不一定好,还有一种做法为结构化风险最小化,典型代表是支持向量机。
    支持向量机不仅要让所有训练样本尽可能被正确分类,还要让分类间隔最大化,根据解析几何中点到超平面的距离公式,我们构造出了它的优化目标:

    这个优化问题还带有不等式约束。
    我们可以从另一个角度解释支持向量机的优化目标函数,即合页损失函数。合页损失函数定义为:

    其意义为当:

    即当样本的间隔大于1时:

    该样本的损失是0;否则样本的损失是1- yiwTxi。此时是一个正的损失。采用合页损失函数,SVM训练时优化的目标为:

    这和前面一种表述是等价的。此时,目标函数的前半部分充当正则化项,后半部分充当真正的损失函数,用于对违反约束的样本进行惩罚。
    前面说过,对于输出概率值的模型,可以采用最大似然估计来估计模型的参数。典型的代表是logistic回归。对于二分类问题,如果样本的类别标签值为1和0,则对数似然函数为:

  4. 将logistic回归推广到多分类问题,即softmax回归,它输出一个样本属于每个类的概率值。因此,训练样本的标签值为一个向量,如果样本属于某一类,该分量为1,其他分量为0。损失函数根据标签向量与预测出的概率向量构造,使用的是softmax交叉熵,定义为:

    交叉熵损失定义为:

    它在深度神经网络中被广泛使用。

  5. AdaBoost算法训练时优化的目标函数为指数损失函数,它根据强分类器的输出值F(x)与样本的标签值构造:

    在这里,样本的标签值为-1或+1,对应于负样本和正样本。强分类器通过加法模型构造,求解时每次优化一个弱分类器和它的权重。

  6. 神经网络尤其是深度学习中使用的损失函数种类繁多,除了传统的欧氏距离之外,还有近几年流行的交叉熵,以及其他函数,下表列出了常用的一些损失函数以及它们的导数:
    在这里插入图片描述
    在这里,求导是对神经网络的预测数据进行的。损失层是神经网络训练时的最后一层,它也只用于训练阶段。在实现反向传播算法时,它是梯度反向传播的起点。

需要说明的是,对前面介绍的很多损失函数,我们都可以加上正则化项,得到新的损失函数,以减轻过拟合。

2. 回归问题

回归问题直接预测出所需要的函数值。最常用的是欧氏距离损失,它直接反映预测值与真实值之间的误差:

除此之外,还有其他的函数可以考虑,如接下来要介绍的L1光滑的损失函数。如果预测函数是线性函数,则为线性回归,这是最简单的回归算法,其损失函数为:

如果加上L1和L2正则化项,则分别得到LASSO回归和岭回归。

3. 数据生成模型

数据生成模型生成符合某种分布的随机数,而我们并不知道这种随机数服从何种概率分布,因此无法写成概率密度函数的表达式来。
生成对抗网络是深度生成模型的典型代表。
生成对抗网络由一个生成模型与一个判别模型构成,前者先用样本进行学习,然后可以生成和真实样本服从相同分布的样本数据。后者对生成模型生成的样本以及真实样本进行判定,确定一个样本是生成的还是真实的。
训练的目标是,生成模型要尽可能的欺骗判别模型,即让判别模型把自己生成的样本判定为真实样本;判别模型的目标是准确的区分出真实样本和生成的样本,尽可能的把生成模型产生的模型鉴别处理,即判定为假。由此构造出如下的目标函数:
在这里插入图片描述
目标函数由两部分构成。后半部分只用于生成模型(要让生成模型产生的样本尽可能被判别模型判定为真,即让D(G(z))尽可能接近于1,即让目标函数取极小值。整个目标函数都用于判别模型,前半部分要让判别模型将真实样本尽量判别为真,后半部分要让判别模型将生成样本尽量判别为假,即让目标函数取极大值,这类似于分类问题的交叉熵。
关于生成对抗网络更详细的解释请参见我的另一篇文章:【机器学习】生成对抗网络 GAN

四、无监督学习的目标函数

无监督学习分为聚类问题与数据降维问题两种类型,它们优化的目标完全不同,下面分别进行介绍。

1. 聚类

聚类算法将一组样本划分成多个类,确保同一类中的样本差异尽可能小,而不同类的样本之间尽量不同。可以基于这一思想构造损失函数:

其含义是每一类样本距离它的类中心要近,可以理解为这类似于每个类的方差。所有类的方差之和要尽可能小。这就是k均值算法要优化的目标。

2. 数据降维

数据降维算法要确保将向量投影到低维空间之后,仍然尽可能的保留之前的一些信息,至于这些信息是什么,有各种不同理解,由此诞生了各种不同的降维算法。

  1. 主成分分析的优化目标是最小化重构误差,即用投影到低维空间中的向量近似重构原始向量,二者之间的误差要尽可能的小。最小化重构误差的目标为:

    这里有附带约束条件,即投影的基向量ej之间要相互正交。

  2. 类似的,自动编码器也采用了这一思想。自动编码器是一种特殊的神经网络,由编码器和解码器两部分构成。前者对输入数据进行映射,得到编码后的向量;后者对编码后的向量进行重构,恢复出原始向量。解码器只在训练时使用,训练完成之后,只需要编码器这一部分,用于对输入数据进行降维或特征提取。其训练时的目标函数为:

    即神经网络训练时的标签值和输入向量值相同。这和PCA非常类似,不同的是神经网络的映射是非线性的。

  3. 某些非线性降维算法如流形学习,采用了更复杂的目标函数。以等距映射为例,它采用了测地距离来构造损失函数,投影到低维空间之后,要保持这种距离信息,由此得到优化目标函数为:

五、强化学习

不同于有监督学习和无监督学习,强化学习的目的是寻找出一个策略函数,使得在每种状态下,按照该函数确定的动作执行,最后得到的累计回报最大化。之所以要计算累计回报是因为执行完一个动作之后要进入一个新的状态,在这个新的状态下又要执行动作。这里的累计回报用状态价值函数或者动作价值函数来定义,这是递归的定义。

状态价值函数的自变量为状态以及策略函数,定义为在一个状态s下按照策略π来确定动作执行,最后得到的累计回报值:

如果使用状态价值函数,强化学习要求解所有状态下的状态价值函数最大化问题:

由于各个状态之间存在关联,因此求解算法不同于其他机器学习算法。


参考链接

  1. 机器学习中的目标函数总结
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44211968/article/details/121002688

智能推荐

BP-1-3 Introduction of C++_in c++, a legal identifier may contain these kinds-程序员宅基地

文章浏览阅读115次。Chapter 01 Introduction of Programming3. Introduction of C++A C++ program must have a function named main defined in only one source document.3.1 Lexer in C++symbol setlettersnumbersspecial characterswordIdentifier is composed of letter_in c++, a legal identifier may contain these kinds of characters:

Http重定向https MPM模块 HTTPd常见配置 sendfile 20190227-程序员宅基地

文章浏览阅读3.4k次。Web访问响应模型(Web I/O)单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应多进程I/O模型:并行启动多个进程,每个进程响应一个连接请求复用I/O结构:启动一个进程,同时响应N个连接请求实现方法:多线程模型和事件驱动多线程模型:一个进程生成N个线程,每线程响应一个连接请求事件驱动:一个进程处理N个请求复用的多进程I/O模型:启动M个进程,每个进程响应N个连..._httpd启动需要什么pam模块

vue解决 vue-style-loader ,css-loader错误_!!vue-style-loader!css-loader-程序员宅基地

文章浏览阅读4.2k次。最近在学习vue框架,使用webpack打包vue项目,在执行npm run start的时候 出现如下错误:This dependency was not found:* !!vue-style-loader!css-loader?{"minimize":false,"sourceMap":false}!../../node_modules/vue-loader/lib/style-co..._!!vue-style-loader!css-loader

工业相机的接口选择及比较_相机接口中,传输距离最远的是-程序员宅基地

文章浏览阅读2k次。​在了解工业相机接口之前,让我们大概先了解一下什么是工业相机,一般对工业相机的定义大概是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成有序的电信号。选择合适的相机也是机器视觉系统设计中的重要环节,相机的选择不仅直接决定所采集到的图像分辨率、图像质量等,同时也与整个系统的运行模式直接相关。因为没有一个标准的命名,所以工业相机还被称作工业摄像头、工业摄像机、工业照相机等等。从其芯类型中..._相机接口中,传输距离最远的是

关于在ubuntu常用的一些代码_ubuntu的二级文件系统登录界面代码-程序员宅基地

文章浏览阅读483次。注:最近自己搞了一台谷歌云服务器,自己要试着搭建内网穿透,用到了一些ubuntu的操作语言,先记录下,以后再补充1.切换到最高权限用户 sudo su2.切换目录 - cd #切换到根目录 - cd /root #切换到根目录下的root文件夹 - cd .. #返回到当前目录的上级目录3.查看当前目录下的所有文件 - ls -a #查看所有文件 - ls -a..._ubuntu的二级文件系统登录界面代码

文件修改的基本步骤_改文件-程序员宅基地

文章浏览阅读588次,点赞4次,收藏4次。文件修改的基本步骤Python_改文件

随便推点

Asp.net Mvc 使用EF6 code first 方式连接MySQL总结-程序员宅基地

文章浏览阅读121次。最近由于服务器变更为Linux系统.MsSql for Linux什么时候出来到生产环境使用还是要很长时间的.于是考虑使用Mysql数据库,ORM使用EF.于是先踩下坑顺便记录一下,有需要的tx可以参考下.当你考虑使用EF连接Mysql的时候肯定是已经在网上搜了一堆教程.网上教程基本都是使用控制台做演示.跟着一步步来姿势没错的话可能会正常运行,但项目中使用分层后,把数据层剥离出去,再使用..._mvc6使用ef code

android中popupwindow弹出后,屏幕背景变成半透明_andorid popupwindow弹出后背景-程序员宅基地

文章浏览阅读1k次。android中popupwindow弹出后,屏幕背景变成半透明这个效果很普通。实现的方法也很多。我使用的可能是最简单的一种,就是设置一下getWindows的透明度。不多说上代码/** * 设置添加屏幕的背景透明度 * @param bgAlpha */ public void backgroundAlpha(float bgAlpha) { WindowManager._andorid popupwindow弹出后背景

Backup And Recovery User's Guide-为完全数据库恢复做准备-确定数据库的DBID-程序员宅基地

文章浏览阅读72次。确定数据库的DBID 当需要恢复服务器参数文件或控制文件时,必须知道DBID。应该将DBID和其它数据库基本信息记录在一起。 如果没有数据库的DBID的记录,则可以在不打开数据库的情况下在下面的..._在应用备份恢复时,必须知道目标数据库的dbid

solr <一>用 Java客户端 建索引+分页查询_java 利用solr搜索引擎客户端如何创建索引-程序员宅基地

文章浏览阅读1.8k次。在 solr 3.5 配置及应用(一) 讲过一了 solr 3.5的详细配置,本节我们讲利用solr 的客户端调用solr的应用了!一、利用SolrJ操作solr API 使用SolrJ操作Solr会比利用httpClient来操作Solr要简单。SolrJ是封装了httpClient方法,来操作solr的API的。SolrJ底层还是通过使用httpClient中的方法来完_java 利用solr搜索引擎客户端如何创建索引

sent2vec-程序员宅基地

文章浏览阅读1k次。环境配置EmbedRank在标准数据集上实现了比基于图形的最先进系统更高的F分数,适用于实时处理大量Web数据。利用EmbedRank,我们还为新短语引入了基于嵌入的最大边际相关性(MMR),从而显式地增加了所选关键词的覆盖率和多样性。一项包括200多张选票的用户研究表明,虽然减少短语的语义重叠不会导致F分的增加,但我们的高度多样性选择是人类更喜欢的。保证了关键词的两个最具挑战性的性质:由候选短语与整个文档的嵌入距离获得的信息性;由候选短语之间的距离表示的多样性。文章目录环境配置相关信息装置本_sent2vec

Pycharm使用技巧(转载)-程序员宅基地

文章浏览阅读305次。Pycharm使用技巧(转载)转载自:http://www.cnblogs.com/cloudtj/articles/5980666.htmlpycharm使用技巧https://python.freelycode.com/contribution/detail/29https://python.freelycode.com/contribution/detail..._pycharm映射的web路径是指什么