Deep Reinforcement Learning(またはDeepMindを購入した理由)

DeepMindの成功について引き続き説明します。 この投稿は、スクリーン上のピクセル以外のゲームについて何も知らずにAtariゲームをプレイすることを学習するアルゴリズムです。



ここに、実際に、主要なアーティファクトがあります(このビデオを見たことがない場合は、必ず脳を吹き飛ばしてください)





5億ドルで会社を買収したとき、それは会社について一般に知られています。



免責事項:この投稿は、 closedcircles.comのかなり編集されたチャットログに基づいて作成されたため、プレゼンテーションスタイルと明確な質問の可用性に基づいています。



仕組みについての独創的な論文-https ://www.cs.toronto.edu/~vmnih/docs/dqn.pdf



だから、迅速かつQ-ラーニングについての指で



現在の状態がsであるような環境にいて、いつでも離散セットからアクションaを実行できます。 このアクションにより、システムは新しい状態になり(確率的に、つまりシステム内にランダムなものがあります)、報酬を与えたりゲームを終了したりできます。



累積収益率の概念が導入されました-これは現在の瞬間からゲームの終わりまで獲得できる報酬の合計量であり、将来の報酬は時間のティックごとにyずつ減少します。 次の瞬間の報酬はy * rであり、次から次へ-y 2 * r



したがって、最適な動作は、単一の数値を返す特定の関数Q *(s、a)によって記述できます。

主なことは、その意味を理解することです!



つまり、次のことを意味します-状態sにあり、アクションaを実行する場合、アクションaの後に最適に行動する場合、ゲームの終了までにどのような累積報酬がありますか?

そのような関数が上記で与えられている場合、その助けを借りて最適にプレイするのは簡単です-すべてのaに対してQ *(s、a)を試して、最大のものを選択してください。



誰もが理解していますか? お茶を入れます。

さて、あなたの問題。



さらに、この架空のQ *関数には、いわゆるベルマン方程式と呼ばれる重要な回帰方程式があります。

画像

それはとても美しいです。

彼は何を言っているの!



彼が言うには、確率sが次の状態sになることを知っていれば ...

次に、現在の状態sの Q *は、次のステップでの追加アクションの選択の最大値に等しくなければなりません。



まあ、彼らは、未来を知っていれば、アクションaを実行するときに現在の状態で報酬がどうなるかを理解するために、この未来を調べ、そこでどのようなアクションが最適であるかを見て、累積報酬が何であるかを言うことができると言います。



もちろん、この式は、機能を改善する反復的なステップとして表すことができます。

つまり、再び、いくつかのアクションの場合にどの状態からどのシステムに確率的に渡されるかがわかっている場合、これを使用して関数Qの近似を改善できます



あ、お茶が沸騰しました。



聞いて、私がまったく理解しなかった理由を意味する-彼女はどのようにすべてのアタリのゲームをプレイできますか?

彼女は一度にすべてのゲームをプレイするわけではありません。 彼女はすべてのゲームのQ関数をトレーニングします。



さて。 アイデアは実際にはシンプルです。 このQ関数をCNNとして紹介しましょう! (畳み込みニューラルネットワークの意味で)

入力にピクセルがあり、出力に含まれるニューロンの数が可能なアクションの数に等しい、通常のものです。 より正確には-エミュレータの過去のいくつかのフレーム(元の実装では4フレーム)のピクセルがネットワーク入力に発行されます。つまり、ネットワークは移動オブジェクトを追跡できます。

ネットワークの最後の層の各ニューロンで、目的のaに対するQ(s、a)



このネットワークをトレーニングする方法は?



以下に、現在のステップでのネットワークのバージョンと、いくつかの重みを示します。 新しいステップが発生し、aの結果としてのsからs '新しい移行と、報酬があったかどうかを学びました。

このようなタプル(s、s '、a、r)をすべて保存します。これらはすべて、ゲーム中に見たものです。



ランダムなものをいくつか選択し、上記の式を使用してネットワークの重みをわずかに強化し、次のストーリーで古い重みが予測したものから最大値を予測します。



この点を言葉で説明することは困難ですが、理解するだけです。

s-s 'の前のネットワークの予測の最大値を1ステップ検索して計算し、新しいと言って、オプションと最大値を整理して得られたものをすぐに予測します。

そして、実際にはほとんどすべて。



その結果、システムがニューラルネットワークを認識してトレーニングした状態間のすべての遷移をアルゴリズムメモリに記憶します。これは、愚かなことに、次のアクションがどこに進むかを予測します。



ニューラルネットワーク自体にはメモリと状態がまったくなく、システムメモリ全体がバランスよく訓練されています。 あなたが好きなら、筋肉はそのような記憶です。

(最後のセットではなく、履歴からランダムセットでトレーニングする必要がある理由-ポジティブフィードバックループが発生しないように、つまり、システムが特定の最近の選択の結果ではなく、データ全体に適応するように)



小さな詳細-彼らはまだいわゆるe-greedyポリシーを使用しています。

各ステップで、ランダムにランダムなアクションが確率eで実行され、確率(1-e)がQ関数の現在の推定値によって予測されます。

時間eから、それが減少することは明らかです。



画像



アルゴリズムの擬似コードは次のとおりです。

そしてそれだけです。 彼らはそれ以上何もしません。



途中でQ関数を予測するためにのみCNNをトレーニングします。 状態の配列で、繰り返します。



どのくらい勉強しているのだろう

数十時間



また、エクスペリエンスのリプレイについても説明します(一般的なフレーズで管理されていますが、コードではすべてが単純すぎます)。

エクスペリエンスリプレイは、作業中に発生したすべての状態遷移を記憶し、それらすべてをトレーニングする必要があるという事実の名前です。

はい、とてもクールです。 私が理解しているように、彼らは「忘れる」戦略の選択を本当に気にしませんでした(彼らはそれを書き換えた後、古いものを愚かに「忘れる」)。

ええ、どれだけのメモリで十分か、彼らはとても覚えています。



前処理に関して-fiに4つのイメージをパックするポイントが愚かにも計算を保存し、ローカルアニメーション/動きの方向などをなんとかしようとしていないことを正しく理解していますか?

これらは、ストーリーの最後の4フレームを入力に提供します。

これは、リソースを節約するためにフレームをスキップしても同じであるように思えるので、ネットワークはアニメーションを見ることができます。



ちなみに、Deephackの実行チームの1人で、フレーム数を3に減らしました。結果に明らかな劣化はありませんでした。

彼らは、スペースインベーダーを除いて、どこでも4で大丈夫だったことを記事に書いています(これはトレーニング時間では3よりも優れています)。

レーザーは4フレームごとに一度それらを撃ったので、隙間で見えなくなりました。 彼らは彼らのために3をしました。



入力フレームとメインフォーミュラとガンマディスカウントリバードについて説明する間、最後に愚かな質問

彼らはどこから報酬を得ましたか?

ゲームから。 愚かなスコア。 元のバージョンでは、彼らは単にスコアの変化の兆候を見ました。



「ゲームから」-エミュレーターからの追加のハックを備えたエミュレーターからですか?

質問への短い答えであると同時に、画面上のフレームとボタンのクリック方法に関する未回答の質問-http://www.arcadelearningenvironment.orgのような既製のライブラリを使用してください

私たちが21世紀に生きるなんて素晴らしいことでしょう! そして、ライダーとゲーム終了の信号は、例えば、この非常にALEによって、50以上のアタリゲームから抽出されます。



外の世界とコミュニケーションをとることはとても興味深いです。 この完全な強化強化の学習を実現するには、多くのことをまとめる必要があります。 まず、ゲームが必要です。



ゲームは進歩の主なエンジンです(そして、明らかにポルノはまだです)



ゲームがあるため、非常に強力なGPUがあります。

Atariにはゲームがあるため、エミュレーターやその他のインフラストラクチャに関する強力なコミュニティがあります。

ゲームがあり、人々がそれをプレイするので、他のゲームを作成しました。難易度の異なる優れたトレーニングプログラムです。 遠くなるほど、よりリアルになります。

自分の世話をしないでください。



ページャーよりもコードを読みたい人のために、ここに良い実装があります-https://github.com/spragunr/deep_q_rl




All Articles