ここから本文です

Levenberg-Marquardt法(LM法)は非線形最小二乗問題を解く有力なアルゴリズムであ...

t_t_1108さん

2011/12/2013:44:25

Levenberg-Marquardt法(LM法)は非線形最小二乗問題を解く有力なアルゴリズムである.
とありますがLM法とはどういうものでしょうか??

ネットで調べてみたんですがいいサイトが見つかりません.
わかりやすく教えていただけませんか?

閲覧数:
26,372
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

2011/12/2107:39:12

Levenberg-Marquardt法ってのは山あり谷ありの関数の谷の底を(=最小値)を見つけるアルゴリズムのこと。
骨子は
(a) 関数の微分の微分が零になる場所を探す方法
(b) 二階微分を一回微分の二乗で近似する (Gauss-Newton法)
(c) 安定性の向上の工夫を入れる(Levenberg-Marquardt法)
というもの。
以下 (a) → (b) → (c) の順で記述する。

関数の最小値を見つけたいんだから、微分をして値が減る方向に進んでいく、というのが簡単な考え方だと思う。
これを最急降下法と呼ぶ。
この方法は関数の形が何であっても確実に値を減じることができるが、とにかく遅い。
然るに関数の形に関する事前知識がある場合に、この情報を積極的に利用できないか、ってのが出発点。
で、Levenberg-Marquardt法の場合は「山あり谷ありの関数」ってのは「(局所的に滑らかな)非線型関数の二乗」の形をしている必要がある。
非線型最小二乗法の誤差なんてのはまさにそれ。
で、関数の値が作る曲面というのは何度も書いているように山もあれば谷もあるが、一般的な所見として谷底では局所的な変化が極めて小さくなることが期待される。
要はお椀の底のような形でも底の部分を拡大してみれば平らになってるってこと。
こういう「微分が零になる場所(停留点)」を見つけるために、関数を二階微分してそれが零になる位置を探す。
だが、Levenberg-Marquardt法が対象とする関数は「非線型関数の二乗」なので、その二階微分は「もとの非線型関数の一階微分の二乗」で近似できる。
これをGauss-Newton法と呼ぶ。
Gauss-Newton法は二階微分を使うだけに最急降下法よりも高速に停留点を探せる。
ただ、ここが関数の最小値とは限らないという問題がある。
この点に対する改良の一つのアプローチがLevenberg-Marquardt法。
簡単に言うとGauss-Newton法と最急降下法を合体させたような方法。
Gauss-Newton法がうまくいかないときは最急降下法でゆっくりとでも確実に値を減じて、解が近そうだなとなったらGauss-Newton法で一気に停留点に突撃する。

ところでアドバイスだが「〜の関数当てはめをしたい」とかでモデルを明記して数学か工学でやった方が良さそうだよ。
実装の質問ならここでやった方がいいとは思うけどね。
そもそも論なら「ネットで調べるのはやめなさい」ってことかな。

質問した人からのコメント

2011/12/21 11:39:55

感謝 わかりやすい解説ありがとうございます。
助かりました。かなり感謝でfす。

ベストアンサー以外の回答

1〜1件/1件中

buynnnmmm1さん

2011/12/2014:16:39

>t_t_1108さん

「Levenberg-Marquardt stdio.h」と言うキーワードで検索しました。
以下のソースのコメントにLevenberg-Marquardtと言う語句がはいってます。

http://web.media.mit.edu/~wad/mas864/psrc/test.c.txt
メインサイト
http://web.media.mit.edu/~wad/mas864/
test.cへのリンクのあるページ
http://web.media.mit.edu/~wad/mas864/proj_src.html


GNU Scientific Libraryを使った場合のソース
http://www.gnu.org/s/gsl/manual/html_node/Example-programs-for-Nonl...

などがみつかりました。

キーワードにstdio.hを加えるとCのソースが含まれているページに絞られます。


よろしくお願い致します。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。