【机器学习】目标函数总结


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

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

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

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


二、机器学习算法分类

一般而言,不同的机器学习算法有不同的目标函数。我们先来看看有哪些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. 机器学习中的目标函数总结
  • 10
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值