Re: [问题] Conjugate Gradient Method in optim

楼主: abc2090614 (casperxdd)   2016-11-15 11:54:43
※ 引述《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
作者: wheado (principal component QQ)   2016-11-15 13:08:00
谢谢神人大哥开导我想请问optim里面的cg到底跟我的差别在哪,为何optim可以找到最小可是我的不行....看套件说明的detail都是用同样的方法
楼主: abc2090614 (casperxdd)   2016-11-15 14:03:00
我觉得有可能是浮点数的问题 在算hessian时以你的函数off-diagonal的应该是0 但用numDeriv会有一点误差
作者: wheado (principal component QQ)   2016-11-15 14:08:00
也就是说要去了解optim是如何自己算出gradient 跟 hessian...在一般问题最佳化的时候,根本就找不到函数偏微分,其他更不用说了....
楼主: abc2090614 (casperxdd)   2016-11-15 14:11:00
也有可能是那篇文章里的作法有误 我过两天再研究一下
作者: wheado (principal component QQ)   2016-11-15 14:19:00
好的,谢谢大哥,我也会继续试试看
楼主: abc2090614 (casperxdd)   2016-11-15 15:18:00
发现自己不知道在讲啥= = 应该不是浮点数问题
作者: wheado (principal component QQ)   2016-11-15 16:13:00
哪到底是~好混乱啊
作者: Wush978 (拒看低质媒体)   2016-11-16 02:22:00
除非convex 否则算法不保证能找到最佳解optim用的算法都是许多人试过好用的区区一篇paper的方法要打败这些被公认的好方法不容易
作者: wheado (principal component QQ)   2016-11-16 08:04:00
恩……所以是算法的问题吗?那我在去看看optim 里面的CG到底是怎么跑的……但是我并没有要global min 而是希望可以跑到local min 但是希望可以避开saddle point 目前的情况似乎是我的会掉到saddle poont 可是……optim可以掉到local min……

Links booklink

Contact Us: admin [ a t ] ucptt.com