kisara11235
@kisara11235

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Adam法を用いたパラメータフィッティングについて

Q&A

Closed

解決したいこと

物理計算におけるパラメータフィッティングを行っております。パラメータ数は100オーダーです。
計算について、目的関数を1度回すのにそこそこ時間がかかることもあり、効率よくフィッティングが行える方法について現在調べております。コードはすべてCで書いております。

問題として、目的関数の微分形を計算することが困難(おそらく不可能)なこともあり、準ニュートン法やPowell法のような一回以上の微分を必要とする手法をとることができず、今は勾配を必要としないsimplex法を用いて計算しています。

質問としては機械学習に用いられているAdam法を用いて計算してみようと考えています。Adam法では勾配をこちらで与える必要があるのですが、Cを用いて数値微分を行わずに計算する方法はありますでしょうか。
実際の機械学習でも微分を用いているのかも正直疑問です。

また勾配を与える必要なく、simplex法以上に効率よく、数学的にも正しい手法があれば教えていただければありがたいです。

0

2Answer

物理計算におけるパラメータフィッティングの問題について、特に100オーダーのパラメータを効率よく最適化する方法についてのご相談ですね。現在、勾配を必要としないsimplex法を用いているとのことですが、勾配を用いる方法、特にAdam法の適用を検討中とのことです。

詳細内容はこのリンクでご参考ください!
https://felo.ai/search/pHLxoohMdNVR1chrOnUvw

右側にも、要約した文章の参考リンクもあります。
image.png

0Like

※回答じゃない話を書いてよいのかわかりませんが…

simplex法(滑降シンプレックスですよね)自体の効率を上げられないのか? という観点もあり得たりしないのかな? とか思いました.
言うほどこれ系の経験があるわけではないので素人考えでしかないのですが……

例えば,こういうのは初期値の与え方(滑降シンプレックスなら「初期シンプレックスの与え方」かな)で効率(計算時間)が大きく変わる気がします.
今現在どれほど良い初期値をどうやって与えているのかわかりませんが,きっとどうにかしてパラメタ空間をある程度までは探索しているんじゃないかと思うので,そこをもっと改善できないか?みたいな視点とかは無いのかな? とか.
(この段階でもうちょっと良いスタート地点を得られるならば,後段の最適化のステップ数が相応に減るのでは?みたいな)

あと,滑降シンプレックスの場合には「シンプレックスの作り直しをいつどうやって行うか?」というのが諸々に結構効いてくるように思います.

その他:

  • 滑降シンプレックスで最終解を得るのは遅すぎるなら,ある程度の段階に達したら(サイズが十分小さくなったときとか,収縮が頻繁に起こるようになったときとか?)そこからは数値微分を用いた準ニュートン法でrefineするとかじゃダメなのだろうか?
  • 世の中には "Modified Downhill Simplex" とか "Augmented Downhill Simplex" なる言葉が存在していそうな様子. それらがどういうものなのか全く知りませんが,調べてみても良いのかも?
  • 粒子群最適化みたいのをどこかにうまく取り入れたりできないだろうか…?
0Like

Comments

  1. @kisara11235

    Questioner

    コメントありがとうございます。
    滑降シンプレックス法で間違いないです。初期値については確かにぎりぎり計算できたものがあるのでそれを流用するようにしたいと思います。

    ほかの方法について紹介していただいたものを調べてみようと思います。
    ありがとうございます。

Your answer might help someone💌