Machine-Learning

為什麼梯度下降對於大數據集效率低下?

  • November 25, 2017

假設我們的數據集包含 100 萬個示例,即,並且我們希望使用梯度下降對這些數據集執行邏輯或線性回歸。

梯度下降法的效率低下的原因是什麼?

回想一下梯度下降步驟是(誰)給的:

在哪裡是損失函數。

在上述步驟中,我沒有看到任何導致算法效率低下的異常情況。是不是計算? 難道這個操作不能預先計算,即每個已經計算,並在每個數據點簡單地評估它們

如果您為梯度下降低效的說法提供背景信息,將會有所幫助。相對於什麼效率低下?

我猜這裡缺少的上下文是與機器學習中的隨機或批量梯度下降的比較。以下是在這種情況下如何回答這個問題。您正在優化模型的參數,甚至是超參數。所以,你有成本函數, 在哪裡- 您的數據,以及- 參數向量,以及- 損失函數。為了最小化這個成本,你在參數上使用梯度下降 :

所以,你看到你需要得到所有數據的總和. 這是不幸的,因為這意味著你在梯度下降的每一步都在循環遍歷數據。這就是批量和隨機梯度下降的出現方式:如果我們從數據集中進行採樣,併計算樣本的梯度,而不是整個集呢?

這裡,是樣本中的觀察數. 因此,如果您的樣本是總樣本的 1/100,那麼您的計算速度將提高 100 倍!顯然,這引入了噪聲,從而延長了學習時間,但噪聲以而計算量增加,所以這個技巧可能會奏效。 或者,而不是等到全額計算出來的,你可以把它分成多個批次,並為每個批次做一個步驟. 這樣,在計算整個數據集的總和時,您將完成 M 步。這些將是嘈雜的步驟,但隨著時間的推移噪音會被抵消。

引用自:https://stats.stackexchange.com/questions/315565

comments powered by Disqus