【问题标题】:Number of Iterations (Gradient Descent)迭代次数(梯度下降)
【发布时间】:2020-10-17 21:25:36
【问题描述】:

我正在学习梯度下降算法,并在Boston Housing 数据集(在 sklearn) 上实现了一个这样的**(在 python 中)**。我还实现了一个成本函数,它接受所有系数、截距和训练数据,并返回这些系数和截距的成本。我在波士顿数据集上运行了 1500 次迭代learning_rate = 0.000003202 的算法,它成功收敛,成本最低为 61.840725406571245,但是当我在相同的训练数据上训练 sklearn 的 LinearRegression() 算法时,使用 .coef_ 和 .intercept_ 找到了成本。它给出的成本最低,为 19.958219814238042所以我的问题是如何说一定数量的迭代会给我最小/最优的成本?比如我运行算法 n 次,得到一个特定的代价,那么我怎么知道这个代价足够好还是需要进一步降低呢?

【问题讨论】:

    标签: python machine-learning regression gradient-descent


    【解决方案1】:

    您可以在训练中使用验证集。它们将是模型性能测试阶段的更好指标,而不仅仅是训练错误。此外,您的 learning_rate 非常小,这可能导致模型在大量迭代中收敛。您可以使用这些参数来查看它如何影响您的训练。

    【讨论】:

    • 我尝试增加学习率,但是在增加时,它无法收敛,并且发生了超调。
    • 我已经用 0 初始化了所有的系数和截距。我也应该玩这个吗? @Koralp Catalsakal
    • 一般来说是的。初始化、学习率、截距的使用是影响训练的不同参数。由您自己决定为您的任务提供更好结果的参数。对于Gradient Descent,不可能只定义最优参数,但你必须搜索它们。
    • 所以,在玩,所有这些参数(num_iterations,learning_rate,batch_size,初始化系数,截距)我们唯一能做的或者我们有一些粗略的规则或粗略的估计来确定所有这些? @Koralp Catalsakal
    • 对于参数的取值,通常有一些通用的做法,但并不是一个真正明确的规则。
    猜你喜欢
    • 2018-10-23
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多