美文网首页
关于梯度下降算法的一点看法

关于梯度下降算法的一点看法

作者: 遥远的清平湾 | 来源:发表于2018-11-08 05:47 被阅读0次

    前言

    之前一直对梯度下降算法的概念比较模糊,今天突然有了一点个人感悟,遂记录下来,欢迎批评指正。

    关键点

    梯度下降算法常用于神经网络的训练,比如BP神经网络。

    其实这时输入可以看成是固定的1,而权值是自变量(是变量!)。梯度下降的任务就是计算损失函数对权值(自变量)的梯度,然后沿着负梯度方向 以学习率为步长 调整权值(自变量)。

    1:虽然我们通常有很多样本/输入,貌似输入是变量,其实不是的,输入是固定的。并且训练网络时这些样本通常不是一次全部作为输入(当然也可以这样),而是随机选择一部分样本作为输入,重复多次(节省时间,并且所有样本都有机会得到训练):

    算法1
    1. while 没到终止条件  // 比如终止条件是梯度向量的二范数
    2.    yangben0 <--- select 一部分样本;// 可以是一个到多个
    3.    在yangben0条件下计算梯度;
    4.    沿着负梯度方向,以学习率为步长,调整权值(自变量);
           // 如果步骤4一直循环执行就意味着在该批样本下,一直调整到损失函数最小,然后再换下一批样本;
           // 不过实际好像不会这样,而是这一步只执行一次,然后就换下一批样本。
    5. end while
    

    注1:步骤2中不同的选择方式会得到不同的训练结果(权值)
    注2:步骤2中如果选1个样本,理论上可以,但是容易使算法跑偏/绕路(和“兼听则明,偏听则暗”的道理一样),所以为了不使算法跑偏,一般选多个样本。
    注3:Learning TensorFlow书中(P43)说一般选50-500个个体,并且小样本对目标函数带来的扰动更大一点,一定程度上利于跳出局部最优

    图解

    未完待续。。。

    参考
    [深入浅出--梯度下降法及其实现] https://www.jianshu.com/p/c7e642877b0e

    相关文章

      网友评论

          本文标题:关于梯度下降算法的一点看法

          本文链接:https://www.haomeiwen.com/subject/lzkixqtx.html