损失函数,梯度下降与牛顿法

损失函数

我们在进行机器学习任务时,使用的每一个算法都有一个目标函数,算法便是对这个目标函数进行优化,特别是在分类或者回归任务中,便是使用损失函数(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值