風景の要素の関係図から画像を生成する論文を読む

もう15年ぐらい聞いているFM市川の琴音さんのブログに新居の写真が張ってあり、謎の物体が座椅子に乗っているので、画像から文章生成モデルで認識させてみた。

ameblo.jp

左写真は流石に新居とあって文章生成モデルではバスルームと認識され、座椅子は便器として文章生成されている。そこで座椅子の近辺での右写真では、ベットや鞄上の猫と表現されている。座椅子が認識されないのは、米国製の学習データには日本独自の座椅子が無いからと推察される。この様に画像からの文章生成モデルは、適切な学習データと対象を絞ればそれなりに高い精度が期待できそうです。

f:id:mabonki0725:20180420164753p:plain

表題の論文は逆に風景描写の文章から画像を生成したいのだが、下の左図にある様にかなり精度が低いので、文章の代わりに風景にある要素の関係図から画像生成すればリアルな画像を得られたとの報告である。

f:id:mabonki0725:20180419211733p:plain

[1804.01622] Image Generation from Scene Graphs

このモデルは下記のパイプラインで生成している。

①関係図の各要素と関係をベクトル化する。

②ベクトル表現を空間上の関係にする(object feature)

③空間上の関係から写真位置を予測する(Layout prediction)

④予測位置を条件とするGANの generaterで画像を生成する

⑤生成した画像をGANのDiscrimaterで本物か識別する

⑥GANの繰返しでリアルな画像にする

f:id:mabonki0725:20180420170501p:plain

④~⑥は普通のCondition GANで生成できる。

①~③については全く反対の画像から関係図を生成するモデルが存在するので学習データは豊富にあると考えられる。

github.com

DeepMindの「心の機械理論」Machine Theory to Mindの論文を読む

この論文は1978年に提唱された「心の理論」Theory to Mindでの人間が特有に持つ自己と他者の相違を理解する認識を深層モデルToMnet(Theory of Mind Network)で作ろうとしたものである。

Machine Theory of Mind | DeepMind

「心の理論」は次に詳しいが、幼児は他者と自分との区別が付かず、このテストで人間の発達段階がわかることになっている。

心の理論 - Wikipedia

このモデルは、強化学習を済ました多種のAgentが存在し、各エージェントの意図を学習するものなので、Meta-Learningとも云える。

具体的には、下図の様にToMnetは或る環境下でのAgentの行動履歴(a)を観察して、その好みのオブジェクト(c)を認識し、全く異なる環境(b)でのAgentの動きを予測(d)することができる。

f:id:mabonki0725:20180401210552p:plain

逆強化学習でも同じ環境しか行動予測ができないので、ToMnetの様なモデルは他に存在せず、驚くべき性能を持っている。

このモデルの目的は「心の論理」試験に合格するシニアなレベルの構築であり、実験結果は詳細に記述してあるが、モデル自体の記述は下図のToMnet(Theory of Mind Network)と称する深層学習モデルでの説明だけである。

f:id:mabonki0725:20180401210031p:plain

この図の手続きとしては

①ある環境下で2つの「埋め込み」でagentの内部を表現する

 past trajectories:或る環境下での行動履歴→char net→e_{char}

 resent trajectory:直近の行動履歴+e_{char}→mental net→e_{mental}

②新しい環境では、この2つの「埋め込み」とprediction netでagentの動きを予測する。

ここでagentの動きとして3つの特性を予測する。

 \hat{\pi}:次の行動

 \hat{c}:好みのオブジェクト

 \hat{SR}:予測経路の確率

 

ToMnetの「心の理論」の達成は下図の様な実験で示している。

ここでは誤信念課題としてサリーとアン課題を扱っている。

即ちagent(サリー)が誤信念を持っているかToMnet(アン)が判断できるか示した実験である。サリーがゴール(星印)に達した時、恣意的にゴールを動かす(a)。ゴールの移動が少ない場合にはサリーは間違いに気付くが、遠いとサリーは間違いに気付かないとアンが認識できれば正解である。(b)の方策変更量の計測ではToMnet(アン)は移動が近いと方策を変更すると予測しており、遠いと方策を変更しないと予測している。この実験でToMnetは他者の誤信念を理解するレベルに達しているとしている。

f:id:mabonki0725:20180401213325p:plain

 

 

 

 

actor-criticの実装よりアルゴリズム逆読み

強化学習の勉強会でゲーム学習の高速化の解説があった。

www.slideshare.net

 

これらはActor-criticを基本とした並列化、GPUの使用で高速化を

図っている。ここでActor-criticのアルゴリズムを詳しく見てみた。

 

DQNは価値関数の改善だけで行っているが、現在の強化学習は価値関数と方策関数の改善も同時に行うActor-criticで構成されることが多い。

損失関数\mathcal{L}_\thetaは報酬Rを反映した目標とする価値targetと現在の価値関数Q(s,a)の差で与えられ、最適なパラメータ\thetaは損失関数が最小になる様に求める。

    \mathcal{L}_\theta = (target - Q_\theta(s,a))^2

しかしDQNとActor-criticは行動aの選択が異なる。DQNは最大の価値になる行動aを選択するのに対し、Actor-critcは最適な方策a=\pi^*_\phi(s)で選択される。

DQN

     target = R + \gamma \max_{a'} Q_\theta(s',a')

Actor-critic

    target =  R + \gamma Q_\theta (s',\pi^*_\phi(s))

DQNは単に局所的に価値が高い行動aを選ぶだけであるが(但しε-greetyは反映されている)、Actor-criticは過去に高い価値関数が得られた履歴から学習された方策関数\pi_\phi(s)を採用しているので頑健性があると見做せる。

下記のActor-criticのサイトのプログラムのupdate_modelからアルゴリズムを解釈してみた。

qiita.com

アルゴリズムは以下のシュミレーションと学習を繰返して、価値関数Q_\theta(s,a)と方策関数\pi_\phi(s)の両方を精緻化します。

  (1) シュミレーション

  ①これまで学習した方策関数a =\pi_\phi(s)で行動aを決定します。

   方策関数は状態sを引数でパラメータ\phiのニューロとなっています。

  ②行動a後の状態s'と得た報酬Rを観測します。

  ③行動前後の状態と行動と報酬(s,a,s',R)のタプルを履歴メモリーeMemに追加します。

  (2) 履歴メモリーからの価値関数と方策関数の学習

   ④履歴メモリーeMemからランダムにタプルを適切な数を取り出し経験群(s_b,a_b,s_b'R_b)とします。

      ⑤新状態群s_b’から学習した方策関数a_b=\pi_\phi(s_b’)で次の行動群a_b'を決定します。

   ⑥新状態群s_b'と次の行動群a_b'より学習した価値関数Q_\theta(s_b',a_b')から価値V_bを推定します。

   この価値は行動と状態(s,a)を引数としてニューロQ_\theta(s_b',a_b')で解きます。

   ⑦経験群にある報酬R_bで目標価値を得ます。

           target_b=R_b + \gamma V_b

      ⑧損失関数が最小になる様に価値関数のパラメータ\thetaを更新します。

        \mathcal{L}_\theta = (target_b - Q_\theta(s_b,a_b))^2

      ⑨上記の損失関数の最小化で微小な状態変化での行動の変化\frac{\partial a}{\partial s}も同時に計算します。ニューロなら逆伝播で値が保持されています。

    ⑩微小な行動変化を入れて最適な方策関数のパラメータ\phiを更新して、最適な方策関数\pi_\phi(s)を得ます。

   これはニューロでは教師データを与えるほかに、差分を与えて解を出力層から取り出すことができます。ニューロ\pi_\phi(s)に行動の変化\frac{\partial a}{\partial s}を与えて逆伝播で最適方策を得るが出来ます。

    ①のシュミレーションに戻ります

 

この様にActor-criticはシュミレーション(Actor)→履歴保存(Replay Memory)→学習(Learnier)のパイプラインになるのでこれを並列化したA3Cが可能になります。しかし下図の様にパイプラインの各要素が非同期で並列化されるGorilaではその整合性の工夫が必要になってくる。

 

f:id:mabonki0725:20180316073411p:plain

 冒頭の強化学習の勉強会での講演者が言っていたが、これらは逐次的に報酬が得られるゲームの高速化に過ぎない。迷路探索等の戦略が必要な場合はUNREAL等の探索アルゴリズムを組み込む必要がある。

 

 

 

好奇心による強化学習の改善の理論化とその実証の論文を読む

人間本来が持つ好奇心は未知なものへのリスクやストレスに勝つていたので様々な発展と開拓があったのは間違いはない。強化学習の分野でも好奇心による改善はいくつか示されている。

mabonki0725.hatenablog.com

Abbeel達は次の論文で、好奇心を情報量の改善と見做し、情報理論より報酬関数の改善を理論化して、これをVIMEとして変分法で実装し実証して見せた。

[1605.09674] VIME: Variational Information Maximizing Exploration

(1) 好奇心の定式化

 この論文では好奇心を以下の情報量IのGainの改善と捉える。

即ち探索行動a_t後の新局面s_{t+1}より遷移確率p_\theta\theta \in \Thetaパラメータを精緻化できた量を好奇心と定式化している。

  I(s_{t+1};\Theta|\xi_t,a_t) = \sum_t [H(\Theta|\xi_t,a_t) - H(\Theta|s_{t+1},\xi_t,a_t) ]

        ここで

   p(s_{t+1}|a_t,s_t;\theta)は遷移確率 パラメータ\thetaで定義

   Hは情報量(エントロフィ)

  \xi_t0 \sim tまでの経路(s_0,a_0) \dots (s_t,a_t)

それゆえ好奇心は遷移確率のp(\theta|\xi,a_t,s_{t+1})の改善量としてカルバック情報量\mathcal{D}_{KL}の増分で表せられる。

  \mathcal{I}(s_{t+1};\Theta|\xi_t,a_t) = \mathbb{E}_{s_{t+1} \sim P(\cdot|\xi_t,a_t)} [\mathcal{D}_{KL} [p(\theta|\xi_t,a_t,s_{t+1}) || p(\theta|\xi_t) ] ]       [2]

この行動によって遷移確率が改善されるなら、報酬と見做せるので改善された報酬r'は次となる。ここで\etaはハイパーパラメータ

        r'(s_t,a_t,s_{t+1}) = r(s_t,a_t) + \eta \mathcal{D}_{kL} [p(\theta|\xi_t,a_t,s_{t+1}) || p(\theta|\xi_t)]    [3]

 この記述によって本論文は逆強化学習であることがわかる。

 

(3) 近似関数の導入 

問題は事後分布p(\theta|\xi_t,a_t,s_{t+1})を解くことであるが、これは容易に解けないので、近似関数q(\theta;\phi_t)を導入する。

  p(\theta|\xi_t,a_t,s_{t+1}) \cong q(\theta; \phi_t) 

       但し\phiは次式の\mathcal{D}_{KL}は最小化するものとする。 

        \mathcal{D}_{KL}[q(\theta;\phi) || p(\theta|\xi_t,a_t,s_{t+1})]

近似関数は具体的にはガウス分布の重ね合わせたものを想定している。

 上式は変分の公式(PRML 10.2~10.3) を使うと下限\mathcal{L}の最大化で実現できる。

       \mathcal{L}[q(\theta;\phi),\mathcal{D}] = \mathbb{E}_{\theta \sim q(\cdot;\phi)} [\log p(\mathcal{D}|\theta) ] - \mathcal{D}_{KL} [q(\theta;\phi) || p(\theta) ]

       但し \mathcal{D} = (\xi_t,a_t,s_{t+1}) である。

近似関数q(\theta;\phi)を使うと逆強化学習は次式の様に簡単になる。

        r'(s_t,a_t,s_{t+1}) = r(s_t,a_t) + \eta \mathcal{D}_{kL} [q(\theta;\phi_{t+1}) || q(\theta;\phi_t)]   [7]

 

 (3) 目的関数 

目的関数は次としている。

 \mathcal{L} [q(\theta;\phi_{t+1}),\xi_t ] - \mathcal{L}[ q(\theta;\phi_t);\xi_t ]  [10]

目的関数は第1項と第2項を変分の定理を使って変形すると次式となる。

  (\log p(\xi_t) - \mathcal{D}_{KL} [q(\theta;\phi_{t+1}) || p(\theta|\xi_t) ])  -  (\log p(\xi_t) - \mathcal{D}_{KL} [q(\theta;\phi_t) || p(\theta|\xi_t) ])    

この目的関数が正しいかは、近似が正しいく q(\theta;\phi_t) = p(\theta|\xi_t)なる場合、

   \mathcal{D}_{KL} [q(\theta;\phi_t||p(\theta|\xi_t)] = 0となるので

目的関数(10)式は    

   \mathcal{D}_{KL} [p(\theta|\xi_{t+1})|| p(\theta|\xi_t) ]

となり、目的関数の最大は好奇心を表す情報量の差分[2]式の最大になることで分る。

但し、近似q(\theta;\phi_{t+1}) = p(\theta|\xi_{t+1})は成立とした。

 

(4) 実装

 実装のため近似関数を正規分布の重ね合わせで定義して、目的関数[10]を最大化する各平均\mu_i標準偏差\sigma_iを深層学習BNN(Bayesian Neural Network)で算出する。

  q(\theta;\phi) = \Pi^{|\Theta|}_{i=1} \mathcal{N}(\theta_i|\mu_i;\sigma^2_i)

       \sigma = \log(1+e^\rho)

ここで目的関数[10]の2項は以下で近似する。

  -\mathcal{L} [q(\theta;\phi_{t+1}),\xi_t ] \approx  l(q(\theta;\phi_{t+1}),s_t)

        -\mathcal{L} [q(\theta;\phi_t),\xi_t ] \approx  l(q(\theta;\phi_t),s_t)

変分の下限の定義は公式より次式である。

       -\mathcal{L}[q(\theta;\phi),\mathcal{s_t}] = \mathcal{D}_{KL} [q(\theta;\phi) || p(\theta) ] - \mathbb{E}_{\theta \sim q(\cdot;\phi)} [\log p(\mathcal{s_t}|\theta) ]   [6]

ここで、q(\theta:\phi_{t-1}) \approx p(\theta)とすると次式で近似できる。  

        -\mathcal{L} [q(\theta;\phi_t),\xi_t ] \approx l(q(\theta;\phi),s_t) = \mathcal{D}_{KL} [q(\theta;\phi_t) || q(\theta;\phi_{t-1}) ] - \mathbb{E}_{\theta \sim q(\cdot;\phi)} [\log p(s_t| \xi_t,a_t;\theta) ] [12]

また[6]が最小値の場合、q(\theta:\phi_{t-1}) \approx p(\theta)と見做せる。

よって[6]と[12]を最小化すると最適な\phiが求めることになる。

 

 但し右辺の第2項はサンプリングで求める。

  \frac{1}{N} \sum^N_{i=1} \log p(s_t|\xi_t,a_t;\theta)

近似関数を正規分布の重ね合わせにしたのでダイバージェンス\mathcal{D}_{KL}は次式で計算できる。

  \mathcal{D}_{KL} [q(\theta;\phi) || q(\theta;\acute{\phi})] = \frac{1}{2}   \sum^{|\Theta|}_{i=1} [ (\frac{\sigma_i}{\acute{\sigma_i}})^2 + 2\log \acute{\sigma_i} - 2 \log \sigma_i   + \frac{(\acute{\mu_i} - \mu_i)^2}{\acute{\sigma_i}^2} ] - \frac{|\Theta|}{2}

上式は凸2次式なので、1階微分と2階微分を計算すれば最大値が計算できる。

まず2階微分

    \frac{\partial^2 \mathcal{L}_{KL}}{\partial \mu^2} = \frac{1}{\log^2(1+e^{\rho_i})}

       \frac{\partial^2 \mathcal{L}_{KL}}{\partial \rho^2} = \frac{2 e^{2\rho_i}}{(1+e^{\rho_i})^2} \frac{1}{\log^2(1+e^{\rho_i})}

   但し\mathcal{L}_{KL}q(\theta;\phi) = \mathcal{D}_{KL} [q(\theta;\phi_t) || q(\theta;\phi_{t-1}) ]

次に1階微分

  \mathcal{D}_{KL} [q(\theta;\phi+\lambda \Delta \phi) || q(\theta;\phi) ] \approx \frac{1}{2} \lambda^2  \nabla_\phi l^T H^{-1}(\mathcal{L}_{KL}) \nabla_\phi l

       ここで 

        \Delta_\phi = H^{-1}(l) \nabla_phi l(l)

        H^{-1}(l)l(q(\theta;\phi),s_tのヘッセ行列

   \nabla_phi(l)l(q(\theta;\phi),s_t)微分

一階微分と2階微分を投入して目的関数[10]を最大とするBNNで最適なパラメータ\mu_i \rho_iを計算してp(\theta)の近似解を算出する

 

 

(5)実験

 このVIEMは報酬を好奇心で改善する強化学習なのでTRPO(Trust Region Policy Optimization)にVIME追加して下記の古典的な3つの課題に関して比較している。

右の2例ではVIEMが無いと殆ど学習できていない。

f:id:mabonki0725:20180304094954p:plain

TRPOは利益関数をA_\theta(s,a)を改善するパラメータ\thetaが大きく逸脱しない様に最適化する手法です。この論文では明記していないがTRPO+VIEMは利益関数Aを算出する場合にVIMEで好奇心を反映した報酬r'を使っていると考えられる。 

mabonki0725.hatenablog.com

 

 

 

 

 

  

 

 

 

 

 

 

 

 

 

  

 

 

 

 

 

 

 

 

    

異言語間で画像を基に会話で翻訳モデルを構築する論文を読む

本来の異言語間の会話は、最初は同じ物を指して互いの言葉を言い合ったのが始まりで、互いの交流の中で細かいニュアンスまで理解する様になったのは想像に難くない。

今回の翻訳モデルは上記の過程を深層学習でモデル化したものである。従来の翻訳は構文解析や言語列の対応関係から行われてきたが、写真を媒介にした共通認識もとに言語を学び合うシステムで記号創発モデルでもある。対話を考慮しない言語モデルなんてずっと違和感があったが、やっと出現した感がある。

[1710.06922] Emergent Translation in Multi-Agent Communication

有難いことに説明の図は英語と日本語の例で示してある。(これは東大の中山研究室の論文を参照しているためと思われる)

構成としてはGANと同じ様な構成で英語→日本語 日本語→英語と①~④で循環しながら精緻化するモデルである。

①では画像を一つ選び、画像をEncode-Decodeとして英語にする。

②では逆に英語をEncodeして選択された画像を当てる。この遣り取りを繰返し深層学習のEncoderとDecoderを当たる様に訓練して英語を日本側で理解するモデル化を行う。

③では反対に日本語側で画像を選択し、これを日本語にDecodeする。

④では英語側で日本語をEncodeして選択された画像を当てる様に深層学習を訓練する。

f:id:mabonki0725:20180224204731p:plain

この様に多様な写真を当てる訓練をしたEncoder→Decoderを使って翻訳システムを構築している。下図のEncode先(Decode元)は意味構造を示していると考えられる。

   f:id:mabonki0725:20180224213536p:plain

・結果

 この翻訳は言葉ベースと文章ベース(上図)での実験があり、言葉ベースでは以下となっている。

 左図は学習回数についての画像の当り(2者択一)の精度(赤)とこの訓練結果を使った翻訳(英語→独語)の精度(緑)で翻訳精度の頭打ちが見られる。

 右図はベンチマークとの比較 表中のP@XXはResNetに入れるベクトルの幅と思われる。

f:id:mabonki0725:20180224223620p:plain

 

  このモデルは画像→文書生成、文書→画像生成はCNNとLSTMで出来ることは実証済みなので、これを統合したモデルとも考えられる。

mabonki0725.hatenablog.com

mabonki0725.hatenablog.com

 

このモデルの本当に面白いのは2対モデルから多数モデルに簡単に拡張できることにある。以下は英語・独語・仏語の3対モデルと実験結果である。実験結果では3対モデルが2対モデルより学習精度が良いことを示している。

 

f:id:mabonki0725:20180225114223p:plain

ヨーロッパやブラジルの様に近親者が複数の異言語を話す場合、幼児が簡単に多言語を習得している。これは言語間を翻訳しているのではなく、イメージを媒介とした多言語の習得が効果的である事を実験でも裏付けている。

Googleロボットチームの強化学習のサーベイ記事を読む

arxivで月間2000本ぐらい投稿されるAI論文に圧倒されるが、Benny Britzには優良な深層学習や強化学習な論文をリストにしてもらい大変助かっている。Benny Britzが強化学習を否定的に書いている記事を紹介しているので興味をもったので読んでみた。

www.alexirpan.com

この記事は論文ではなく口語調の英語で書かれているので、解釈に迷う所が多かったが著者の強化学習の仕事を通じて、様々な例を揚げて、この分野が平坦でなく数々の問題があり、この原因の追究している。さらに今後の進路まで言及していて、殆どサーベイ論文の様になっている。

(1)簡単な自律動作に数万回の試行が必要

 もし綺麗に動作する動画があっても、これは血の滲む結果であって、自分のGoogleロボットチームの強化学習モデルの実績では30%以上は失敗すると述べている。強化学習について次の様な疑問を投げかけている。

 Atariゲームで人だと数分で到達できるレベルに、DQNの発展型Rainbowでも18万回の試行回数を要し約83時間ぐらいかかる。

        f:id:mabonki0725:20180223172916p:plain

  モデルフリーのDQN型は報酬の多寡のみで反応しているので無駄が多い為で、将来の経路を織り込んだMCTSモンテカルロツリー探索)が必要としている。アルファ碁、アルファゼロはこの方式を採用しいる。

(2)複雑な自律操作は強化学習以外でもできる

 次の動画のBostonRobotic社のロボットは強化学習を使わずLQRモデルだけで精密に動作している。

youtu.be

  LQRは現代制御理論ハミルトン・ヤコブ法で逆軌道問題を解く手法。即ち現在の状態から目的の状態への最適経路を目的の状態から逆算して解く手法である。

(3)強化学習が報酬関数の良否でモデルの性能が決まる

  有名な報酬設定失敗で短絡的に回るボート

    f:id:mabonki0725:20180223174510p:plain

 一方で報酬関数の設計が困難でかつ複雑になっている事を指摘している。

     複雑な自律動作は複雑な報酬設計が必要の例

        f:id:mabonki0725:20180223183811p:plain

しかし適切な報酬関数の設計方法には殆ど言及していない。多分この著者は強化学習の実践寄りよりも文献派とも考えられる。

(4)報酬だけで決定される強化学習には次の大きな問題がある。 

 ・局所解に一旦入ればそこから逃れ難い

  ひっくり返ったまま走るチータの動画

              f:id:mabonki0725:20180223173538p:plain

 ・逆に局所解を逃れるため、拘束を緩めると最適解から逸脱してしまう

  敵対的モデルで同じ条件だと、互いに牽制し合って動かない。条件を少し変えると直ぐ相手を殺して学習できない。  

  f:id:mabonki0725:20180223174214p:plain

(5)ハイパーパラメータの設定によって結果が異なる

  下図ではハイパーパラメータの初期値の設定により約3割は失敗している 

              f:id:mabonki0725:20180223173408p:plain

 

(6)様々な強化学習の問題を見てきて最近の提案として以下を述べている

 ・AutoMLの様な強化学習の実験センターの利用

  巨大な計算資源を共通に使いあって、皆がそこで実験した強化学習の学習サンプルを共有しあう。 

 ・OpenAIのDota2の様なゲーム用な整備されたBotでAgentを訓練して、次第に強くする工夫で適切な強化学習モデルを構築する。

https://blog.openai.com/dota-2/

f:id:mabonki0725:20180223220100p:plain

               Dota2の画面

 ・アルファ碁、アルファ碁ゼロで敵対的強化学習の有効性が実証された。Dota2は自己対戦型も訓練できるので、敵対的強化学習を試せる可能性がある。

 ・Dota2の環境で行動と結果の直接的な関係と早いフィードバックにより効果的な報酬設計を学ぶ。

(7)結論として以下の提言をしている。

 ・学者は自己の専門分野を憎む必要がると云われている様に、強化学習を他の分野への応用することで、良い知見が得られう可能性がある。

 ・性能向上があれば局所解なんて別に気にしなくてよい

 ・やはりハードの性能の向上は早く成果を評価できるので無視できない

 ・報酬以外にも知見を加えた方がよい

 ・特化したモデルは解空間を狭めて学習できる

 ・強化学習では質のよい初期学習は性能に寄与する

 ・報酬関数の最適な近似は機械学習の理論が使える

 ・転移学習は次の強化学習の知見に生かせる

 ・最後に困難な環境がいつも難しいとは限らない

(8)感想

 実際の現実の自律的なロボットに強化学習を適用するには様々な問題があると思っている。

 ・報酬設計

 ・最適方策の設定

 ・摩擦や誤差の問題

 ・部分観測での信頼度 

 報酬設計では逆強化学習に殆ど言及していないことに衝撃を受けた。ここではDota2の様な実験アプリを使って繰返し報酬設計をする事を推奨している。

 アルファ碁やアルファゼロによる敵対学習の可能性が実証されたので、この面でDota2の自己対戦学習の環境はかなり有望である。

 最も衝撃だったことはボストン・ロボテック社のロボットがLQRで構成されていることである。多分GoogleはLQRモデルの限界を知ったからソフトバンクに売ったと思われる。やはりババを掴まされた感が強い。

 この著者の師匠のAbbeel達は現実のロボットを扱うので、LQRだけでなく深層機械学習と統合したGPSを提案している。以下はAbbeel達のGPSモデルの纏め

www.slideshare.net

 

 

 

 

Natureに掲載されたalphaGo_Zeroの記事を読む

教師有り学習としての棋譜学習をしなくても強化学習だけで無敵になったNatureに掲載されたAlphaGo_Zeroの記事を読んでみる。

 

deepmind.com

上記のURLでpaperを押下するとNatureのサイトに行くが、大学とか特定の大企業では無料でPDFがdownloadできるメニューが現れる。現われない場合は大学か大企業の友人に頼むことになるが著作権違反になるかは分らない。

 Alpha碁につてはこれもNatureで読み、かなり衝撃を受けたので下記の資料に纏めてみたことがある。 

www.slideshare.net

 

 上記の資料の6ページにある様に従来のAlpha碁のNatureの記事では棋譜(教師)学習のSLと強化学習のRLのパイプラインで学習していた。

f:id:mabonki0725:20180216131827p:plain

 

 どの様にして棋譜学習が必要としない仕掛けになったか、Alpha碁がどの様に構造的に変化したか興味があった。

 

 下図はアルファ碁のRLの推論展開で「早碁モデル」をつかったものだが、

f:id:mabonki0725:20180216132307p:plain

Zeroの記事にある下図の推論過程は、上記の方法と比較して全く同じであるので、SL(棋譜学習)をすっ飛ばしてRLのみで済ましている様に見える。

 

f:id:mabonki0725:20180216083622p:plain

 しかし詳細に見ると下図で勝負の結果zから着手確率pと場面価値vを一度に深層学習で求めている所が相違している。従来のAlpha碁では勝負結果zから価値vを逆算してDQNで着手を決定していた。

 確かに着手確率pとその裏付けの価値vとを同期をとって逆伝播して学習する方が精度を高めるのは間違いない。

f:id:mabonki0725:20180216083933p:plain

 従って損失関数は着手確率pと価値vを一度に算出する次式となっている。

    \mathcal{L}=(z - v)^2 + \pi^T \log p + c ||\theta||^2

    ここで

     pは次の着手の確率

     \piは方策:学習過程を繰返しで形成された着手の分布

                    ||\theta||はパラメータの正則化

   またこの着手確率pと価値vの損失関数を解くのに40層のResNetを使っている。

 このResNetを使った方策と価値を統合することで、棋譜学習をせず強化学習のみで従来のAlpha碁より強いモデルを達成している様だ。

 

 下図の従来の棋譜を使ったモデルと比較して、この記事の最終のコメントが衝撃的である。

 「我々は人類が千年かかって作りあげた碁の知識をたった数日間で達成した!」

 恐ろしい革新的な事態が次々起こってきそうである。

 

f:id:mabonki0725:20180216090114p:plain

   

    なお、アルファ碁のSLモデルの実装については下記参照

          http://mabonki0725.hatenablog.com/entry/2017/03/29/090000

 AlphaGo_Zeroの実装については下記が有名

     https://github.com/mokemokechicken/reversi-alpha-zero