2012-10-24 49 views
1

我正在爲隨機梯度下降實現一個通用模塊。這需要參數:訓練數據集,損失(x,y),dw(x,y) - 每個樣本損失和每個樣本的梯度變化。現在什麼應該是足夠通用的隨機梯度下降收斂標準

,爲收斂標準,我已經想到了: -

一)檢查損失函數的dataset.size每10%後,一些窗口

b)檢查的標準平均值在每10-20%的數據集大小之後,權重向量之間的差異

c)穩定訓練集上的錯誤。

d在梯度的符號(同樣,每隔固定的時間間隔之後檢查)改變) -

我注意到這些檢查(檢查等的精度)取決於其他的東西也一樣步長大小,學習速度..並且效果可以從一個訓練問題到另一個不同。

我似乎無法理解,無論在SGD模塊上拋出的訓練集,fx,df/dw如何,都應該是通用停止標準。你們做什麼?另外,對於(d),對於n維矢量,「符號變化」的含義是什麼?因爲,在給定的dw_i,dw_i + 1中,我如何檢測符號的變化,它甚至在2維以上有意義嗎?

P.S.對於非數學/乳膠符號的道歉..still習慣的東西。

回答

3

首先,隨機梯度下降是梯度下降法的在線版本。更新規則一次只使用一個示例。

假設,f(x)爲單個示例的成本函數,SGD的爲N維向量停止標準通常是:

enter image description here

enter image description here

見本1,或這2瞭解詳情。

其次,在隨機梯度下降方面還有一個進一步的轉折,即使用所謂的「minibatches」。它與SGD的工作方式相同,不同之處在於它使用多個訓練示例來對每個梯度進行估計。這種技術減少了梯度估計的差異,並且通常更好地利用現代計算機中的分層存儲器組織。看到這個3

+0

謝謝。我理解你提到的所有概念 - 只是想知道,人們在實際通用實施SGD時使用了什麼。 此外,有人建議檢查時代之間的權重向量的變化。根據我的理解,與正常批次版本相比,這可能不是一個很好的優勢。 – Akshay

+0

BTw,你是否在運行樣本之間檢查這個「delta f(x)」?由於梯度(df/dw)矢量的隨機運動,它可能非常不穩定! – Akshay