zoukankan      html  css  js  c++  java
  • 损失函数,梯度下降与牛顿法

    损失函数

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

    $Jleft ( mathbf{w} ight )=sum_{i}Lleft ( m_ileft (mathbf{ w} ight ) ight )+lambda Rleft ( mathbf{w} ight )$

    其中,$Lleft ( m_ileft (mathbf{ w} ight ) ight )$为损失项,$Rleft ( mathbf{w} ight )$.$m_i$的具体形式如下:

    $m_i=y^{left ( i ight )}f_mathbf{w}left ( mathbf{x}^{left ( i ight )} ight )$

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

    $f_mathbf{w}left ( mathbf{x}^{left ( i ight )} ight )=mathbf{w}^Tmathbf{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)表达式如下:

    分类器可以表示为:

    $pleft ( ymid mathbf{x}; mathbf{w} ight )=sigma left ( mathbf{w}^Tmathbf{x} ight )^yleft ( 1-sigma left ( mathbf{w}^Tmathbf{x} ight ) ight )^{left ( 1-y ight )}$

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

    1.似然函数

    $Lleft ( mathbf{w} ight )=prod_{i=1}^{n}sigma left ( mathbf{w}^Tmathbf{x}^{left ( i ight )} ight )^{y^{left ( i ight )}}left ( 1-sigma left ( mathbf{w}^Tmathbf{x}^{left ( i ight )} ight ) ight )^{left ( 1-y^{left ( i ight )} ight )}$

    $sigma left ( x ight )=frac{1}{1+expleft ( -x ight )}$

    2.取log

    $logLleft ( mathbf{w} ight )=sum_{i=1}^{n}y^{left ( i ight )}logleft ( sigma left ( mathbf{w}^Tmathbf{x}^{left ( i ight )} ight ) ight )+left ( 1-y^{left ( i ight )} ight )logleft ( 1-sigma left ( mathbf{w}^Tmathbf{x}^{left ( i ight )} ight ) ight )$

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

    $underset{mathbf{w}}{min}sum_{i=1}^{n}logleft { 1+expleft ( -y^{left ( i ight )}mathbf{w}^Tmathbf{x}^{left ( i ight )} ight ) ight }$

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

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

     

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

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

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

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

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

    $MSE = frac{1}{n} sum_{i=1} ^{n} ( ilde{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损失的具体形式如下:

    $maxleft ( 0,1-m ight )$

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

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

    于是,原式就变成了:

    如若取λ=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矩阵奇异,牛顿方向可能根本是不存在的。

  • 相关阅读:
    线程学习笔记
    mac系统在配置navicat时连接数据的时候提示can't connect to mysql server on '127.0.0.1'
    启动apache 提示Starting httpd: AH00558
    使用block的时候,导致的内存泄漏
    如何调整cell的大小
    代码控制打电话、发短信、发邮件、打开手机app等操作
    汇编学习--第九天
    汇编学习--第八天
    原码一位乘法与补码一位乘法
    定点整数的加减法
  • 原文地址:https://www.cnblogs.com/xmeo/p/6655912.html
Copyright © 2011-2022 走看看