用語集 · 機械学習

山登り法

別名:Hill climbing、local search、random search、局所探索、ランダム探索、ヒルクライミング

単純な探索方法です。小さなランダムな変更を加え、スコアが良くなれば採用し、それを繰り返します。

山登り法は、試しては改善することで最良の設定を探します。

  1. 推測値 xx から始めます。
  2. 近くの変更 x′=x+δx' = x + \delta を試します。たとえば、関節角の1つを少しだけランダムにずらします。
  3. スコアが良くなれば(最小化したい誤差なら f(x′)<f(x)f(x') \lt f(x) のとき)、x′x' を採用します。
  4. どんな小さな変更でも良くならなくなるまで繰り返します。

勾配が要らないので、計算できるスコアなら何にでも使えます。不連続なところがあったり、微分しにくい部分があったりしてもかまいません。そのため、一度きりのフィッティング問題に便利です。

弱点

山登り法は、どの小さな一歩でも悪くなる最初の点、つまり局所最適解で止まります。それが全体で最良の答えとは限りません。よくある対策は、いくつかの違う推測値からやり直すことや、ときには悪くなる一歩を受け入れること(焼きなまし法)です。立っている人間のように良い初期値があるなら、局所最適解はそれほど心配になりません。

勾配降下法との比較

勾配降下法は傾きを使って一歩ごとの方向を決めるので、何百万ものパラメータにも対応できます。山登り法はやみくもに一歩を試すので、姿勢のように数十個のパラメータの問題にしか向きません。

このプロジェクトでは

solve_stance.py は、体がコーチの説明した構えになるまで、脚、胴体、腕の関節を山登り法で調整します。説明とは、70/30の体重配分、足の角度、スタンスの幅、まっすぐな胴体、高いガードです。誤差はこれらの目標を組み合わせたもので、重心が両足の間のどこにあるかも含みます。

関連用語

この用語が出てくる記事

← すべての用語