• 梯度下降法、随机梯度下降法、小批量梯度下降法


    本文以二维线性拟合为例,介绍批量梯度下降法、随机梯度下降法、小批量梯度下降法三种方法,求解拟合的线性模型参数。

    需要拟合的数据集是 $(X_1, y_1), (X_2, y_2)..., (X_n, y_n)$,其中$X^i=(x_1^i, x_2^i)$,表示2个特征,$y^i$是对应的回归值。

    拟合得到的函数是 $h_{ heta_1, heta_2}(X)$,尽可能使${h_{{ heta _1},{ heta _2}}}(X) approx y$。

    损失函数是$J( heta_1, heta_2) = sumlimits_{i = 1}^n {{{({h_{ heta_1, heta_2} }({x_i}) - {y_i})}^2}}$。

    损失函数是我们的性能评价指标,损失函数越小,代表我们得到函数$h_{ heta_1, heta_2}(X)$越能够拟合该数据集。

    由于负梯度(函数的导数即为梯度)的方向是局部下降最快的地方,所以为了最小化损失函数,我们沿着损失函数的负梯度方向来调整参数。

    1 批量梯度下降法(Batch Gradient Descent)

    批量梯度下降法每次更新参数$ heta$都要计算所有的样本数,求全局最优,所以训练开销很大,算法描述如下:

    1. 初始化$ heta_1, heta_2$,设置学习率$alpha$和终止条件$varepsilon$

    2. 计算$ heta_1, heta_2$的梯度(偏导数),判断是否都小于终止条件$varepsilon$,若小于输出参数$ heta_1, heta_2$,若不小于,重复第三步。

    3. 更新$ heta_1, heta_2$

    $ heta_1 = heta_1 - alpha(frac{partial }{{partial { heta _1}}}J({ heta _1},{ heta _2}))$

        $ = { heta _1} - alpha sumlimits_{i = 0}^n {({h_{{ heta _1},{ heta _2}}}({x_1}^i,{x_2}^i) - {y^i}){x_1}^i} $

    $ heta_2 =  heta_2 - alpha(frac{partial }{{partial { heta _2}}}J({ heta _1},{ heta _2}))$

        $ = { heta _2} - alpha sumlimits_{i = 0}^n {({h_{{ heta _1},{ heta _2}}}({x_1}^i,{x_2}^i) - {y^i}){x_2}^i} $

    批量梯度法稳定地下降,速度较慢。

    2 随机梯度下降法(Stochastic Gradient Descent)

    随机梯度下降法原理上与批量梯度下降法类似,不同的是更新参数$ heta$时,不是计算所有的样本数,而是随机计算一个样本。

    加快了每次迭代的计算速度,但是收敛不稳定,更新公式如下:

    ${ heta _1} = { heta _1} - alpha ({h_{{ heta _1},{ heta _2}}}({x_1}^i,{x_2}^i) - {y^i}){x_1^i}$

    随机梯度法快速下降,但同时也有更大幅度的波动。

    3 小批量梯度下降法(Mini-batch Gradient Descent)

    小批量梯度下降法是批量梯度下降法和随机梯度下降法的一种平衡,对于$n$个样本,每次随机用$m$个样本,进行批量梯度更新。

    是对速度和稳定性进行了折中,更新公式如下:

    ${ heta _1} = { heta _1} - alpha sumlimits_{i = 0}^x {({h_{{ heta _1},{ heta _2}}}({x_1}^i,{x_2}^i) - {y^i}){x_1}^i} $

     小批量梯度法较快速下降,有小幅波动。

    参考:

    1. http://sofasofa.io/tutorials/python_gradient_descent/index.php

  • 相关阅读:
    django模板导入外部js和css等文件
    django 快速搭建blog
    JS定时器的使用--延时提示框
    JS定时器的使用--数码时钟
    JS定时器的使用--无缝滚动
    初探JavaScript魅力(五)
    初探JavaScript魅力(四)
    初探JavaScript魅力(三)
    初探JavaScript魅力(二)
    PHP正则表达式
  • 原文地址:https://www.cnblogs.com/yijuncheng/p/9846315.html
Copyright © 2020-2023  润新知