Help us understand the problem. What is going on with this article?

PythonでNelder-Mead法

More than 1 year has passed since last update.

PythonでNelder-Mead法

名前の通り。だが実際は

  • Qiitaを使ってみたかった
  • GitHubを使ってみたかった
  • 他人のコードを見て勉強したかった

などの背景があるので結構雑。

  • Nelder-Mead法について

最初は改訂シンプレックス法だとか滑降シンプレックス法だとか呼ばれていた(原著論文にも書いてあるし…)が、wikiにも書かれているとおり、基本的にはシンプレックスとは無関係。
論文: Nelder, John A.; R. Mead (1965). “A simplex method for function minimization”. Computer Journal 7: 308–313

詳しいことは(英語だが)こちらに分かりやすくまとめてある。
ざっくり言うと、n次元の最適化したい関数にn+1次元の点の単体(simplex)をコロコロと変形させて最小値を探し出す。というもの。

例えば二次元空間を探索するならば、三角形を形成して探索をする。
参考サイトでは分かりやすく動画でその例を説明しているのでそこだけ見ても何となく分かる。

実はScipyに標準機能としてあったりもする
https://docs.scipy.org/doc/scipy/reference/optimize.minimize-neldermead.html
が、検索をしていてPythonで実際に書いている人を見つけたので、ついでに他人のコードを見てPythonの勉強をする。

探索する様子を可視化出来たら面白いなと思ってちょっとだけコードを改変させてもらった。
Jupyter notebookで書いたものを貼り付けた程度なので動かなかったらごめんなさい。

https://github.com/ftamon/nelder_mead_method.git
nelder_mead_method_animation.gif

以上。

aji_tomo
機械学習エンジニア(笑)1年目 何故かサーバサイドからフロントまで担当してます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away