報酬をエージェントの学習過程で与えるのが難しい理由
強化学習における人とエージェントの相互作用(2004/1/14)の続き。Isbellの論文を元にまとめておく。
- 適切な状態空間の選択
これは、Cobotの例に限らず強化学習一般に言えると思う。適切に状態を設定しないと学習が収束しないこともある。
- 複数の報酬源と矛盾の可能性
Cobotのようにいろんな人と相互作用して学習させようとすると報酬源(ユーザ)がたくさんになる。その結果、与えられる報酬に一貫性がなくなり矛盾する可能性がある。例えば、ユーザAは行動Aに報酬を与えるが、ユーザBは罰を与えるかもしれない。これは難しい問題だが別に変なことじゃないと思う。動物や人でも矛盾する指示をされれば混乱するだろうから。子供にこんな教育したら変になるはず。
- 実験を再現できない
たくさんのユーザと接して学習していくので、同じ実験をやりたいと思っても再現できない。これは疑問。Cobotの中にログを取っておけばあとでシミュレーションできるんじゃないか?ログが大量すぎて現実的じゃないのかな。
- 訓練データがまばら
これがこの論文を読んではっと気づいた最大の問題点。強化学習の欠点は、学習が遅いことである。ここで、学習が遅いというのは「学習が収束するまでに大量の経験が必要になる」ことを意味する。経験というのは環境との相互作用から得られる。普通の強化学習はエージェントが(人を除いた)環境と相互作用していればよいので人はとにかく待ってればよかった。
しかし、人と相互作用して経験を与えなければならないとすると人にとってえらく迷惑な話になりそう。エージェントの学習が収束するまで何万回も相互作用したげないといけないから。普通の人間にはこんなことやってられない。
Cobotではそこら辺どうなっているのか?CobotはLambdaMOOの環境で約5ヶ月間、254人のユーザと3171回の報酬(または罰)を受け取ることで何らかの適切な行動(ここら辺が少し曖昧)ができるようになったらしい。つまり、経験数3171。ユーザが254人いたからいいけど、1人だと訓練してる間に飽きてしまう。現にほとんどのユーザが1回しかCobotとやり取りしていないと述べられている。逆に何度もやり取りする熱心なユーザもいるようだが。
この問題点は、学習の高速化の重要性を非常によく表している。ユーザが飽きない範囲の訓練(と時間)である程度行動に変化が現れてくれなければならない。エージェントやロボットに学習を取り入れた場合、ユーザの飽きの問題は深刻になると感じる。