作者championship (银光竹)
看板DataScience
标题Re: [问题] 请教关於Stochastic gradient descent
时间Wed Apr 4 06:30:26 2018
几个想法提供参考
(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://webptt.com/cn.aspx?n=bbs/DataScience/M.1522794628.A.083.html
※ 编辑: championship (140.113.25.44), 04/04/2018 06:59:36
1F:推 lucien0410: 我程度不够有看没有懂 多谢高手分享 04/04 13:19
2F:→ geminitw: 原po 已经有说是看 accuracy. SGD 记得每个 epoch要重新 04/05 07:08
3F:→ geminitw: 打散资料, 否则每次batch 的内容都是一样的. 04/05 07:09
4F:推 geminitw: 另外,batchSize 128 vs 64, 那麽Epoch 前者应该要多一些 04/05 07:20
(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
5F:推 NMOSFET: 想请问一下最後一点,SGD是每看过一笔资料就更新一次参 04/05 09:53
6F:→ NMOSFET: 数(batch size=1),那为什麽影响因素还会跟mini-batch 04/05 09:53
7F:→ NMOSFET: size 有关? 04/05 09:53
SGD 狭义来说是指 mini-batch = 1 时的情况,不过 stochastic update 不仅限於此
且性质上与mini-batch gradient descent 大致类似,故共同讨论之。
而 mini-batch size 调整上,会影响几件事情:
(1) 每个 epoch 中 update 的次数
(2) 单次 update 的计算时间
(3) stochastic gradient 方向 与当下的 batch gradient 方向的差异
8F:推 geminitw: 就是老祖宗说的"以偏概全"呀. 04/05 10:02
9F:推 geminitw: 刚刚仔细看了原文,的确有可能是test-error,overfitting. 04/05 10:10
※ 编辑: championship (36.232.55.11), 04/05/2018 11:02:12
10F:推 Bondrewd: 谢谢这篇详尽的解释 04/05 13:35
11F:推 NMOSFET: 感谢C大详细的解说! 04/05 22:00
12F:→ kevin1ptt: 推! 04/06 16:47
13F:→ kevin1ptt: 第二篇论文的实验做得很有趣 04/06 16:48
14F:推 dongogo: 推 04/07 16:36