関係があるということです。最適行動価値関数を得ることと最適方策を得ることは、ほぼ同じ意味を持つのです。対して次の式で更新します。選択した後、次の時刻で受け取った状態を表します。いった小さい値を使います。毎回少しづつ近づけていく形になっています5。何に当てはめようとしているのかを明示的に表す形式になっています。Q(s,a)\Bigr)と等価です。得られるという点にあります6。Replayで最大限に利用されます。作成するとは言いましたが、例えばDQNのように画像列などのむちゃくちゃに高次元なものを状態として与えたりすると、当然テーブル関数ではとてもメモリに乗りませんし、すべてサンプルを取ることなんて出来ません。いったとても手に負えない状態数になってしまいます。関数近似を使うことを考えます。この関数を用いてQ学習に相当する関数を近似するには、古典的には以下の勾配法によるアルゴリズムを使います。以下の誤差関数で表されます。このへんは一般的な、勾配法での更新とおんなじです。(s',a')をその時点での教師信号として使います。教師信号に近づけるためとして、教師信号に対する微分は行いません。Q_\theta(s,a)\end{align}となります。結果、近似関数を用いた場合のQ学習は以下のようになります。Q_\theta(s,a)テーブル関数を用いたQ学習の2つ目の更新式にとても良く似た式が現れました。微分してはならないということです。自分で微分してコードに落とすようなときはこのような間違いはまず起こりませんが、最近広く使われる自動微分を利用すると、知らない間に教師信号まで含めて微分してしまっているという事が起こりえます(しかも、学習初期は両者おんなじような感じで動くので気付きにくい)。)教師信号まで含めて微分して学習させてしまうと、ここで述べた関数近似器を用いたQ学習とは異なる性質を持つアルゴリズムになってしまいます。Linさんという方が精力的に行いました。余談ですが、この論文は複雑でダイナミックなシミュレーション環境中で、なんとか生き残ろうとするエージェントを学習させるというとても面白い論文になっています。多層(といっても全結合の3層か4層程度)ニューラルネットワークではどうしても学習が遅く、また学習率を大きくしても学習が発散してしまいます。これをなんとか高速化する方法として、上記で述べたQ学習の特性を利用します。$s'$)を全て(あるいは有限の時間数ぶん)記録しておき、一度つかったサンプルを上記の関数近似を用いたQ学習で何度も利用するという手法です。これは、テーブル関数を用いたQ学習ではサンプルの順番をどのように並べ替えても学習は進行するので、関数近似器を使ったQ学習でも同様の性質を期待するという考え方になっています。$s'$)からなる十分な数のデータがあるものとして、「これ以上サンプルを追加せず、与えられたデータから最適方策を学習する」、すなわちバッチ強化学習を行うことを考えるアルゴリズムです。Iterationのアルゴリズムの擬似コードは以下のようになります。何らかの勾配法で最小化する。生成されていて、そのためオンライン手法とは異なり、各最適化中では完全に教師あり学習になっているところです。そのため、設定的には非常に学習が安定したものとなると期待されます。ここまでくるとほとんど手法的にはNature論文のものと変わらないです。Riedmiller先生のチームはこのバッチ強化学習を主な手法として、ロボットの行動学習などに適用しています。先生もDeepmindに籍をおいているようで、驚くほど多くの強化学習研究者がDeepmindに集積されていることが伺えます。「DQNの何が新しい技術なのか?」という問いは、「以上の強化学習の関数近似に深層学習の技術を適用した」という点に尽きます。具体的には、NIPSとNatureの両方での論文で畳み込みニューラルネットワークが用いられていますが、この構造を使用したこと。それと近年開発されたRMSPropを始め、局所解にはまらない最適化手法を適用したこと。これらが本質的にDQNにおいて新しい点と言えます。(追記:ネットワークに対して状態のみを入力として、その状態における全ての行動価値の推定値を一回のforward伝搬で表現するDQNの構造は新しいものだと思うのですが、すみません確信が持てません。)(追記:$\uparrow$の追記で紹介したDQNの構造ですが,先例がありました。遅くとも2009年の時点で柴田&河野が同様の構造を持った5層の全結合ニューラルネットワークを用いてQ学習を構成し、画像入力を用いた強化学習をAIBOの行動学習タスクに適用しています9。Replayをミニバッチ手法と組み合わせて大規模に使っています。これでもなお、オンライン強化学習アルゴリズムはまだ不安定なところがあります。Batchを適用することで、オンライン「ほとんどバッチ」強化学習による安定化が図られています。私の知っている、DQNの生い立ちはこんなところです。Chainerで書いたよ(コード公開しました)というわけでDQNをChainerの練習に実装しました。githubで公開予定です。https://github.com/ugo-nama-kun/DQN-chainer追記1:公開したコードに関してnature/nipsバージョンの両方を公開しました。Environment、PythonパッケージにはNumpy、Scipy、そしてモチロンChainerが必要です。GPUでの計算を想定しているので、NVIDIAのGPUが必要です。14.04LTSでのみ動作確認しています。これは単純に、私の小規模なマシンでも動くように規模縮小したかったからです。今回の履歴の実装は、Nature誌中に記載されているアルゴリズムを愚直に実装したものなので非効率的な面があると思います。少なくともPongでは問題なく学習が行われることを確認しています。追記3:動作確認は全てATARIゲームのうち、Pongで行っています。他のゲームで学習させる方法はreadme.txtを参照してください。規模縮小しているため、想定されるパフォーマンスが学習されないかもしれません。NIPSバージョンとNatureバージョンの両方を作成しましたが、NIPSバージョンは論文中に不明なパラメータも多く、収束の雰囲気はNatureバージョンのほうがよろしい感じです。NIPSバージョンはおまけ程度と考えてください。$\downarrow$https://www.youtube.com/watch?v=ez_JEHMUpngChainerを使った感想ですが10、一度TheanoでもDQNを実装してyoutubeに動画を公開をしてみた経験から言うと、ChainerはTheanoベースのものに比べてエラーがどこで発生しているか本当にわかりやすくなっています。かなりの自由度もあるので、ニューラルネットワークのスタンダードなコンポーネントを組み合わせて使うような(畳み込みニューラルネットワークを使いたいとか、層を積んでいきたいとか)使い方ならば断然オススメできます。一方でTheanoは、なにか新しいアルゴリズムを試したいとき、ほぼそれがどのようなものでも同じような操作でGPUでの高速化が可能な点がやはり魅力です。「LSTMセルのようなでも別の、もっとイイものを新たに開発してやるぜっ!それをガッツリ最適化するぜ!」って時にはTheanoのような一般的なものを使う必要がでてくる感じがします。なるとほとんど先端研究とか学術的(でさらに特殊)な場面で使う感じになりそうですね。Tips:DQNという命名は何故起こったのか?この話は完全に蛇足になります。DQNになってマッチングしてしまったのも、結構奇跡的な感じがします。Network)になります。nets"以降から爆発的に増えたという見方がされています。)、Q学習のQは何なんでしょう。つぎに、Q-Networkという呼び方はあまり強化学習で一般的でない印象です。論文中でも、だいたい「Q学習で関数近似器にニューラルネットワークを使った」といった言い方がなされている気がします。近い表現は先ほどのLinさんが1993年の論文でQ-netという呼び方をしていて、恐らくこれが今回Q-Networkと呼ばれるようになった源流ではないかと思います。MDP)で記述できるものと仮定する」などと言います。Learning(PORL)などと呼ばれます。ATARIゲームを学習する設定はゲーム画面のみをエージェントの入力としているので当然PORLに含まれますが、4ステップ間のゲーム画面をもって状態が構成されると仮定して学習を行っています。アップデートごとに徐々に減衰していく必要があります。強化学習アルゴリズムを長期間回そうという時や動的な環境にも常にある程度適応させたいといった状況には、あまり現実的ではありません。世界のどこにもない、心を満たすロボットを。Xは2015年に設立したスタートアップです。私たちの考えるロボットは、人々の生活に潤いを与える存在として、人が一緒にいたくなるような新世代の家庭用ロボットです。便利さや機能性ではなく、家族や伴侶として愛される存在になれるかどうか。Xが追求するのはあなたの感性の領域に訴えるロボットです。upLoginユーザーは見つかりませんでした。