私はフィードフォワードニューラルネットワークの基本と、バックプロパゲーションアルゴリズムを使用してそれらをトレーニングする方法を知っていますが、強化学習を使用してオンラインでANNをトレーニングするために使用できるアルゴリズムを探しています。
たとえば、 カートポールスイングアップ 問題は、ANNで解決したい問題です。その場合、振り子を制御するために何をすべきかはわかりません。理想的な位置にどれだけ近いかしかわかりません。私は、ANNに報酬と罰に基づいて学習させる必要があります。したがって、教師あり学習はオプションではありません。
別の状況は snake game のようなもので、フィードバックが遅れ、報酬ではなく目標と反目標に限定されます。
山登りや遺伝的アルゴリズムなど、最初の状況のアルゴリズムを考えることはできますが、どちらも遅いと思います。これらは2番目のシナリオにも適用できますが、非常に遅く、オンライン学習を助長しません。
私の質問は簡単です:強化学習で人工ニューラルネットワークを訓練するための簡単なアルゴリズムはありますか?私は主にリアルタイムの報酬状況に興味があります、しかし、目標ベースの状況のためのアルゴリズムが利用可能であれば、さらに良いでしょう。
このトピックに関する研究論文がいくつかあります。
そしていくつかのコード:
これらは、トピックに関するGoogleの検索結果の一部にすぎません。私は個人的に読んだことはありませんが、最初のいくつかの論文はかなり良いように見えます。 Google Scholarでクイック検索を行うと、強化学習でニューラルネットワークに関するさらに多くの情報が見つかると思います。
報酬につながる出力r
がネットワークにr
回逆伝播される場合、報酬に比例してネットワークを強化します。これは負の報酬には直接適用できませんが、異なる効果を生み出す2つのソリューションを考えることができます。
1)rmin-rmaxの範囲に一連の報酬がある場合、それらをすべて負でないように0-(rmax-rmin)
に再スケーリングします。報酬が大きいほど、作成される強化が強くなります。
2)負の報酬の場合-r
、負の報酬につながるものと異なる限り、ランダムな出力をr
回後方伝播します。これは望ましい出力を強化するだけでなく、不良な出力を拡散または回避します。