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