梯度下降法及其Python实现

  • 时间:
  • 浏览:0

与批量梯度下降相比,随机梯度下降每次迭代只用到了另有4个 样本,在样本量很大的情况表下,常见的情况表是只用到了其中一每段样本数据即可将θ迭代到最优解。要怎样让随机梯度下降比批量梯度下降在计算量上会大大减少。SGD有另有4个 缺点是,其噪音较BGD要多,使得SGD并就有每次迭代都向着整体最优化方向。要怎样让SGD不可能 每次就有使用另有4个 样本进行迭代,要怎样让最终求得的最优解往往就有全局最优解,而要怎样让局部最优解。要怎样让大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解随近。下面是四种 方法的图形展示:

这里的α表示每一步的步长从上边公式也能注意到,它得到的是另有4个 全局最优解,要怎样让每迭代一步,就有用到训练集所有的数据,不可能 m很大,没法 可想而知一些 方法的迭代时延!!以后 我,这就引入了另外四种 方法,随机梯度下降。随机梯度下降SGD不可能 批量梯度下降在训练集很大的情况表下迭代时延非常之慢,以后 我在一些 情况表下再使用批量梯度下降来求解风险函数的最优化问題是不具有可行性的,在此情况表下,提出了——随机梯度下降让我们让我们让我们 都将上述的风险函数改写成以下形式:

从上述图形也能看出,SGD不可能 每次就有用另有4个 样本点进行梯度搜索,要怎样让其最优化路径看上去比较盲目(这也是随机梯度下降名字的由来)。对比其优劣点如下:批量梯度下降:优点:全局最优解;易于并行实现;总体迭代次数太大缺点:当样本数目以后 我时,训练过程会比较慢,每次迭代时要耗费极少量的时间。随机梯度下降:优点:训练时延快,每次迭代计算量不大缺点:准确度下降,并就有全局最优;不易于并行实现;总体迭代次数比较多。

结果(截取每段):

  1.  theta0 : 2.782632, theta1 : 3.207860 , theta2 : 7.998823, error1 : 7.60 8687  
  2.  theta0 : 4.25460 2, theta1 : 3.60 9652, theta2 : 11.972218, error1 : 813.560 287  
  3.  theta0 : 5.154766, theta1 : 3.351648, theta2 : 14.188535, error1 : 1686.60 7256  
  4.  theta0 : 5.60 0348, theta1 : 2.489862, theta2 : 15.617995, error1 : 2086.492788  
  5.  theta0 : 6.326710, theta1 : 1.60 0854, theta2 : 16.676947, error1 : 2204.562407  
  6.  theta0 : 6.792409, theta1 : 0.499552, theta2 : 17.545335, error1 : 2194.779569  
  7.  theta0 : 74.892395, theta1 : -13.494257, theta2 : 8.587471, error1 : 87.700881  
  8.  theta0 : 74.942294, theta1 : -13.493667, theta2 : 8.571632, error1 : 87.372640  
  9.  theta0 : 74.992087, theta1 : -13.4960 79, theta2 : 8.555828, error1 : 87.045719  
  10.  theta0 : 75.041771, theta1 : -13.492491, theta2 : 8.560 57, error1 : 86.720115  
  11.  theta0 : 75.091349, theta1 : -13.491905, theta2 : 8.524321, error1 : 86.395820  
  12.  theta0 : 75.140820, theta1 : -13.491320, theta2 : 8.60 8618, error1 : 86.072860   
  13.  theta0 : 75.190184, theta1 : -13.490736, theta2 : 8.492960 , error1 : 85.751139  
  14.  theta0 : 75.239442, theta1 : -13.490154, theta2 : 8.477315, error1 : 85.460 741  
  15.  theta0 : 97.986390, theta1 : -13.221172, theta2 : 1.257259, error1 : 1.553781  
  16.  theta0 : 97.98660 5, theta1 : -13.221170, theta2 : 1.257223, error1 : 1.553660   
  17.  theta0 : 97.986620, theta1 : -13.221169, theta2 : 1.257186, error1 : 1.553579  
  18.  theta0 : 97.986735, theta1 : -13.221167, theta2 : 1.25760 , error1 : 1.553479  
  19.  theta0 : 97.986849, theta1 : -13.221166, theta2 : 1.257113, error1 : 1.553379  
  20.  theta0 : 97.986963, theta1 : -13.221165, theta2 : 1.257077, error1 : 1.553278  
  21. Done: theta0 : 97.987078, theta1 : -13.221163, theta2 : 1.257041  
  22. 迭代次数: 3443  

这里表示第i个样本点的第j分量,即h(θ)中的接下来不可能 让我们让我们让我们 就有最小化风险函数,故按照每个参数的负梯度方向来更新每另有4个

上边的具体梯度求解就有围绕一些 目标来进行。批量梯度下降BGD按照传统的思想,让我们让我们让我们 都时要对上述风险函数中的每个求其偏导数,得到每个对应的梯度

参考文档:

下面函数是让我们让我们让我们 都时要进行最优化的风险函数,其中的每一项都表示在已有的训练集上让我们让我们让我们 都的拟合函数与y之间的残差,计算其平方损失函数作为让我们让我们让我们 都构建的风险函数(参见最小二乘法及其Python实现)

要怎样让根据每个参数的负梯度方向来更新每另有4个

这里每另有4个 圈代表另有4个 函数梯度,最中心表示函数极值点,每次迭代根据当前位置求得的梯度(用于确定搜索方向以及与步长并肩决定前进时延)和步长找到另有4个 新的位置,没法 不断迭代最终到达目标函数局部最优点(不可能 目标函数是凸函数,则到达全局最优点)。下面让我们让我们让我们 都将通过公式来具体说明梯度下降法下面一些 h(θ)是让我们让我们让我们 都的拟合函数

梯度下降法(gradient descent),叫雷最速下降法(steepest descent)是求解无约束最优化问題最常用的方法,它是四种 迭代方法,每一步主要的操作是求解目标函数的梯度向量,将当前位置的负梯度方向作为搜索方向(不可能 在该方向上目标函数下降最快,这也是最速下降法名称的由来)。

梯度下降法特点:越接近目标值,步长越小,下降时延越慢。直观上来看如下图所示:

也也能用向量的形式进行表示:

称为样本点的损失函数接下来让我们让我们让我们 都对每个样本的损失函数,对每个求其偏导数,得到每个对应的梯度

也能看到最后收敛到稳定的参数值。

注意:这里在确定alphaepsilon时时要谨慎确定,不可能 不适的值会原困最后无法收敛。



============ 分割分割 =============上边让我们让我们让我们 都讲解了一些 是梯度下降法,以及要怎样求解梯度下降,下面让我们让我们让我们 都将通过python来实现梯度下降法。

随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比

这里让我们让我们让我们 都乘上1/2是为了方便上边求偏导数时结果更加简洁,不言而喻能乘上1/2是不可能 乘上一些 系数后对求解风险函数最优值没法 影响。让我们让我们让我们 都的目标要怎样让要最小化风险函数,使得让我们让我们让我们 都的拟合函数也能最大程度的对目标函数y进行拟合,即:

其中,