您的位置:首页 > 编程语言 > Python开发

python机器·学习常见训练方法和代码理解

2020-07-03 15:50 47 查看

python机器·学习常见训练方法和代码理解

  • 二、小批量梯度下降(Mini-batch GD)
  • 三、 随机梯度下降(Stochastic GD)

  • 一个样本即单条数据所有属性以及其对应结果

    一、批量梯度下降(Batch GD)

    优点:

    (1)一次迭代是对所有样本进行计算,此时利用矩阵进行操作,实现了并行。

    (2)由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。当目标函数为凸函数时,BGD一定能够得到全局最优。

    缺点:

    (1)当样本数目 mm 很大时,每迭代一步都需要对所有样本计算,训练过程会很慢。

    从迭代的次数上来看,BGD迭代的次数相对较少。

    一句话一次迭代是对所有样本进行计算

    for  迭代次数
    
    训练所有样本 ,改变参数

    二、小批量梯度下降(Mini-batch GD)

    优点:

    (1)通过矩阵运算,每次在一个batch上优化神经网络参数并不会比单个数据慢太多。

    (2)每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。(比如上例中的30W,设置batch_size=100时,需要迭代3000次,远小于SGD的30W次)

    (3)可实现并行化。

    缺点:

    (1)batch_size的不当选择可能会带来一些问题。

    一句话每次迭代 使用 ** batch_size** 个样本来对参数进行更新,一次性训练batch_size个样本,通过feed_dict放在预先设定的占位张量中。

    for  迭代次数
    for  样本数/batch_size
    训练batch_size个样本,改变参数

    三、 随机梯度下降(Stochastic GD)

    优点:

    (1)由于不是在全部训练数据上的损失函数,而是在每轮迭代中,随机优化某一条训练数据上的损失函数,这样每一轮参数的更新速度大大加快。

    缺点:

    (1)准确度下降。由于即使在目标函数为强凸函数的情况下,SGD仍旧无法做到线性收敛。

    (2)可能会收敛到局部最优,由于单个样本并不能代表全体样本的趋势。

    (3)不易于并行实现。

    一句话,训练一个样本变一次参数

    for迭代次数
    for  样本总数目
    训练一个样本,改变参数

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: