Re: [問題] 請教關於Stochastic gradient descent

看板DataScience作者 (銀光竹)時間6年前 (2018/04/04 06:30), 6年前編輯推噓8(806)
留言14則, 6人參與, 6年前最新討論串2/2 (看更多)
幾個想法提供參考 (1) "好"的比較 training error小? generalization ability強? 收斂速度快? 運算時間少? (2) GD 和 SGD之間的關係 在 machine learning 中 gradient descent 或者說 Batch gradient descent 通常針對 full training set 的 Empirical Risk 進行 也就是 objective function : L(w,x) = 1/N \sum^{N}_{i=1} loss(w;x_i) Stochstic gradient descent 則是隨機針對前式的 loss 進行 理論上能達到對 Expected Risk 進行最佳化的結果 介於之間的 mini-batch 則是對 L'(w,x) = 1/n \sum^{n}_{i=1} loss(w;x_i) n 即是代表 mini-batch size的大小 相對於single data 的 gradient mini-batch 的 gradient方向,與 Batch gradient 的方向會更近 因此,最佳化的過程中,相對會更穩定 (3) 比較 GD SGD 收斂性 : linear~suplinear sublienar ~linear per-iter. : dependent N independent N cost Convex : 收斂到opt. 會因learning rate problems 有gap Non-convex: 收斂到 實作有機會收斂到 problems stationary point global minimum (4) 回答(1) a.Training error的表現: 基本上GD直接針對Empirical risk最佳化 只要是convex problems通常會比較好 b.Generalization ability: 不一定,當N夠大或者說足夠代表母體時,GD仍可能比較好 反之,SGD理論上針對Expected risk最佳化 所以在N不夠代表母體時,比較能夠避免bias c.收斂速度: GD 勝 d.計算時間:(收斂速度 * per-iter.cost) small data -> GD large-scale dat -> SGD 至於怎麼定義大小,通常取決於硬體設備而非絕對 (5) 結尾 Stochastic approximation方法在1951年就被提出 而近年來為了解決資料量成長速度遠快於硬體的運算速度 因此,除了分散式處理方法外,使用stochastic方案最為熱門 然而SGD的收斂上的不穩定性是問題之一 針對Batch size 大小的取捨上並沒有太絕對的結論 https://arxiv.org/abs/1711.00489 這篇提出隨著update調整batch size大小 https://arxiv.org/abs/1609.04836 這篇提出過大的batch size大小導致 generalization ability 差 當然兩者並不互相矛盾也可以同時成立 仍是大家正在研究的議題之一 最後,影響著SGD training 幾個可能的因素 (1) sampling (2) mini-batch size (3) learning rate -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.25.44 ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1522794628.A.083.html ※ 編輯: championship (140.113.25.44), 04/04/2018 06:59:36

04/04 13:19, 6年前 , 1F
我程度不夠有看沒有懂 多謝高手分享
04/04 13:19, 1F

04/05 07:08, 6年前 , 2F
原po 已經有說是看 accuracy. SGD 記得每個 epoch要重新
04/05 07:08, 2F

04/05 07:09, 6年前 , 3F
打散資料, 否則每次batch 的內容都是一樣的.
04/05 07:09, 3F

04/05 07:20, 6年前 , 4F
另外,batchSize 128 vs 64, 那麼Epoch 前者應該要多一些
04/05 07:20, 4F
(1) 前兩個問題就是關於accuracy,training error 和 generalization ability 後者通常用 testing error 去代表好壞。 (2) 至於時間和收斂速度的兩個問題,則是與SGD的發展原因和其問題有關,所以想說順便 提出來討論。 (3) 打散資料的行為其實就是 sampling 的部份,簡單的方法大致上有兩種: a. 每個epoch把整筆資料 random shuffle b. 取後放回的方式 更高階一點的方法,就是在training 過程中同時學習資料的distribution,並且以此 做sample的策略,一般這種方法比較常在online learning中使用,關鍵字可以搜尋 muti-armed bandit ※ 編輯: championship (36.232.55.11), 04/05/2018 09:05:59

04/05 09:53, 6年前 , 5F
想請問一下最後一點,SGD是每看過一筆資料就更新一次參
04/05 09:53, 5F

04/05 09:53, 6年前 , 6F
數(batch size=1),那為什麼影響因素還會跟mini-batch
04/05 09:53, 6F

04/05 09:53, 6年前 , 7F
size 有關?
04/05 09:53, 7F
SGD 狹義來說是指 mini-batch = 1 時的情況,不過 stochastic update 不僅限於此 且性質上與mini-batch gradient descent 大致類似,故共同討論之。 而 mini-batch size 調整上,會影響幾件事情: (1) 每個 epoch 中 update 的次數 (2) 單次 update 的計算時間 (3) stochastic gradient 方向 與當下的 batch gradient 方向的差異

04/05 10:02, 6年前 , 8F
就是老祖宗說的"以偏概全"呀.
04/05 10:02, 8F

04/05 10:10, 6年前 , 9F
剛剛仔細看了原文,的確有可能是test-error,overfitting.
04/05 10:10, 9F
※ 編輯: championship (36.232.55.11), 04/05/2018 11:02:12

04/05 13:35, 6年前 , 10F
謝謝這篇詳盡的解釋
04/05 13:35, 10F

04/05 22:00, 6年前 , 11F
感謝C大詳細的解說!
04/05 22:00, 11F

04/06 16:47, 6年前 , 12F
推!
04/06 16:47, 12F

04/06 16:48, 6年前 , 13F
第二篇論文的實驗做得很有趣
04/06 16:48, 13F

04/07 16:36, 6年前 , 14F
04/07 16:36, 14F
文章代碼(AID): #1Qn02423 (DataScience)
文章代碼(AID): #1Qn02423 (DataScience)