強化学習にはいくつか弱点があります。
弱点① サンプル効率が悪い。
DNNでの強化学習は、入力が画像であればいろいろな課題に対応できるという大きなメリットがあります。どのようなゲームであっても行動の数を調整するだけで同じネットワークで解くことができます。
ただし学習には大量のサンプルを用意する必要があり時間がかかります。
対策の1つとして何度もプレイ可能なシミュレーターを用意するという手がありますが、シミュレータの用意も相応の時間がかかるため深層強化学習の適用は難しいのが現状です。
OpenAI Gymのようなすでに用意されているシミュレータを使うのが近道となります。
弱点② 局所的な行動に陥る・過学習することが多い
大量のサンプルを学習したとしても、最適な行動を獲得できるとは限りません。
失敗する行動パターンは次の2種類です。
- 局所最適な行動
報酬は獲得できているものの最適とは言えない行動です。
そこそこいい成績であればそれ以上頑張らないようなイメージです。 - 過学習
ある環境に特化した行動を獲得してしまうことです。
試験で問題を理解するのではなく答えを覚えてしまうようなイメージです。
弱点③ 再現性が低い。
同じアルゴリズムを同じパラメータで学習したとしても獲得報酬が異なることが多々あります。
これはフレームワークのデフォルト値が影響するためです。
☆弱点を克服するための対策
対応策は次の3点が挙げられます。
- テスト可能なモジュールに切り分ける。
各モジュールごとにテストを行うことで全体テストの前に処理をブラッシュアップします。
あるいはエージェントを複数用意して、エージェントを切り替えて効率的な学習を目指します。 - 可能な限りログをとる。
一度の実験からなるべく多くの情報を得るためです。 - 学習を自動化する。
学習の実行をスクリプト化し、設定パラメータや実行結果の明確化を目指します。
できるだけ事前に動作確認を行ったうえで実験を行い、可能な限り取得した動作ログからベストの対策を検討・実装したうえで何度もテストを行い、このプロセスを繰り返すことで強化学習の弱点を克服していきます。