http://fuliang.iteye.com/blog/1482002
使用SGD(Stochastic Gradient Descent)进行大规模机器学习
1 基于梯度下降的学习
对于一个简单的机器学习算法,每一个样例包含了一个(x,y)对,其中一个输入x和一个数值输出y。我们考虑损失函数
我们的目标是寻找这样的函数
由于我们不知道数据的真实分布,所以我们通常使用
来代替
经验风险
如果函数族F进行足够的限制(sufficiently restrictive
),统计机器学习理论使用经验风险来代替期望风险。
1.1 梯度下降
我们经常使用梯度下降(GD)的方式来最小化期望风险,每一次迭代,基于
基于二阶梯度的比较出名的算法是牛顿法,牛顿法可以达到二次函数的收敛。如果代价函数是二次的,矩阵
1.2 随机梯度下降
SGD是一个重要的简化,每一次迭代中,梯度的估计并不是精确的计算
![](https://i-blog.csdnimg.cn/blog_migrate/98ba4bd98c899c9f15a00fe76fe782b2.gif)
随机过程
依赖于每次迭代时随即选择的样例,尽管这个简化的过程引入了一些噪音,但是我们希望他的表现能够和GD的方式一样。
随机算法不需要记录哪些样例已经在前面的迭代过程中被访问过,有时候随机梯度下降能够直接优化期望风险,因为样例可能是随机从真正的分布中选取的。
随机梯度算法的收敛性已经在随机近似算法的论文所讨论。收敛性要满足:
二阶随机梯度下降:
这种方法并没有减少噪音,也不会对计算
![](https://i-blog.csdnimg.cn/blog_migrate/46064cf8b27e1ac7d12ad6607a747a10.gif)
1.3 随即梯度的一些例子
下面列了一些比较经典的机器学习算法的随机梯度,
![点击查看原始大小图片](https://i-blog.csdnimg.cn/blog_migrate/37473f197ac1133bbbb01e159d78dac5.png)