web-dev-qa-db-ja.com

強化学習によるニューラルネットワークのトレーニング

私はフィードフォワードニューラルネットワークの基本と、バックプロパゲーションアルゴリズムを使用してそれらをトレーニングする方法を知っていますが、強化学習を使用してオンラインでANNをトレーニングするために使用できるアルゴリズムを探しています。

たとえば、 カートポールスイングアップ 問題は、ANNで解決したい問題です。その場合、振り子を制御するために何をすべきかはわかりません。理想的な位置にどれだけ近いかしかわかりません。私は、ANNに報酬と罰に基づいて学習させる必要があります。したがって、教師あり学習はオプションではありません。

別の状況は snake game のようなもので、フィードバックが遅れ、報酬ではなく目標と反目標に限定されます。

山登りや遺伝的アルゴリズムなど、最初の状況のアルゴリズムを考えることはできますが、どちらも遅いと思います。これらは2番目のシナリオにも適用できますが、非常に遅く、オンライン学習を助長しません。

私の質問は簡単です:強化学習で人工ニューラルネットワークを訓練するための簡単なアルゴリズムはありますか?私は主にリアルタイムの報酬状況に興味があります、しかし、目標ベースの状況のた​​めのアルゴリズムが利用可能であれば、さらに良いでしょう。

61
Kendall Frey

このトピックに関する研究論文がいくつかあります。

そしていくつかのコード:

  • コード例 ニューラルネットワーク強化学習用。

これらは、トピックに関するGoogleの検索結果の一部にすぎません。私は個人的に読んだことはありませんが、最初のいくつかの論文はかなり良いように見えます。 Google Scholarでクイック検索を行うと、強化学習でニューラルネットワークに関するさらに多くの情報が見つかると思います。

26
Kiril

報酬につながる出力rがネットワークにr回逆伝播される場合、報酬に比例してネットワークを強化します。これは負の報酬には直接適用できませんが、異なる効果を生み出す2つのソリューションを考えることができます。

1)rmin-rmaxの範囲に一連の報酬がある場合、それらをすべて負でないように0-(rmax-rmin)に再スケーリングします。報酬が大きいほど、作成される強化が強くなります。

2)負の報酬の場合-r、負の報酬につながるものと異なる限り、ランダムな出力をr回後方伝播します。これは望ましい出力を強化するだけでなく、不良な出力を拡散または回避します。

7
Junuxx