【what is this】日常生活にも多く出現する「平均」は、小学校高学年の算数で習います。それは、AIの重要分野である強化学習(Reinforcement Learning)においても不可欠です。実際、強化学習の書籍[1][2]でもそのように扱われています。そこで、本記事では書籍[1]を参考にさせていただき、改めて「平均」をプログラミングしながら再考したいと思います。
(→続編はこちらです)
■簡略化した多腕バンディット問題
ここでは、簡略化したバンディット問題を扱います。具体的には、6個のボタンがあり、それを押すと、それぞれ乱数で得点が得られます。各ボタンBnが発する乱数(符号付き実数)は、平均Mnで標準偏差1の正規分布になっています。ただし、操作者は、それらの平均値Mnを知りません。この条件下で、ある与えられた回数だけ、いずれかのボタンを押して、それらからの合計点をできるだけ高くしたい、という問題です。
図1には、合計で2,000回、全くランダムにボタンを選んで押した場合の乱数の分布を一例として示しました。(どのボタンでも、設定平均値と実際に発生した乱数の平均値はぼぼ合致しています。)
■ε-greedyポリシーに基づくボタンの選択
この問題に対する戦略として、「ε-greedyポリシー」があります。与えられた回数の範囲で、各ボタンの平均値Mnを推定しながら進めます。とにかく、ボタンが選択される毎に、そのボタンの乱数の推定平均値は正確な値に近づくはずです。しかし、いつまでも広く異なるボタンを選択し続けると、(回数の制約上)高い推定平均値のボタンを選択する機会が減り、総合得点が高くなりません。逆に、ある時点での推定平均値の高いボタンを固定的に押し続けると、他により好ましいボタンがあってもそれを活用できません。そのバランスを取るために、パラメータεを導入します。ボタン選択にあたって、乱数p(0.0 < p <1.0)を発生させて、
(1) p < εならば、ランダムにボタンを選択する。
(2) p >= εならば、この時点での推定平均値が最大のボタンを選択する。
この戦略で、ε = 1.0, 0.5, 0.1について、それぞれ200回(=1エピソード)ボタンを選択した場合の総得点の比較を、図2に示します。乱数を使っているため、常にこのとおりとはなりませんが、多くの場合、図2のように、ε = 0.1の場合が最適になります。すなわち、その時点の推定平均値が最大のボタンを選ぶことを基本とするが、10回に1回程度は、ランダムにボタンを選ぶのが最適だということです。
■グリッドサーチで、パラメータε の最適値を求める上に述べた「ε = 0.1が最適」というのは、各ボタンの元々の設定平均値が変わった場合でも成り立つでしょうか。それを確認するため、ε = 0.0〜1.0の範囲の11刻みで、設定平均値を変えてそれぞれ1,000エピソード(=1,000 x 200回)実行させた(グリッドサーチ)結果を図3に示します。ここでは、中央値を「箱ひげ図」で比較しましたが、統計学的に予想どおりの結果となりました。
本記事は、ほとんど「平均値を推定する」という話題につきますが、状況を徹底的に調べることで理解が深まると感じました。その際のプログラミングは、言語はどれでも良いのですが、今回は、PythonのListやDictionary、それとPandasのplot機能を有効に活用できたと思います。
[2] 曽我部東馬:強化学習アルゴリズム入門、オーム社、2019年5月
0 件のコメント:
コメントを投稿