博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用SGD(Stochastic Gradient Descent)进行大规模机器学习
阅读量:7000 次
发布时间:2019-06-27

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

原贴地址: 

其它参考资料:

 

1. 基于梯度下降的学习 

      对于一个简单的机器学习算法,每一个样本包含了一个(x,y)对,其中一个输入x和一个数值输出y。我们考虑损失函数,它描述了预测值和实际值y之间的损失。预测值是我们选择从一函数族F中选择一个以w为参数的函数的到的预测结果。

我们的目标是寻找这样的函数,能够在训练集中最小化平均损失函数 :

由于我们不知道数据的真实分布,所以我们通常使用 
来代替 
经验风险用来衡量训练集合的效果。期望风险E(f)描述了泛化(generation)的效果,预测未知样例的能力。 
如果函数族F进行足够的限制(sufficiently restrictive ),统计机器学习理论使用经验风险来代替期望风险。 
1.1 梯度下降 
我们经常使用梯度下降(GD)的方式来最小化期望风险,每一次迭代,基于更新权重w: 
,为学习率,如果选择恰当,初始值选择合适,这个算法能够满足线性的收敛。也就是:,其中表示残余误差(residual error)。 
基于二阶梯度的比较出名的算法是牛顿法,牛顿法可以达到二次函数的收敛。如果代价函数是二次的,矩阵是确定的,那么这个算法可以一次迭代达到最优值。如果足够平滑的话,。但是计算需要计算偏导hession矩阵,对于高维,时间和空间消耗都是非常大的,所以通常采用近似的算法,来避免直接计算hession矩阵,比如BFGS,L-BFGS。

1.2 随机梯度下降 
SGD是一个重要的简化,每一次迭代中,梯度的估计并不是精确的计算,而是基于随即选取的一个样例: 
随机过程
依赖于每次迭代时随即选择的样例,尽管这个简化的过程引入了一些噪音,但是我们希望他的表现能够和GD的方式一样。 
随机算法不需要记录哪些样例已经在前面的迭代过程中被访问过,有时候随机梯度下降能够直接优化期望风险,因为样例可能是随机从真正的分布中选取的。 
随机梯度算法的收敛性已经在随机近似算法的论文所讨论。收敛性要满足: 
并且
二阶随机梯度下降: 
这种方法并没有减少噪音,也不会对计算有太大改进。 
1.3 随即梯度的一些例子 
下面列了一些比较经典的机器学习算法的随机梯度, 

 

转载于:https://www.cnblogs.com/mikewolf2002/p/3485914.html

你可能感兴趣的文章
JXL读写Excel
查看>>
mysql自定义排序
查看>>
java UDP 一对一文件传输
查看>>
Netty5入门学习笔记003-TCP粘包/拆包问题的解决之道(下)
查看>>
SpringMVC之@ResponseBody
查看>>
Ubuntu开机自动挂载Windows分区(NTFS FAT32)教程
查看>>
Oracle学习笔记6
查看>>
Centos7开通端口方法
查看>>
php数据库永久链接其实一般没必要使用,如果网站并发量大,数据库支持的连接数小就会出问题...
查看>>
oracle--架构
查看>>
动态规划的基本方法---多阶段决策过程及实例
查看>>
顺序数据---隐马尔科夫模型
查看>>
Spring boot 使用jpa时对于数据库的配置
查看>>
驰骋工作流引擎设计系列02
查看>>
Spring Security源码分析十:初识Spring Security OAuth2
查看>>
HDOJ 2087 KMP算法
查看>>
【转载】erlang 如何自定义 behaviour
查看>>
apache tomcat 集群 负债均衡 部署
查看>>
一步一步学Ruby(四):Ruby标准类型
查看>>
Node.js + WebSocket 实现的简易聊天室
查看>>