博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【机器学习】梯度下降法的相关介绍
阅读量:4470 次
发布时间:2019-06-08

本文共 1381 字,大约阅读时间需要 4 分钟。

我们考虑一个代价函数C,这个函数可以将一个参数向量θ映射到一个标量C(θ)上,现在,我们要最小化C(θ)。在机器学习中,这个代价函数通常是损失函数的平均值或者期望值:

C(θ)=1ni=1nL(fθ,zi)
(这个数值被称为训练损失)或者
C(θ)=L(fθ,z)P(z)dz
(这个数值被称为泛化损失)。其中在监督学习中,我们有
z=(x,y)
fθ(x)是参数为
θ
y的预测值。


梯度

函数C关于标量θ的梯度,定义如下形式:

C(θ)θ=limδθ0C(θ+δθ)C(θ)δθ
这代表的是,变化
θ引起的函数的变化
C,其中
θ是一个非常小的值。
θ是一个向量,则梯度
C(θ)θ也是一个向量,其中每个元素是关于
θi
C(θ)θi,其中假设其他参数是固定的,仅仅改变
θi并测量函数的变化量
C。当
θi很小的时候,
Cθi变为了
C(θ)θi


梯度下降法

我们希望找到一个θ以最小化C(θ)的值。我们可以对其求导:

C(θ)θ=0
然后我们找到最小值点(最大值点和马鞍点),但是通常我们找不到这个方程的解析解。所以我们要使用数值最优化方法。多数的最优化方法是基于
局部下降的:通过对
θ的迭代调整,减少
C(θ)的值,直到数值不能继续下降。最终我们可以找到一个局部极小点(幸运地话,可以找到全局极小点)。
在基于梯度的优化方法中,最简单的方法是梯度下降法。它存在很多变型形式,我们先定义
最原始的梯度下降
θk+1=θkεkC(θk)θk
其中,
θk代表第
k次迭代的参数,
εk是一个标量,我们称为
学习率(learning rate),选取这个值是,我们可以固定、自适应或者根据一个下降方案选择。


随机梯度下降

我们可以发现C的公式是一个平均值,是在独立同分布(i.i.d)的样本集上的。为了更快的迭代θ,我们舍去精确的计算,而采用一个样本:

θk+1=θkεkL(θk,z)θk
其中,z是训练集的下一个样本,或者在
在线设定中(没有固定的训练样本数,但是存在连续不断的样本流)是训练分布的下一个采样的样本。随机梯度下降法(SGD)其实更加通用,它的更新方向是一个随机变量,这个随机变量的期望是真实的梯度下降方向。SGD除了它随机性的增长以外,收敛条件和其他的梯度下降法相同。
SGD比原始的梯度下降法具有更快的速度,因为它更新的速度很快。特别是在大数据集的情况下,或者对于在线设定。其实,对于机器学习任务而言,只有在最优化函数不能分解时,才使用传统的梯度下降法。


批量梯度下降法

批量梯度下降法是SGD的一个变型,它使用一小批(B个,例如20或者100个)样本的平均值来获得下降方向。最大的好处在于,可以不使用B维向量乘以一个矩阵,而使用一个矩阵乘以一个矩阵,其中第一个矩阵有B行。这样使得算法更加有效,有时速度可以快2到10倍,但取决于矩阵的大小。

批量梯度下降法的一个好处,在于可以减小梯度估计中的噪声成分(B越大越明显)。然而,由于B的增大,更新的速度会逐渐下降,最终变得没有效率。所以,我们要在“计算效率“和“函数精确性“之间作一次折衷,选取合适的B值大小。


转载于:https://www.cnblogs.com/lixuebin/p/10814851.html

你可能感兴趣的文章
HDU 1199 - Color the Ball 离散化
查看>>
[SCOI2005]骑士精神
查看>>
Hibernate原理解析-Hibernate中实体的状态
查看>>
六时车主 App 隐私政策
查看>>
C语言常见问题 如何用Visual Studio编写C语言程序测试
查看>>
Web用户的身份验证及WebApi权限验证流程的设计和实现
查看>>
hdu 2098 分拆素数和
查看>>
ECMAScript6-let与const命令详解
查看>>
iOS 使用系统相机、相册显示中文
查看>>
什么是敏捷设计
查看>>
.NET中栈和堆的比较
查看>>
【莫队】bzoj 3781,bzoj 2038,bzoj 3289
查看>>
如何优化limit
查看>>
几种常用数据库字段类型查询语句
查看>>
提高效率必须改掉的7种习惯
查看>>
Java判断语句中判断条件的执行顺序
查看>>
Windows平台下tomcat+java的web程序持续占cpu问题调试
查看>>
OO第四次博客作业!
查看>>
HDU 吉哥系列故事——完美队形II 騰訊馬拉松初賽第二輪D題
查看>>
[转]SQL Server 性能调优(io)
查看>>