actor-criticの実装よりアルゴリズム逆読み
強化学習の勉強会でゲーム学習の高速化の解説があった。
これらはActor-criticを基本とした並列化、GPUの使用で高速化を
図っている。ここでActor-criticのアルゴリズムを詳しく見てみた。
DQNは価値関数の改善だけで行っているが、現在の強化学習は価値関数と方策関数の改善も同時に行うActor-criticで構成されることが多い。
損失関数は報酬を反映した目標とする価値と現在の価値関数の差で与えられ、最適なパラメータは損失関数が最小になる様に求める。
しかしDQNとActor-criticは行動の選択が異なる。DQNは最大の価値になる行動を選択するのに対し、Actor-critcは最適な方策で選択される。
Actor-critic
DQNは単に局所的に価値が高い行動を選ぶだけであるが(但しε-greetyは反映されている)、Actor-criticは過去に高い価値関数が得られた履歴から学習された方策関数を採用しているので頑健性があると見做せる。
下記のActor-criticのサイトのプログラムのupdate_modelからアルゴリズムを解釈してみた。
アルゴリズムは以下のシュミレーションと学習を繰返して、価値関数と方策関数の両方を精緻化します。
(1) シュミレーション
①これまで学習した方策関数で行動を決定します。
方策関数は状態を引数でパラメータのニューロとなっています。
②行動後の状態と得た報酬を観測します。
③行動前後の状態と行動と報酬のタプルを履歴メモリーに追加します。
(2) 履歴メモリーからの価値関数と方策関数の学習
④履歴メモリーからランダムにタプルを適切な数を取り出し経験群とします。
⑤新状態群から学習した方策関数で次の行動群を決定します。
⑥新状態群と次の行動群より学習した価値関数から価値を推定します。
この価値は行動と状態を引数としてニューロで解きます。
⑦経験群にある報酬で目標価値を得ます。
⑧損失関数が最小になる様に価値関数のパラメータを更新します。
⑨上記の損失関数の最小化で微小な状態変化での行動の変化も同時に計算します。ニューロなら逆伝播で値が保持されています。
⑩微小な行動変化を入れて最適な方策関数のパラメータを更新して、最適な方策関数を得ます。
これはニューロでは教師データを与えるほかに、差分を与えて解を出力層から取り出すことができます。ニューロに行動の変化を与えて逆伝播で最適方策を得るが出来ます。
①のシュミレーションに戻ります
この様にActor-criticはシュミレーション(Actor)→履歴保存(Replay Memory)→学習(Learnier)のパイプラインになるのでこれを並列化したA3Cが可能になります。しかし下図の様にパイプラインの各要素が非同期で並列化されるGorilaではその整合性の工夫が必要になってくる。
冒頭の強化学習の勉強会での講演者が言っていたが、これらは逐次的に報酬が得られるゲームの高速化に過ぎない。迷路探索等の戦略が必要な場合はUNREAL等の探索アルゴリズムを組み込む必要がある。
好奇心による強化学習の改善の理論化とその実証の論文を読む
人間本来が持つ好奇心は未知なものへのリスクやストレスに勝つていたので様々な発展と開拓があったのは間違いはない。強化学習の分野でも好奇心による改善はいくつか示されている。
Abbeel達は次の論文で、好奇心を情報量の改善と見做し、情報理論より報酬関数の改善を理論化して、これをVIMEとして変分法で実装し実証して見せた。
[1605.09674] VIME: Variational Information Maximizing Exploration
(1) 好奇心の定式化
この論文では好奇心を以下の情報量のGainの改善と捉える。
即ち探索行動後の新局面より遷移確率のパラメータを精緻化できた量を好奇心と定式化している。
ここで
は遷移確率 パラメータで定義
は情報量(エントロフィ)
はまでの経路
それゆえ好奇心は遷移確率のの改善量としてカルバック情報量の増分で表せられる。
[2]
この行動によって遷移確率が改善されるなら、報酬と見做せるので改善された報酬は次となる。ここではハイパーパラメータ
[3]
この記述によって本論文は逆強化学習であることがわかる。
(3) 近似関数の導入
問題は事後分布を解くことであるが、これは容易に解けないので、近似関数を導入する。
但しは次式のは最小化するものとする。
近似関数は具体的にはガウス分布の重ね合わせたものを想定している。
上式は変分の公式(PRML 10.2~10.3) を使うと下限の最大化で実現できる。
但し である。
近似関数を使うと逆強化学習は次式の様に簡単になる。
[7]
(3) 目的関数
目的関数は次としている。
[10]
目的関数は第1項と第2項を変分の定理を使って変形すると次式となる。
この目的関数が正しいかは、近似が正しいく なる場合、
となるので
目的関数(10)式は
となり、目的関数の最大は好奇心を表す情報量の差分[2]式の最大になることで分る。
但し、近似は成立とした。
(4) 実装
実装のため近似関数を正規分布の重ね合わせで定義して、目的関数[10]を最大化する各平均と標準偏差を深層学習BNN(Bayesian Neural Network)で算出する。
ここで目的関数[10]の2項は以下で近似する。
変分の下限の定義は公式より次式である。
[6]
ここで、とすると次式で近似できる。
[12]
また[6]が最小値の場合、と見做せる。
よって[6]と[12]を最小化すると最適なが求めることになる。
但し右辺の第2項はサンプリングで求める。
近似関数を正規分布の重ね合わせにしたのでダイバージェンスは次式で計算できる。
上式は凸2次式なので、1階微分と2階微分を計算すれば最大値が計算できる。
まず2階微分
但し
次に1階微分
ここで
は のヘッセ行列
は の微分
一階微分と2階微分を投入して目的関数[10]を最大とするBNNで最適なパラメータを計算しての近似解を算出する
(5)実験
このVIEMは報酬を好奇心で改善する強化学習なのでTRPO(Trust Region Policy Optimization)にVIME追加して下記の古典的な3つの課題に関して比較している。
右の2例ではVIEMが無いと殆ど学習できていない。
TRPOは利益関数をを改善するパラメータが大きく逸脱しない様に最適化する手法です。この論文では明記していないがTRPO+VIEMは利益関数を算出する場合にVIMEで好奇心を反映した報酬を使っていると考えられる。
異言語間で画像を基に会話で翻訳モデルを構築する論文を読む
本来の異言語間の会話は、最初は同じ物を指して互いの言葉を言い合ったのが始まりで、互いの交流の中で細かいニュアンスまで理解する様になったのは想像に難くない。
今回の翻訳モデルは上記の過程を深層学習でモデル化したものである。従来の翻訳は構文解析や言語列の対応関係から行われてきたが、写真を媒介にした共通認識もとに言語を学び合うシステムで記号創発モデルでもある。対話を考慮しない言語モデルなんてずっと違和感があったが、やっと出現した感がある。
[1710.06922] Emergent Translation in Multi-Agent Communication
有難いことに説明の図は英語と日本語の例で示してある。(これは東大の中山研究室の論文を参照しているためと思われる)
構成としてはGANと同じ様な構成で英語→日本語 日本語→英語と①~④で循環しながら精緻化するモデルである。
①では画像を一つ選び、画像をEncode-Decodeとして英語にする。
②では逆に英語をEncodeして選択された画像を当てる。この遣り取りを繰返し深層学習のEncoderとDecoderを当たる様に訓練して英語を日本側で理解するモデル化を行う。
③では反対に日本語側で画像を選択し、これを日本語にDecodeする。
④では英語側で日本語をEncodeして選択された画像を当てる様に深層学習を訓練する。
この様に多様な写真を当てる訓練をしたEncoder→Decoderを使って翻訳システムを構築している。下図のEncode先(Decode元)は意味構造を示していると考えられる。
・結果
この翻訳は言葉ベースと文章ベース(上図)での実験があり、言葉ベースでは以下となっている。
左図は学習回数についての画像の当り(2者択一)の精度(赤)とこの訓練結果を使った翻訳(英語→独語)の精度(緑)で翻訳精度の頭打ちが見られる。
右図はベンチマークとの比較 表中のP@XXはResNetに入れるベクトルの幅と思われる。
このモデルは画像→文書生成、文書→画像生成はCNNとLSTMで出来ることは実証済みなので、これを統合したモデルとも考えられる。
このモデルの本当に面白いのは2対モデルから多数モデルに簡単に拡張できることにある。以下は英語・独語・仏語の3対モデルと実験結果である。実験結果では3対モデルが2対モデルより学習精度が良いことを示している。
ヨーロッパやブラジルの様に近親者が複数の異言語を話す場合、幼児が簡単に多言語を習得している。これは言語間を翻訳しているのではなく、イメージを媒介とした多言語の習得が効果的である事を実験でも裏付けている。
Googleロボットチームの強化学習のサーベイ記事を読む
arxivで月間2000本ぐらい投稿されるAI論文に圧倒されるが、Benny Britzには優良な深層学習や強化学習な論文をリストにしてもらい大変助かっている。Benny Britzが強化学習を否定的に書いている記事を紹介しているので興味をもったので読んでみた。
この記事は論文ではなく口語調の英語で書かれているので、解釈に迷う所が多かったが著者の強化学習の仕事を通じて、様々な例を揚げて、この分野が平坦でなく数々の問題があり、この原因の追究している。さらに今後の進路まで言及していて、殆どサーベイ論文の様になっている。
(1)簡単な自律動作に数万回の試行が必要
もし綺麗に動作する動画があっても、これは血の滲む結果であって、自分のGoogleロボットチームの強化学習モデルの実績では30%以上は失敗すると述べている。強化学習について次の様な疑問を投げかけている。
Atariゲームで人だと数分で到達できるレベルに、DQNの発展型Rainbowでも18万回の試行回数を要し約83時間ぐらいかかる。
モデルフリーのDQN型は報酬の多寡のみで反応しているので無駄が多い為で、将来の経路を織り込んだMCTS(モンテカルロツリー探索)が必要としている。アルファ碁、アルファゼロはこの方式を採用しいる。
(2)複雑な自律操作は強化学習以外でもできる
次の動画のBostonRobotic社のロボットは強化学習を使わずLQRモデルだけで精密に動作している。
LQRは現代制御理論ハミルトン・ヤコブ法で逆軌道問題を解く手法。即ち現在の状態から目的の状態への最適経路を目的の状態から逆算して解く手法である。
(3)強化学習が報酬関数の良否でモデルの性能が決まる
有名な報酬設定失敗で短絡的に回るボート
一方で報酬関数の設計が困難でかつ複雑になっている事を指摘している。
複雑な自律動作は複雑な報酬設計が必要の例
しかし適切な報酬関数の設計方法には殆ど言及していない。多分この著者は強化学習の実践寄りよりも文献派とも考えられる。
(4)報酬だけで決定される強化学習には次の大きな問題がある。
・局所解に一旦入ればそこから逃れ難い
ひっくり返ったまま走るチータの動画
・逆に局所解を逃れるため、拘束を緩めると最適解から逸脱してしまう
敵対的モデルで同じ条件だと、互いに牽制し合って動かない。条件を少し変えると直ぐ相手を殺して学習できない。
(5)ハイパーパラメータの設定によって結果が異なる
下図ではハイパーパラメータの初期値の設定により約3割は失敗している
(6)様々な強化学習の問題を見てきて最近の提案として以下を述べている
・AutoMLの様な強化学習の実験センターの利用
巨大な計算資源を共通に使いあって、皆がそこで実験した強化学習の学習サンプルを共有しあう。
・OpenAIのDota2の様なゲーム用な整備されたBotでAgentを訓練して、次第に強くする工夫で適切な強化学習モデルを構築する。
https://blog.openai.com/dota-2/
Dota2の画面
・アルファ碁、アルファ碁ゼロで敵対的強化学習の有効性が実証された。Dota2は自己対戦型も訓練できるので、敵対的強化学習を試せる可能性がある。
・Dota2の環境で行動と結果の直接的な関係と早いフィードバックにより効果的な報酬設計を学ぶ。
(7)結論として以下の提言をしている。
・学者は自己の専門分野を憎む必要がると云われている様に、強化学習を他の分野への応用することで、良い知見が得られう可能性がある。
・性能向上があれば局所解なんて別に気にしなくてよい
・やはりハードの性能の向上は早く成果を評価できるので無視できない
・報酬以外にも知見を加えた方がよい
・特化したモデルは解空間を狭めて学習できる
・強化学習では質のよい初期学習は性能に寄与する
・報酬関数の最適な近似は機械学習の理論が使える
・転移学習は次の強化学習の知見に生かせる
・最後に困難な環境がいつも難しいとは限らない
(8)感想
実際の現実の自律的なロボットに強化学習を適用するには様々な問題があると思っている。
・報酬設計
・最適方策の設定
・摩擦や誤差の問題
・部分観測での信頼度
報酬設計では逆強化学習に殆ど言及していないことに衝撃を受けた。ここではDota2の様な実験アプリを使って繰返し報酬設計をする事を推奨している。
アルファ碁やアルファゼロによる敵対学習の可能性が実証されたので、この面でDota2の自己対戦学習の環境はかなり有望である。
最も衝撃だったことはボストン・ロボテック社のロボットがLQRで構成されていることである。多分GoogleはLQRモデルの限界を知ったからソフトバンクに売ったと思われる。やはりババを掴まされた感が強い。
この著者の師匠のAbbeel達は現実のロボットを扱うので、LQRだけでなく深層機械学習と統合したGPSを提案している。以下はAbbeel達のGPSモデルの纏め
Natureに掲載されたalphaGo_Zeroの記事を読む
教師有り学習としての棋譜学習をしなくても強化学習だけで無敵になったNatureに掲載されたAlphaGo_Zeroの記事を読んでみる。
上記のURLでpaperを押下するとNatureのサイトに行くが、大学とか特定の大企業では無料でPDFがdownloadできるメニューが現れる。現われない場合は大学か大企業の友人に頼むことになるが著作権違反になるかは分らない。
Alpha碁につてはこれもNatureで読み、かなり衝撃を受けたので下記の資料に纏めてみたことがある。
上記の資料の6ページにある様に従来のAlpha碁のNatureの記事では棋譜(教師)学習のSLと強化学習のRLのパイプラインで学習していた。
どの様にして棋譜学習が必要としない仕掛けになったか、Alpha碁がどの様に構造的に変化したか興味があった。
下図はアルファ碁のRLの推論展開で「早碁モデル」をつかったものだが、
Zeroの記事にある下図の推論過程は、上記の方法と比較して全く同じであるので、SL(棋譜学習)をすっ飛ばしてRLのみで済ましている様に見える。
しかし詳細に見ると下図で勝負の結果から着手確率と場面価値を一度に深層学習で求めている所が相違している。従来のAlpha碁では勝負結果から価値を逆算してDQNで着手を決定していた。
確かに着手確率とその裏付けの価値とを同期をとって逆伝播して学習する方が精度を高めるのは間違いない。
従って損失関数は着手確率と価値を一度に算出する次式となっている。
ここで
は次の着手の確率
は方策:学習過程を繰返しで形成された着手の分布
はパラメータの正則化項
またこの着手確率と価値の損失関数を解くのに40層のResNetを使っている。
このResNetを使った方策と価値を統合することで、棋譜学習をせず強化学習のみで従来のAlpha碁より強いモデルを達成している様だ。
下図の従来の棋譜を使ったモデルと比較して、この記事の最終のコメントが衝撃的である。
「我々は人類が千年かかって作りあげた碁の知識をたった数日間で達成した!」
恐ろしい革新的な事態が次々起こってきそうである。
なお、アルファ碁のSLモデルの実装については下記参照
http://mabonki0725.hatenablog.com/entry/2017/03/29/090000
AlphaGo_Zeroの実装については下記が有名
深層学習で将来予測して最適行動する強化学習の論文を読む
深層学習で将来予測(Nステップ先)を予測して報酬を獲得する強化学習の論文を読む。
[1707.03497] Value Prediction Network
この論文はDQNの一手先のモデルを数手先を読むモデルに拡張したもので、かつ非常に洗練された構造をもつ強化学習である。
倉庫番問題等の数手先の将来予測を必要とする課題はDQNでは解けないものとして有名である。DeepMindでは下記の様なモデルを提案していたがモデルの考え方は非常に複雑で明瞭ではなかった。
DeepMindのI2Aモデルの倉庫番ゲームの論文を読む - mabonki0725の日記
この点本論文の将来予測モデルの構造がDQNのTree展開になっており、直感的て明瞭で発展の可能性がある。
ここでは観測される状態では行動オプションである
左の箱がコアとよばれこの中の近似関数は実際の報酬によってCNNやNNで学習される。
このコアは次のアルゴリズムで再帰的にTree構造で展開される。
この学習はDQNと同じTD法を多段階に拡張したものと見做せる。
損失関数は報酬と割引率のノルムとなっている。
この論文で重要な知見として、このモデルは課題に依存するモデルベースではなく、DQNと同じモデルフリーとして汎用性があるとしている。
実験:
次の様な20回移動で最大の報酬(水色)を得る課題でDQNと比較している。下図ではDQNでは5個だが、本論のVPNでは6個報酬を獲得している。
下記にこの実装プログラムがある。
https://github.com/junhyukoh/value-prediction-network
回避機能をもつ逆強化学習の論文を読む
NIPS2017で発表されたAbbeel達の回避機能をもつ逆強化学習の下記の論文を読む。
「Inverse Reward Design」https://arxiv.org/abs/1711.02827
この論文は予想外の事象に衝き当った場合の報酬を如何に修正するかの話なので、報酬設定→行動経路→逆強化学習→報酬関数の修正なので逆強化学習の一種として考えられる。
予想外の事象に突き当った場合のロボットが、部分観察MDPの確信度で対処する行動決定とそっくりである。POMDPは確信度が低い場合には、近づいたり、スピードを落としたりして観察がよく出来る様に行動させる場合が多い。
この論文は、ロボットに目的の動作が出来る様に設定する報酬のデザインが誤ったり配慮が抜けてた場合でも、ロボットが当初の目的通りに動作できる様にするものである。
論文の下図の様な例では、デザイナーは報酬を目標=1 砂漠=0.1 草原=-1として、溶岩を思いつかなかった場合が示されている。
現実の世界(本論ではReal World)を相手にすると設計者の意図以外の事象に遭遇する場合が普通であって、この場合溶岩にはまって失敗する。
この論文の意図はDeepMindの様な理想とする環境での知的動作ではなく、Abbeel達は現実の世界の知的ロボットに関心があるので、この様なアイデアを考えたと思われる。
デザイナーが与えた報酬で訓練したロボットの経路を逆強化学習して、報酬関数の重みを以下で計算した場合でも、想定外の事象では重みの信頼度を下げて、回避しょうとするのがこの論文のアイデアである。
ここで
は動作経路
は特徴量
重みの信頼度はエネルギー関数を採用してた次式の事後分布としている。
ここで
は現実世界に対応した真の重み
はMDP過程
は感応度(ハイパーパラメータ)
は特徴量の期待値
は分配関数
分配関数は算出すべき重みが不明であるので一般には計算不能であるが、経路を多くサンプリングして近似する場合が多い。
ここではランダムなサンプリング法(sample-Z)と最大エントフィ法で解いた(Maxent-Z)を使って上記の重み信頼度を計算している。
センサーが未知物体を感知した場合、一つの案として自己位置の認識に下図の様に特徴量に多次元のガウスう分布を使って重みの信頼度を計算している。
想定外の場合では特徴量が変化するので、重みの信頼度が低下し、低い重みで報酬を計算すると、報酬が低くなるので、回避することができる。
実験では分配関数をMaxEnt-ZやSample-Zを用いて重みの信頼度を計算した方が、この手当てをしない場合 Proxyより、遥かに溶岩を回避できている。
右図は未知物体では重みの信頼度の事後分布で計算した実験
左図は未知物体に統計モデルを使用した実験
Negative Side Effects センサーの想定外検知
Reward Hacking センサー情報の相互矛盾検知
Raw Ovservation ガウス分布を使って判定する
Classifyer Feature 識別器を使って判定する