E**********e 发帖数: 1736 | 1 我试了一下自己写的Stochastic Gradient Descent。 简单的数据比如就只有两个
features。 结果和newton raphson 迭代的结果差不多。 但是一般feature 多了。 结
果差别很大。 我知道SGD 能保证global minimum。但几个测试结果都让人怀疑SGD是
不是很有效。同样的数据用package里的GSD,结果页差很多。但是GSD好像还是比较说
得上的算法。诸位有是么看法。 |
m******r 发帖数: 1033 | 2 SGD 能保证global minimum ? 有出处吗? |
E**********e 发帖数: 1736 | 3 我记错了? 好像也是只能local minimum? 那么他的优势是是么? 好像找data
scientist 问这个问题的几率比较高?
【在 m******r 的大作中提到】 : SGD 能保证global minimum ? 有出处吗?
|
o******1 发帖数: 1046 | 4 要是有一种方法能够保证收敛到global minimum的话,其余所有的数值方法全部不值一
提了。跟batch or mini-batch GD一样,除非是对于convex函数,否则只能收敛到
local minimum。SGD和mini-batch GD还必须让rate随step递减并趋于0,否则结果会是
绕着local minimum打转。
我理解SGD和mini-batch GD都是在sample数量太大,内存装不了,SD算不过来的情形下
,不得已采取的措施。只要rate取得合适,只有SD能保证每一步都在优化,而另外俩只
能保证大体上往优化点跑。假设SD算得过来,完全没必要用另外两种。Ng的cousera课
程上讲到过这三种算法,可以去那儿看看。
当然了,我也是半路出家。欢迎专家指正。
【在 E**********e 的大作中提到】 : 我记错了? 好像也是只能local minimum? 那么他的优势是是么? 好像找data : scientist 问这个问题的几率比较高?
|
E**********e 发帖数: 1736 | 5 谢谢。如果sgd的结果和newton_raphson迭代的结果在一般的数据上就差别很大的话,
怎能保证大数据上结果就准确呢。我测试的几个列子,用logistic regression,就几
百的数据,包含4,5个features,结果差别很大。像这种情况sgd 或gd 根本就没是么优
势。一种情况就是可能不同的minimum。 也许我 太纠结于两种方法希望结果的一致性
。这两种方法也许在复杂的数据上,结果本来就会不一样。让我再好好研究一下,做细
致一定点。neural network 里sgd好像用的挺多。好像效果还不错。
:要是有一种方法能够保证收敛到global minimum的话,其余所有的数值方法全部不值
一提了。跟batch or mini-batch GD一样,除非是对于convex函数,否则只能收敛到
:local minimum。SGD和mini-batch GD还必须让rate随step递减并趋于0,否则结果会
是绕着local minimum打转。 |
d*****n 发帖数: 754 | 6 你在干啥?NR是解方程不动点的, 优化应该用Gauss Newton 。SGD是做优化, 并不寻
找梯度为零的解,而是误差小到一定
【在 E**********e 的大作中提到】 : 我试了一下自己写的Stochastic Gradient Descent。 简单的数据比如就只有两个 : features。 结果和newton raphson 迭代的结果差不多。 但是一般feature 多了。 结 : 果差别很大。 我知道SGD 能保证global minimum。但几个测试结果都让人怀疑SGD是 : 不是很有效。同样的数据用package里的GSD,结果页差很多。但是GSD好像还是比较说 : 得上的算法。诸位有是么看法。
|
E**********e 发帖数: 1736 | 7 不干啥。 就是想比较两种算法,了解一下。 免得面试时,说不上来。
我看了一下。 Neuton-Raphason需要找到目标函数的一次和二次direvatives, 然后根
据taylor 近似,用迭代的方法求出解。
gauss-newton不许要,可以避免求二次direvative。所说我还没试这个gauss-neutron
, 不过我估计两者获得的解在logistic regression应该会好很接近。
stochastic gd 的解就差别很大。或者way crazy。 系数有时根本就不一致,nr里正的
系数, sgd里是负的,完全不一致。 当然可能就是你说的, 不是找梯度为0的解。 而
是近似解。 在neutral network里,大家也不知道黑盒子了到底干啥, 知道得到的预
测力好久行了。
我应该比较预测的准确力,来比较两种方法的优劣。
【在 d*****n 的大作中提到】 : 你在干啥?NR是解方程不动点的, 优化应该用Gauss Newton 。SGD是做优化, 并不寻 : 找梯度为零的解,而是误差小到一定
|
w***g 发帖数: 5958 | 8 和SGD比的不是牛顿法. 牛顿法是用来解方程的, 不是用来做优化的.
事实上就是解方程, 很多时候也是加上regularization项后转化成
优化问题. 数据量大的时候, 全量的graident descent根本没法做,
只能是SGD. 就是内存够大, SGD也会比GD收敛得快. 一般来说
batch size的最优值在1到N之间. 纯粹的stochastic GC, 也就是
batch size = 1, 有时候也会出问题.
【在 E**********e 的大作中提到】 : 我试了一下自己写的Stochastic Gradient Descent。 简单的数据比如就只有两个 : features。 结果和newton raphson 迭代的结果差不多。 但是一般feature 多了。 结 : 果差别很大。 我知道SGD 能保证global minimum。但几个测试结果都让人怀疑SGD是 : 不是很有效。同样的数据用package里的GSD,结果页差很多。但是GSD好像还是比较说 : 得上的算法。诸位有是么看法。
|
d******e 发帖数: 7844 | 9 解方程和优化本来就是相通的。
Newton method有解方程和解优化两个版本。
拿SGD跟Newton比没啥不可以的,尤其是Newton的变种,比如各种quasi-newton方法
。 结
SGD是
较说
【在 w***g 的大作中提到】 : 和SGD比的不是牛顿法. 牛顿法是用来解方程的, 不是用来做优化的. : 事实上就是解方程, 很多时候也是加上regularization项后转化成 : 优化问题. 数据量大的时候, 全量的graident descent根本没法做, : 只能是SGD. 就是内存够大, SGD也会比GD收敛得快. 一般来说 : batch size的最优值在1到N之间. 纯粹的stochastic GC, 也就是 : batch size = 1, 有时候也会出问题.
|
E**********e 发帖数: 1736 | 10 谢谢。这就是我的意思。我只是想得到logisticregression的解。本身不是很了解解方
程和优化的区别。不过今天从新试了NR,GD,SGD,and Gauss_newton.同是和现成的
package比。结果就是NR和GN比较接近,快速,结果一致。GD需要100000次才收敛成NR
的结果。GSD和package接近,但是要比NR慢的多。当然如果数据量大的话,GSD也许是
比较好的选择。明天再试试QUASI_NEWTON。下一步开始学习neural network.再来比较
一下GSD。
:解方程和优化本来就是相通的。
: |
|
|
f******k 发帖数: 297 | 11 一般能用牛顿当然用牛顿了,那个是平方收敛。QN也是gradient based method, 最多
就是线性收敛,而且收敛速度和二次项的condition number有关。 |
d******e 发帖数: 7844 | 12 Newton和QN的收敛都和Hessian的condition number有关。
QN是superlinear,虽然不如Newton的quadratic,但是每个iteration的计算复杂度通
常至少节省一个problem dimension的factor。所以最后通常比Newton快。
比如L-BFGS,很多时候在大规模数据上的表现远远好过SGD和Newton。
【在 f******k 的大作中提到】 : 一般能用牛顿当然用牛顿了,那个是平方收敛。QN也是gradient based method, 最多 : 就是线性收敛,而且收敛速度和二次项的condition number有关。
|
s*******7 发帖数: 120 | 13 SGD相比batch gd的优势一是可以很方便处理streaming data,二是如果sample特别大
,即使可以全部读到内存里,SGD的收敛也比batch gd的computational complexity低 |
x****q 发帖数: 101 | 14 SGD 首先在DL里面得到广泛应用。原因前面提到,没必要也不大可能吧所以数据都都读
进来。实际上,mini-batch 有几大好处:
每次数据量小,参数更新的就快,学的就快;
能引入更多的噪声,有助于更好的学习;
newton 和sgd 一样 都是优化的一种方法而已。没有好坏吧,看应用场合。newton 总
的更新次数应该更少,但每次更新要比sgd更复杂。。。
另外,目前好像没有什么方法能保证找到global max/min吧。我知道的想模拟退火在这
方面还挺有用,当然也不能完全保证能找到global 的值。但比一般的还是有效些。 |
d*****n 发帖数: 754 | 15 一定找到全局最优的是branch bound. 但机器学习不一定要全局最优。 dl 里用全局最
优的解效果反而不好
【在 x****q 的大作中提到】 : SGD 首先在DL里面得到广泛应用。原因前面提到,没必要也不大可能吧所以数据都都读 : 进来。实际上,mini-batch 有几大好处: : 每次数据量小,参数更新的就快,学的就快; : 能引入更多的噪声,有助于更好的学习; : newton 和sgd 一样 都是优化的一种方法而已。没有好坏吧,看应用场合。newton 总 : 的更新次数应该更少,但每次更新要比sgd更复杂。。。 : 另外,目前好像没有什么方法能保证找到global max/min吧。我知道的想模拟退火在这 : 方面还挺有用,当然也不能完全保证能找到global 的值。但比一般的还是有效些。
|
E**********e 发帖数: 1736 | 16 我试了一下自己写的Stochastic Gradient Descent。 简单的数据比如就只有两个
features。 结果和newton raphson 迭代的结果差不多。 但是一般feature 多了。 结
果差别很大。 我知道SGD 能保证global minimum。但几个测试结果都让人怀疑SGD是
不是很有效。同样的数据用package里的GSD,结果页差很多。但是GSD好像还是比较说
得上的算法。诸位有是么看法。 |
m******r 发帖数: 1033 | 17 SGD 能保证global minimum ? 有出处吗? |
E**********e 发帖数: 1736 | 18 我记错了? 好像也是只能local minimum? 那么他的优势是是么? 好像找data
scientist 问这个问题的几率比较高?
【在 m******r 的大作中提到】 : SGD 能保证global minimum ? 有出处吗?
|
o******1 发帖数: 1046 | 19 要是有一种方法能够保证收敛到global minimum的话,其余所有的数值方法全部不值一
提了。跟batch or mini-batch GD一样,除非是对于convex函数,否则只能收敛到
local minimum。SGD和mini-batch GD还必须让rate随step递减并趋于0,否则结果会是
绕着local minimum打转。
我理解SGD和mini-batch GD都是在sample数量太大,内存装不了,SD算不过来的情形下
,不得已采取的措施。只要rate取得合适,只有SD能保证每一步都在优化,而另外俩只
能保证大体上往优化点跑。假设SD算得过来,完全没必要用另外两种。Ng的cousera课
程上讲到过这三种算法,可以去那儿看看。
当然了,我也是半路出家。欢迎专家指正。
【在 E**********e 的大作中提到】 : 我记错了? 好像也是只能local minimum? 那么他的优势是是么? 好像找data : scientist 问这个问题的几率比较高?
|
E**********e 发帖数: 1736 | 20 谢谢。如果sgd的结果和newton_raphson迭代的结果在一般的数据上就差别很大的话,
怎能保证大数据上结果就准确呢。我测试的几个列子,用logistic regression,就几
百的数据,包含4,5个features,结果差别很大。像这种情况sgd 或gd 根本就没是么优
势。一种情况就是可能不同的minimum。 也许我 太纠结于两种方法希望结果的一致性
。这两种方法也许在复杂的数据上,结果本来就会不一样。让我再好好研究一下,做细
致一定点。neural network 里sgd好像用的挺多。好像效果还不错。
:要是有一种方法能够保证收敛到global minimum的话,其余所有的数值方法全部不值
一提了。跟batch or mini-batch GD一样,除非是对于convex函数,否则只能收敛到
:local minimum。SGD和mini-batch GD还必须让rate随step递减并趋于0,否则结果会
是绕着local minimum打转。 |
|
|
d*****n 发帖数: 754 | 21 你在干啥?NR是解方程不动点的, 优化应该用Gauss Newton 。SGD是做优化, 并不寻
找梯度为零的解,而是误差小到一定
【在 E**********e 的大作中提到】 : 我试了一下自己写的Stochastic Gradient Descent。 简单的数据比如就只有两个 : features。 结果和newton raphson 迭代的结果差不多。 但是一般feature 多了。 结 : 果差别很大。 我知道SGD 能保证global minimum。但几个测试结果都让人怀疑SGD是 : 不是很有效。同样的数据用package里的GSD,结果页差很多。但是GSD好像还是比较说 : 得上的算法。诸位有是么看法。
|
E**********e 发帖数: 1736 | 22 不干啥。 就是想比较两种算法,了解一下。 免得面试时,说不上来。
我看了一下。 Neuton-Raphason需要找到目标函数的一次和二次direvatives, 然后根
据taylor 近似,用迭代的方法求出解。
gauss-newton不许要,可以避免求二次direvative。所说我还没试这个gauss-neutron
, 不过我估计两者获得的解在logistic regression应该会好很接近。
stochastic gd 的解就差别很大。或者way crazy。 系数有时根本就不一致,nr里正的
系数, sgd里是负的,完全不一致。 当然可能就是你说的, 不是找梯度为0的解。 而
是近似解。 在neutral network里,大家也不知道黑盒子了到底干啥, 知道得到的预
测力好久行了。
我应该比较预测的准确力,来比较两种方法的优劣。
【在 d*****n 的大作中提到】 : 你在干啥?NR是解方程不动点的, 优化应该用Gauss Newton 。SGD是做优化, 并不寻 : 找梯度为零的解,而是误差小到一定
|
w***g 发帖数: 5958 | 23 和SGD比的不是牛顿法. 牛顿法是用来解方程的, 不是用来做优化的.
事实上就是解方程, 很多时候也是加上regularization项后转化成
优化问题. 数据量大的时候, 全量的graident descent根本没法做,
只能是SGD. 就是内存够大, SGD也会比GD收敛得快. 一般来说
batch size的最优值在1到N之间. 纯粹的stochastic GC, 也就是
batch size = 1, 有时候也会出问题.
【在 E**********e 的大作中提到】 : 我试了一下自己写的Stochastic Gradient Descent。 简单的数据比如就只有两个 : features。 结果和newton raphson 迭代的结果差不多。 但是一般feature 多了。 结 : 果差别很大。 我知道SGD 能保证global minimum。但几个测试结果都让人怀疑SGD是 : 不是很有效。同样的数据用package里的GSD,结果页差很多。但是GSD好像还是比较说 : 得上的算法。诸位有是么看法。
|
d******e 发帖数: 7844 | 24 解方程和优化本来就是相通的。
Newton method有解方程和解优化两个版本。
拿SGD跟Newton比没啥不可以的,尤其是Newton的变种,比如各种quasi-newton方法
。 结
SGD是
较说
【在 w***g 的大作中提到】 : 和SGD比的不是牛顿法. 牛顿法是用来解方程的, 不是用来做优化的. : 事实上就是解方程, 很多时候也是加上regularization项后转化成 : 优化问题. 数据量大的时候, 全量的graident descent根本没法做, : 只能是SGD. 就是内存够大, SGD也会比GD收敛得快. 一般来说 : batch size的最优值在1到N之间. 纯粹的stochastic GC, 也就是 : batch size = 1, 有时候也会出问题.
|
E**********e 发帖数: 1736 | 25 谢谢。这就是我的意思。我只是想得到logisticregression的解。本身不是很了解解方
程和优化的区别。不过今天从新试了NR,GD,SGD,and Gauss_newton.同是和现成的
package比。结果就是NR和GN比较接近,快速,结果一致。GD需要100000次才收敛成NR
的结果。GSD和package接近,但是要比NR慢的多。当然如果数据量大的话,GSD也许是
比较好的选择。明天再试试QUASI_NEWTON。下一步开始学习neural network.再来比较
一下GSD。
:解方程和优化本来就是相通的。
: |
f******k 发帖数: 297 | 26 一般能用牛顿当然用牛顿了,那个是平方收敛。QN也是gradient based method, 最多
就是线性收敛,而且收敛速度和二次项的condition number有关。 |
d******e 发帖数: 7844 | 27 Newton和QN的收敛都和Hessian的condition number有关。
QN是superlinear,虽然不如Newton的quadratic,但是每个iteration的计算复杂度通
常至少节省一个problem dimension的factor。所以最后通常比Newton快。
比如L-BFGS,很多时候在大规模数据上的表现远远好过SGD和Newton。
【在 f******k 的大作中提到】 : 一般能用牛顿当然用牛顿了,那个是平方收敛。QN也是gradient based method, 最多 : 就是线性收敛,而且收敛速度和二次项的condition number有关。
|
s*******7 发帖数: 120 | 28 SGD相比batch gd的优势一是可以很方便处理streaming data,二是如果sample特别大
,即使可以全部读到内存里,SGD的收敛也比batch gd的computational complexity低 |
x****q 发帖数: 101 | 29 SGD 首先在DL里面得到广泛应用。原因前面提到,没必要也不大可能吧所以数据都都读
进来。实际上,mini-batch 有几大好处:
每次数据量小,参数更新的就快,学的就快;
能引入更多的噪声,有助于更好的学习;
newton 和sgd 一样 都是优化的一种方法而已。没有好坏吧,看应用场合。newton 总
的更新次数应该更少,但每次更新要比sgd更复杂。。。
另外,目前好像没有什么方法能保证找到global max/min吧。我知道的想模拟退火在这
方面还挺有用,当然也不能完全保证能找到global 的值。但比一般的还是有效些。 |
d*****n 发帖数: 754 | 30 一定找到全局最优的是branch bound. 但机器学习不一定要全局最优。 dl 里用全局最
优的解效果反而不好
【在 x****q 的大作中提到】 : SGD 首先在DL里面得到广泛应用。原因前面提到,没必要也不大可能吧所以数据都都读 : 进来。实际上,mini-batch 有几大好处: : 每次数据量小,参数更新的就快,学的就快; : 能引入更多的噪声,有助于更好的学习; : newton 和sgd 一样 都是优化的一种方法而已。没有好坏吧,看应用场合。newton 总 : 的更新次数应该更少,但每次更新要比sgd更复杂。。。 : 另外,目前好像没有什么方法能保证找到global max/min吧。我知道的想模拟退火在这 : 方面还挺有用,当然也不能完全保证能找到global 的值。但比一般的还是有效些。
|
|
|
r********n 发帖数: 7441 | 31 所有非线性基于梯度的优化算法都是解一个隐性的不动点问题
【在 d*****n 的大作中提到】 : 你在干啥?NR是解方程不动点的, 优化应该用Gauss Newton 。SGD是做优化, 并不寻 : 找梯度为零的解,而是误差小到一定
|
r********n 发帖数: 7441 | 32 SGD的主要优势在于可用于在线算法上而且更新算法简单,自动求导算法实现很容易,
所以在机器人里面和深度网络里面基本上是首选,对于有run time 性能要求的场合,
任何二阶算法每次迭代都太慢
【在 d******e 的大作中提到】 : Newton和QN的收敛都和Hessian的condition number有关。 : QN是superlinear,虽然不如Newton的quadratic,但是每个iteration的计算复杂度通 : 常至少节省一个problem dimension的factor。所以最后通常比Newton快。 : 比如L-BFGS,很多时候在大规模数据上的表现远远好过SGD和Newton。
|
r********n 发帖数: 7441 | 33 所有非线性基于梯度的优化算法都是解一个隐性的不动点问题
【在 d*****n 的大作中提到】 : 你在干啥?NR是解方程不动点的, 优化应该用Gauss Newton 。SGD是做优化, 并不寻 : 找梯度为零的解,而是误差小到一定
|
r********n 发帖数: 7441 | 34 SGD的主要优势在于可用于在线算法上而且更新算法简单,自动求导算法实现很容易,
所以在机器人里面和深度网络里面基本上是首选,对于有run time 性能要求的场合,
任何二阶算法每次迭代都太慢
【在 d******e 的大作中提到】 : Newton和QN的收敛都和Hessian的condition number有关。 : QN是superlinear,虽然不如Newton的quadratic,但是每个iteration的计算复杂度通 : 常至少节省一个problem dimension的factor。所以最后通常比Newton快。 : 比如L-BFGS,很多时候在大规模数据上的表现远远好过SGD和Newton。
|
r**********e 发帖数: 194 | 35 你需要去读一下相关的材料,理解Gradient Descent,Stochastic Gradient Descent
和Batch Gradient Descent的区别和联系。一般来说,计算梯度如果在数据量很大的时
候根本算不了,就算内存足够大计算速度也很慢,随机梯度下降法减少了每一步计算梯
度所需要的数据量,大大加快了计算速度。尽管需要的iteration增加了指数级别但总
的计算时间缩短了。在很多real-world online learning的问题中SGD很好的解决了由
于数据进来的方式是sequential的导致GD不能work的情况,而且通过增加iteration的
次数来有效减少每一次iteration所需要的计算量,是一个非常有效的算法。
【在 E**********e 的大作中提到】 : 我试了一下自己写的Stochastic Gradient Descent。 简单的数据比如就只有两个 : features。 结果和newton raphson 迭代的结果差不多。 但是一般feature 多了。 结 : 果差别很大。 我知道SGD 能保证global minimum。但几个测试结果都让人怀疑SGD是 : 不是很有效。同样的数据用package里的GSD,结果页差很多。但是GSD好像还是比较说 : 得上的算法。诸位有是么看法。
|
b*********1 发帖数: 11 | 36 各位大神各种优化,bound把我看晕了。怀疑学到假machine learning了。小弟猜的,
不对请轻拍,也算长知识了。
logistic loss是convex的,所以不管一阶二阶牛,都能找到global min。所以2个
feature的例子两个算法差不多。feature多了,NR还是能快速找到global因为二阶的关
系。SGD的话就要看楼主的参数了,应该肯定比两个feature要多迭代,所以两个算法不
容易结果一样。 |