作者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/m.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