簡體   English   中英

Scikit學習中SGDClassifier中最佳學習率的公式

[英]The formula for the optimal learning rate in the SGDClassifier in Scikit-learn

我不能找到用於的學習率式中SGDClassifier Scikit學習learning_rate='optimal' ,在此同樣的功能的原來的C ++源碼https://leon.bottou.org/projects/sgd

Scikit-learn中的SGDClassifier中提到了該公式:

FOO +酒吧

這個正確的公式是在原始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 = alpha並且sklearn的t_01/(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) 正如我們在679行中看到的那樣, optimal_init變量只是t_0與公式中的名稱不同: eta = 1.0 / (alpha * (optimal_init + t - 1))

因此,公式相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM