吴恩达机器学习 Machine Learning Week_10学习笔记

随机梯度下降

普通的梯度下降法公式如下:
θ j = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_j^{(i)} θj=θjαm1i=1m(hθ(x(i))y(i))xj(i)这种算法又被称为批量梯度下降法,在这种算法下,每完成一次梯度下降都需要对所有的样本进行求和,如果样本数据过大,则会使得计算机负载过大,运算速度减慢。当面对大规模的样本数据时,此种算法显然不再适用,因此,提出一种新的梯度下降算法:随机梯度下降

随机梯度下降算法:
首先定义每一个训练样本的成本如下: c o s t ( θ , ( x ( i ) , y ( i ) ) ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 cost(\theta,(x^{(i)},y^{(i)}))=\frac{1}{2}(h_{\theta}(x^{(i)})-y^{(i)})^2 cost(θ,(x(i),y(i)))=21(hθ(x(i))y(i))2
整个样本数据组的成本函数如下: J t r a i n ( θ ) = 1 m ∑ i = 1 m c o s t ( θ , ( x ( i ) , y ( i ) ) ) J_{train}(\theta)=\frac{1}{m}\sum_{i=1}^{m}cost(\theta,(x^{(i)},y^{(i)})) Jtrain(θ)=m1i=1mcost(θ,(x(i),y(i)))
随机梯度下降算法计算过程如下:
1.随机排列所有样本数据
2.Repeat
{
   \space\space       \space\space   for i=1,…,m
   \space\space       \space\space   {
θ j = θ j − α ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j=\theta_j-\alpha(h_{\theta}(x^{(i)})-y^{(i)})x_j^{(i)} θj=θjα(hθ(x(i))y(i))xj(i)    \space\space       \space\space   }
}
第二步中Repeat的次数可以根据具体样本数据的多少选择1-10中任一个数,样本数据量大时通常选一次。
值得注意的是这种算法每次的迭代优化过程只考虑一个样本数据,每次更新的参数可能使得成本函数达到局部最小值而非全局最小值,但经过大量的迭代后,该算法仍然可以收敛于全局最小值附近。通常在算法收敛至全局最小值附近的区域时,我们就可以认为我们的计算结果已经达到了最优。

小批量梯度下降算法

批量梯度下降算法:在每次迭代中考虑所有样本数据。
随机梯度下降算法:在每次迭代中考虑一个样本数据。
小批量梯度下降算法:在每次迭代中考虑b个样本数据(1<b<m)。
b为小批量梯度下降算法的规模,每次计算b个数据,通常取b在2-100之间。该算法计算过程如下:
Repeat
{
   \space\space       \space\space   for i=1,…,m
   \space\space       \space\space   {
θ j = θ j − α 1 b ∑ k = i i + b − 1 ( h θ ( x ( k ) ) − y ( k ) ) x j ( k ) \theta_j=\theta_j-\alpha\frac{1}{b}\sum_{k=i}^{i+b-1}(h_{\theta}(x^{(k)})-y^{(k)})x_j^{(k)} θj=θjαb1k=ii+b1(hθ(x(k))y(k))xj(k)    \space\space       \space\space   }
}
这种算法较随机梯度下降算法每次迭代时考虑的样本数据更多,优化收敛的效果也更好。

随机梯度算法的调试

如果我们想要观察某个算法在迭代过程中是否收敛,最好的方法是绘制学习曲线,观察代价函数的值随着迭代次数的增加如何变化。在随机梯度下降算法中,我们重新定义了该算法的代价函数为: J t r a i n ( θ ) = 1 m ∑ i = 1 m c o s t ( θ , ( x ( i ) , y ( i ) ) ) J_{train}(\theta)=\frac{1}{m}\sum_{i=1}^{m}cost(\theta,(x^{(i)},y^{(i)})) Jtrain(θ)=m1i=1mcost(θ,(x(i),y(i)))由上式可知,每次计算代价函数时都需要对所有的样本成本函数进行求和取平均,这显然并不是一个高效的方法。因此,我们提出了一个新的方法来对随机梯度算法进行调试。
在随机梯度下降中,我们在每一次更新 𝜃 之前都计算一次代价,然后每𝑥次迭代后,求出这𝑥次对训练实例计算代价的平均值,然后绘制这些平均值与𝑥次迭代的次数之间的函数图表。
可能的情况如下所示:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值