優化函數耗時的問題
知識
12-09
這裡是 AI 研習社,我們的問答版塊已經正式推出了!歡迎大家來多多交流~
http://ai.yanxishe.com/page/question
(文末有福利哦)
社長為你推薦來自 AI 研習社問答社區的精華問答。如有你也有問題,歡迎進社區提問。
話不多說,直接上題
@徐揚 問:關於優化函數耗時的問題
sgd的時間複雜度是O(1),梯度下降的時間複雜度是O(N),但是每次epoch的時候,sgd的耗時比梯度下降耗時還要長,這是為什麼呢?這個是書上的解釋,感覺解釋的有點牽強
ps:sgd是取梯度當中的某一個值,而梯度下降是求和取平均值。因此時間複雜度sgd是O(1),gd是O(N).
來自社友的回答
@行者小林
個人理解:這裡說的迭代周期應該是指對1500個樣本遍歷一次,隨機梯度下降(sgd)單次提取一個樣本進行處理,需要迭代1500次,每次迭代都是串列的,無法利用gpu並行加速,而gd每次處理1500個樣本,可以使用gpu加速計算
徐揚追問行者小林:那豈不是gd時間更少了?一般情況下,gd的效果會優於sgd,那為什麼在深度學習當中,sgd用的比gd更多呢? 既然gd的時間少,然後效果還優於sgd
行者小林 回復徐揚:我們通常衡量的是達到指定效果(例如loss降到0.1所需要的時間和內存)所需的時間,對於sgd在完1500次數據後loss下降了1500次(例如loss從10降到了0.2),而gd只下降了一次(loss從10降到5已經是比較理想的情況了),這樣應該能理解了吧
※使用 Tensorflow 物體檢測來玩射擊遊戲《反恐精英》
※Tensorflow系列專題:RNN的應用及注意力模型
TAG:AI研習社 |