gpt4 book ai didi

python - Scikit-learn 中 SGDClassifier 中最佳学习率的公式

转载 作者:行者123 更新时间:2023-12-01 01:33:41 25 4
gpt4 key购买 nike

我找不到 SGDClassifier in Scikit-learn 的学习率公式当 learning_rate='optimal' 时,在同一函数的原始 C++ 源代码中https://leon.bottou.org/projects/sgd

SGDClassifier in Scikit-learn中提到了该公式:

foo+bar

原始 SGDClassifier 代码中使用的公式是否正确,还是在移植到 Scikit-learn 时发生了变化?另外 t0 到底代表什么(在文档中仅提到它是通过启发式确定的)?

最佳答案

让我们看一下源代码和公式。

Sklearn 给出了以下公式:eta = 1/(alpha* (t+t_0)) 。在 Leon Bottou 的网站上,我们找到了表达 eta = eta_0 / (1 + lambda eta_0 t) .

让我们稍微重写一下后一个公式:

eta = eta_0 / (1 + lambda eta_0 t)
= 1 / ( 1/eta_0 + lambda t )
= 1 / ( lambda * ( 1/eta_0 * 1/lambda + t)).

如果现在lambda = alphat_0来自 sklearn 与 1/(eta_0*alpha) 相同,公式是一样的。现在让我们看看源代码:https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/sgd_fast.pyx#L657

在第 657 行中,我们看到 optimal_init = 1.0 / (initial_eta0 * alpha)optimal_init变量只是 t_0 的不同名称从我们在第 679 行看到的公式:eta = 1.0 / (alpha * (optimal_init + t - 1)) .

因此,公式是相同的。

关于python - Scikit-learn 中 SGDClassifier 中最佳学习率的公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52577305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com