作者abc2090614 (casperxdd)
看板R_Language
标题Re: [问题] Conjugate Gradient Method in optim
时间Tue Nov 15 11:54:43 2016
※ 引述《wheado (principal component QQ)》之铭言:
: [程式范例]:
: http://ideone.com/xCSQ8s
: [环境叙述]:
: R version 3.3.2 (2016-10-31)
: [关键字]:
: nonlinear conjugate gradient for minimization
: 感谢大家的指导跟建议
: 这真的好困难QQ
我目前测出来的结果是...应该是演算法本身的问题
那篇教学里有说非线性的conjugate gradient只有在起始点接近local minima时才会收敛
我在[-4,4]^2里用你的code跑了10,000个起始点,
黑色的点代表以该点为起始点有收敛到正确的极值 f(x)=-1
http://i.imgur.com/74MDxkO.png
看得出来只有在 (pi/2, -pi/2) modulo pi 的附近才会收敛到正确的点
其他地方只能听天由命
也可能是程式里有bug 但我看了半天还是看不出来
不是numDeriv的问题, 换成analytical solution也是一样
P.S. 你忘记update i=i+1
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 68.52.13.65
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1479182086.A.A4D.html
※ 编辑: abc2090614 (68.52.13.65), 11/15/2016 12:08:52
1F:推 wheado: 谢谢神人大哥开导 11/15 13:08
2F:→ wheado: 我想请问optim里面的cg到底跟我的差别在哪,为何optim可以 11/15 13:08
3F:→ wheado: 找到最小可是我的不行....看套件说明的detail都是用同样的 11/15 13:09
4F:→ wheado: 方法 11/15 13:09
5F:→ abc2090614: 我觉得有可能是浮点数的问题 在算hessian时以你的函数 11/15 14:03
6F:→ abc2090614: off-diagonal的应该是0 但用numDeriv会有一点误差 11/15 14:03
7F:推 wheado: 也就是说要去了解optim是如何自己算出gradient 跟 hessian 11/15 14:08
8F:→ wheado: ... 11/15 14:08
9F:→ wheado: 在一般问题最佳化的时候,根本就找不到函数偏微分,其他更 11/15 14:08
10F:→ wheado: 不用说了.... 11/15 14:08
11F:→ abc2090614: 也有可能是那篇文章里的作法有误 我过两天再研究一下 11/15 14:11
12F:推 wheado: 好的,谢谢大哥,我也会继续试试看 11/15 14:19
13F:→ abc2090614: 发现自己不知道在讲啥= = 应该不是浮点数问题 11/15 15:18
14F:推 wheado: 哪到底是~好混乱啊 11/15 16:13
15F:→ Wush978: 除非convex 否则演算法不保证能找到最佳解 11/16 02:22
16F:→ Wush978: optim用的演算法都是许多人试过好用的 11/16 02:22
17F:→ Wush978: 区区一篇paper的方法要打败这些被公认的好方法不容易 11/16 02:22
18F:推 wheado: 恩……所以是演算法的问题吗?那我在去看看optim 里面的CG 11/16 08:04
19F:→ wheado: 到底是怎麽跑的…… 11/16 08:04
20F:→ wheado: 但是我并没有要global min 而是希望可以跑到local min 但 11/16 08:07
21F:→ wheado: 是希望可以避开saddle point 目前的情况似乎是我的会掉到s 11/16 08:07
22F:→ wheado: addle poont 可是……optim可以掉到local min…… 11/16 08:07