损失函数

我们在进行机器学习任务时,使用的每一个算法都有一个目标函数,算法便是对这个目标函数进行优化,特别是在分类或者回归任务中,便是使用损失函数(Loss Function)作为其目标函数,又称为代价函数(Cost Function)。损失函数是用来估量模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:

$J\left ( \mathbf{w} \right )=\sum_{i}L\left ( m_i\left (\mathbf{ w} \right ) \right )+\lambda R\left ( \mathbf{w} \right )$

其中,$L\left ( m_i\left (\mathbf{ w} \right ) \right )$为损失项,$R\left ( \mathbf{w} \right )$.$m_i$的具体形式如下:

$m_i=y^{\left ( i \right )}f_\mathbf{w}\left ( \mathbf{x}^{\left ( i \right )} \right )$

$y^{\left ( i \right )}\in \left \{ -1,\;1 \right \}$

$f_\mathbf{w}\left ( \mathbf{x}^{\left ( i \right )} \right )=\mathbf{w}^T\mathbf{x}^{(i)}$

常见的损失函数:

1.log对数损失函数(逻辑回归)

$L(Y,P(Y|X)) = -\log P(Y|X)$

损失函数L(Y, P(Y|X))表达的是样本X在分类Y的情况下,使概率P(Y|X)达到最大值(换言之,就是利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值;或者说什么样的参数才能使我们观测到目前这组数据的概率最大)。这种损失函数的目的是最大化预测值为真实值的概率。

逻辑回归的P(Y=y|x)表达式如下:

分类器可以表示为:

$p\left ( y\mid \mathbf{x}; \mathbf{w} \right )=\sigma \left ( \mathbf{w}^T\mathbf{x} \right )^y\left ( 1-\sigma \left ( \mathbf{w}^T\mathbf{x} \right ) \right )^{\left ( 1-y \right )}$

为了求解其中的参数w,通常使用极大似然估计的方法,具体的过程如下:

1.似然函数

$L\left ( \mathbf{w} \right )=\prod_{i=1}^{n}\sigma \left ( \mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right )^{y^{\left ( i \right )}}\left ( 1-\sigma \left ( \mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right ) \right )^{\left ( 1-y^{\left ( i \right )} \right )}$

$\sigma \left ( x \right )=\frac{1}{1+exp\left ( -x \right )}$

2.取log

$logL\left ( \mathbf{w} \right )=\sum_{i=1}^{n}y^{\left ( i \right )}log\left ( \sigma \left ( \mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right ) \right )+\left ( 1-y^{\left ( i \right )} \right )log\left ( 1-\sigma \left ( \mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right )\right )$

3.需要求解的是使得log似然取得最大值的w。将其改变为最小值

$\underset{\mathbf{w}}{min}\sum_{i=1}^{n}log\left \{ 1+exp\left ( -y^{\left ( i \right )}\mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right ) \right \}$

逻辑回归最后得到的目标式(不是最小二乘):

$J(\theta) = - \frac{1}{m} \sum_{i=1}^m \left [ y^{(i)} \log h_{\theta}(x^{(i)}) + (1-y^{(i)}) \log(1-h_{\theta}(x^{(i)})) \right ]$

2.平方损失函数(最小二乘法)

$L(Y, f(X)) = (Y - f(X))^2$

当样本个数为n时,此时的损失函数变为:

Y-f(X)表示的是残差,整个式子表示的是残差的平方和.

而在实际应用中,通常会使用均方差(MSE)作为一项衡量指标:

$MSE = \frac{1}{n} \sum_{i=1} ^{n} (\tilde{Y_i} - Y_i )^2$

最小二乘法是线性回归的一种,将问题转化成了一个凸优化问题。在线性回归中,它假设样本和噪声都服从高斯分布.

基本原则是:最优拟合直线应该是使各点到回归直线的距离和最小的直线,即平方和最小。换言之,OLS是基于距离的,而这个距离就是我们用的最多的欧几里得距离。

3.指数损失函数(Adaboost)

是0/1损失的一种近似

在Adaboost中,经过m此迭代之后,可以得到fm(x):

Adaboost每次迭代时的目的是为了找到最小化下列式子时的参数α 和G:

而指数损失函数(exp-loss)的标准形式如下:

Adaboost的目标式子就是指数损失,在给定n个样本的情况下,Adaboost的损失函数为:

4.Hinge损失函数(SVM:合页损失)

Hinge损失是0-1损失函数的一种代理函数,Hinge损失的具体形式如下:

$max\left ( 0,1-m \right )$

在线性支持向量机中,最优化问题可以等价于下列式子:

下面来对式子做个变形,令:

于是,原式就变成了:

如若取λ=1/2C,式子就可以表示成:

可以看出,该式子与下式非常相似:

前半部分中的l就是hinge损失函数,而后面相当于L2正则项。

5.0-1损失函数

6.绝对值损失函数

梯度下降法(Gradient descent)

一个一阶最优化算法,通常也称为最速下降法。 分别有梯度下降法,批梯度下降法,增量梯度下降。本质上,都是偏导数,步长/最佳学习率,更新,收敛的问题。

目的:要使用梯度下降法找到一个函数的局部极小值,(在凸函数中局部最小解就是全局最小解)

算法流程:

1.初始化θ(随机初始化)

2.迭代,新的θ能够使得J(θ)更小

3.如果J(θ)无法继续减少或者达到循环上界次数,退出

  α:学习率、步长

过程:

1.xk=a,沿着负梯度方向,移动到xk+1=b,有:

2.从x0为出发点,每次沿着当前函数梯度反方向移动一定距离αk,得到序列:

3.对应的各点函数值序列之间的关系为:

4.当n 达到一定值时,函数f(x)收敛到局部最小值:

学习率:

1.固定学习率

2.线性搜索

a.二分线性搜索

b.回溯线性搜索

牛顿法(改变搜索方向)

若f(x)二阶导连续,将f(x)在xk处Taylor展开:

牛顿法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x)=0的根。因为函数 二阶导数反应了函数的凸凹性;二阶导越大,一阶导的变化越大。用方向导数代替一阶导,用Hessian矩阵代替二阶导:

过程:

1.首先,选择一个接近函数f(x)零点的x0,计算相应的f(x0)和切线斜率f'(x0)(这里f'表示函数f的导数)。

2.然后我们计算穿过点 (x0,f(x0))并且斜率为 f'(x0)的直线和x轴的交点的x坐标,也就是求如下方程的解:

3.我们将新求得的点的x坐标命名为x1,通常x1会比x0更接近方程f(x)=0的解。因此我们现在可以利用x1开始下一轮迭代。迭代公式可化简为如下所示:

图演示:

蓝线表示方程f而红线表示切线. 可以看出xn+1比xn更靠近f所要求的根x.

牛顿法特点:

1.经典牛顿法虽然具有二次收敛性,但是要求初始点需要尽量靠近极小点,否则有可能不收敛。

2.计算过程中需要计算目标函数的二阶偏导数,难度较大。

3.目标函数的Hessian矩阵无法保持正定,会导致算法

4.产生的方向不能保证是f在xk处的下降方向,从而令牛顿法失效.

5.如果Hessian矩阵奇异,牛顿方向可能根本是不存在的。

转载于:https://www.cnblogs.com/xmeo/p/6655912.html

损失函数,梯度下降与牛顿法相关推荐

  1. 梯度下降、牛顿法凸优化、L1、L2正则化、softmax、Batchnorm、droupout、Targeted Dropout详解

    一.梯度下降 问题提出:虽然给定一个假设函数,我们能够根据cost function知道这个假设函数拟合的好不好,但是毕竟函数有这么多,总不可能一个一个试吧?因此我们引出了梯度下降:能够找出cost ...

  2. 通过梯度下降和牛顿法求解一个数的平方根

    梯度下降 梯度下降法(Gradient descent)是一个一阶最优化算法,就是让参数沿着损失函数负梯度的方向更新.迭代的步长,也就是学习率是事先给定的,如果负梯度的绝对值越大,这次更新的幅度也会越 ...

  3. GBDT与xgb区别,以及梯度下降法和牛顿法的数学推导

    为什么要介绍梯度下降法和牛顿法那? 这里提及两个算法模型GBDT和XGBoost,两个都是boosting模型. GBDT和xgb的目标函数是不同的,同时针对其目标函数中的误差函数 L(θ) 的拟合方 ...

  4. 机器学习中梯度下降法和牛顿法的比较

    在机器学习的优化问题中,梯度下降法和牛顿法是常用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解.在逻辑斯蒂回归模型的参数求解中,一般用改良的梯度下降法,也可以用牛顿法.由于两种方法有些相似 ...

  5. python牛顿法寻找极值_python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例...

    Rosenbrock函数的定义如下: 其函数图像如下: 我分别使用梯度下降法和牛顿法做了寻找Rosenbrock函数的实验. 梯度下降 梯度下降的更新公式: 图中蓝色的点为起点,橙色的曲线(实际上是折 ...

  6. “随机梯度下降、牛顿法、动量法、Nesterov、AdaGrad、RMSprop、Adam”

    "随机梯度下降.牛顿法.动量法.Nesterov.AdaGrad.RMSprop.Adam" 随机梯度下降法 牛顿法 动量法 Nesterov 学习率应该慢慢减小的. AdaGra ...

  7. 梯度下降法和牛顿法计算开根号

    梯度下降法和牛顿法计算开根号 本文将介绍如何不调包,只能使用加减乘除法实现对根号x的求解.主要介绍梯度下降和牛顿法者两种方法,并给出 C++ 实现. 梯度下降法 思路/步骤 转化问题,将 x \sqr ...

  8. 关于梯度下降法和牛顿法的数学推导

    作者:LogM 本文原载于 https://blog.csdn.net/qq_28739605/article/details/80862810,不允许转载~ 文章难免有错误之处,请在原文评论处指出~ ...

  9. 梯度下降、牛顿法、拟牛顿法

    介绍 在向量微积分中,标量场的梯度是一个向量场.标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率.更严格的说,从欧几里得空间Rn到R的函数的梯度是在Rn某一点最佳的线性近似 ...

最新文章

  1. 十分钟了解分布式计算:GraphX
  2. Python导入模块(包)的两种方式 TypeError: 'module' object is not callable
  3. jmeter命令行压测
  4. oracle database 12cr2 使用 dbms_stat 采集统计信息
  5. 前端学习(1431):ajax封装六
  6. 斐波那契数列 C++ 实现代码
  7. 一次性医用外科手套行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  8. Qt总结之十八:总结
  9. iOS取证将如漫漫长夜
  10. delegate(转)
  11. Python:暴力破解密码
  12. linux中安装微信开发者工具
  13. 解决vue报错:Avoided redundant navigation to current location
  14. Python读写Excel文件-1
  15. 科腾Joystick手柄连接ROS
  16. MP-2平面烟雾气体传感器介绍
  17. [分享] 揭开美国顶尖生物医学实验室成功的法宝--转
  18. #HTTP协议学习# (十)拓展-HTTPS协议
  19. -1和255有什么区别?
  20. LOST.DIR文件夹中意外丢失文件的恢复方法

热门文章

  1. Asp.net2.0:如何使用ObjectDataSource
  2. 通过显示当前 python 程序占用的内存大小来比较生成器和迭代器(转载)
  3. CrudRepository/JpaRepository/PagingAndSortingRepository之间的区别
  4. wine应用运行后字体都是问号
  5. Ubuntu20.04开机界面(boot animation)改成Windows95
  6. django-allauth定制模板(转载)
  7. 深度学习(三十七)——CenterNet, Anchor-Free, NN Quantization
  8. Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)
  9. bzoj5252 [2018多省省队联测]林克卡特树
  10. [李景山php]每天TP5-20170111|thinkphp5-Model.php-4