我開發了一個圖像處理程序,用於識別給出的數字是什麼數字。每張圖像都是27x27像素= 729像素。我取每個R,G和B值,這意味着每個圖像中有2187個變量(截距+1 =總共2188)。如何處理大量機器學習功能
我用下面的梯度下降公式:
Repeat {
θj = θj−α/m∑(hθ(x)−y)xj
}
θj
哪裏是變量j的係數; α
是學習率; hθ(x)
是假設; y
是實際值,xj
是變量j的值。 m
是訓練集的數量。 hθ(x)
,y
針對每個訓練集(即,這是和號的用途)。此外,該假說被定義爲:
hθ(x) = 1/(1+ e^-z)
z= θo + θ1X1+θ2X2 +θ3X3...θnXn
有了這個,和3000個訓練圖像,我可以只需要一個多小時,訓練我的計劃中,當在交叉驗證組測試,它能夠識別正確的圖像〜67%的時間。
我想改善的是,所以我決定嘗試程度2.
然而變量的數目跳躍的多項式從2188到2394766每形象!我需要一個小時才能完成1步的梯度下降。
所以我的問題是,如何在機器學習中處理大量的變量?一方面,我沒有足夠的空間來爲每個訓練集保存許多變量。另一方面,我目前每訓練樣本存儲2188個變量,但爲了得到每個變量的值乘以另一個變量(即多項式到2次的值),我必須執行O(n^2)。
所以,任何建議/建議,非常感謝。
你應該看看隨機(迷你批)梯度下降爲此事。 –