深層学習でプログラムを自動生成する論文を読む

ランニング30分 英語できず

(1) 深層学習でプログラムを自動生成する論文を読む

 「DeepCoder:Learning to Write Programs」

     https://www.microsoft.com/en-us/research/publication/deepcoder-learning-write-programs/

  この論文は下図の様なInput配列とOutput配列より、その過程のプログラムを生成するモデルで相当衝撃的な内容です。モデル名 LIPS(Learing Inductive Program Synthesis)

f:id:mabonki0725:20171022130938p:plain

      整数宣言→ 負値のみ採用→4倍→ソート→逆順

 

 プログラムはDSL(Domain Specified Language)で定義された次の30個の手続きの組合わせを

 推定してプログラムを構成します。(DSLの定義はAppendex F参照)

  一階関数: Head Last Take Drop Access Minimum Maximum Revese Sort Sum

     高階関数:Map Filter Count ZipWidth ScanL1 

     ラムダ関数:Mapの引数 (+1) (-1) (*2) (/2) (+(-1)) (**2) (*3) (/3) (*4) (/4)

                             Filterの引数 (>0) (<0) (%2 == 0)  (%==1)

                             ZipWidht ScanL1の引数  (+) (-) (*) 

 深層学習では教師付学習で上記の例では以下の出力が得られています。高い確率のDSLが使われている事がわかります。f:id:mabonki0725:20171022140753p:plain

 

(1.1) 手法

 組合わせは30個に限定されていますので、入出力から最適な組合わせを見つけるのは

 深層学習で教師付学習で行います。

 深層学習は確度の高い組合わせの候補を絞るだけなので、論文ではGuid法と云っています。

 そこで深層学習から出た組合わせでプログラムを構成するには、以下の手法を採用しています。

    ・DFS(深さ優先探索

     ・Enumeration(Sortと追加の試行錯誤)

     ・\lambda^2ツール採用

 また矛盾が無いか確かめるため、検証ツールSMTを採用しています。

 

 以下が深層学習を援用したプログラム生成の手続きです

    1)  DSLを深層学習の入出力にするためEncoder でベクトル化して 

    Encoder → Decoderモデルとなっています。 

    Encoderは上記の30個のDSLの有無を(0,1)でコード化\mathcal{A}(P)します。

    q(\mathcal{A} (P)| \varepsilon)の確率が最も高い値になる様に学習します。

   ここで

                Pはプログラム

    \varepsilonは入出力のデータ 

  2) DSLの分解と最大尤度での組合わせ

      各DSLの尤度の合成が最大になる様に組合わせを選択します

        q(\mathcal{A}(P)|\varepsilon)=\Pi_{n=1}^N  q(\mathcal{A}^n(p^n) | \varepsilon^n)

             ここで

                NはプログラムPをN個に分解

    p^nは分解された各DSL

                \varepsilon^nは各DSLp^nで分解された入出力         

     3) 深層学習によるq(\mathcal{A}(P)|\varepsilon)の推定

   この深層学習は入出力と正解プログラム\mathcal{A}(P)の教師学習で訓練されます。 

         ・深層学習は以下の構成となっています。

f:id:mabonki0725:20171022141223p:plain

  ・深層学習の最上位の推定結果は次の様になっていて候補とDSLの選択確率が求まっています。

  ・  隠れ層ではRNNやLSTMを使う場合があります。

f:id:mabonki0725:20171022142010p:plain

 

 (1.2) 結果

 ・プログラム生成した結果

f:id:mabonki0725:20171022160330p:plain

 ・採用モデルの成績の比較

  深層学習+DFS or Enumeration法が優れている結果になっている

   DFS : 深さ優先探索

         L2:\lambda^2  プログラム結合ツール採用  (Fester et al. 2015)

         Enumeration : Sort and Add 法にちょる結合法採用

         Beam search

         Sketch: デバック検証ツール(SMT)の採用 

         Prior order : 出現確率の高い順

         Neural network :  深層モデル

f:id:mabonki0725:20171022161033p:plain

      

           

 

 

 

画像から原因と結果を識別する論文を読む

(1) 画像から原因と結果を識別する論文を読む

 「Discovering Causal signals in Images」https://arxiv.org/abs/1605.08179

   これもhttps://twitter.com/miyamotok0105さん主催の「酒を飲みながらCVPR2017の論文を読む会」で興味を持った一つです。

 この論文は静止画像から原因となる物体と結果となる物体を特定するものです。

 下図は人間が犬とフリスビーで遊んでいる画像で、犬がフリスビーに飛びついています。

 ・人間がフリスビーを掲げているのが原因  (causal)

 ・犬が飛びついているのが結果                      (anticausal)

f:id:mabonki0725:20171020224752p:plain

 一般にデータから原因を特定する方法は2つあります。 

  1) 操作の介在があるデータから原因を推定   

   介入前後のデータの状態が変化するので、その変化より原因を推定します

  2) データの特性から原因を推定 ICM(Inpedent Causal Mechanism)方式

   データの分布状態から原因を推定します。

 1)の精度は高いですが介入操作が必要です。2)はノイズがあると識別できません。

 この論文は静止画像なので2)の方法に採っています。

 

  (1.1) 静止データでの原因分析 

 ICMでは誤差の状態で判別しますが、2方法あります。 (a) (b)図

 ・ANM(Added Nose Model)で誤差の状態で原因が識別できます。

           x \to y       y=f(x)+\epsilonの場合は誤差\epsilonが縦に並びます

           y \to x      x=f(y)+\epsilon の場合は誤差\epsilonが横に並びます

  下図だと赤の棒線線の幅が(a)では同じ、(b)では相違しているのでノイズの並びか分ります。

 ・Monotonic法 (c)図

  真値(実践)からのノイズの分布を見ると横方向には矩形、縦方向には山形になって、この分布は  y=f(x)+\epsilon で形成されたことが分ります。

f:id:mabonki0725:20171020230544p:plain

  ・独立成分分析(ICA) 

   手法としては独立成分分析(ICA)で分布の方向を探ることができます。

   下図はその例です。ノイズの方向が見えない場合でもICAは判断することができます。

    http://www.geocities.jp/mabonakai/sub/ex_icaCausal.htm 

    f:id:mabonki0725:20171021075624p:plain

 (1.2) 論文の手法

 データを高次元に写像してICMを使っています。

 本論文の手法では、まず画像を部分画像m個に分解します。

    この分解方法については一般の矩形(BoundingBox)で行います。

 

  (1.2.1) pixelベースの「原因」「結果」判別分析

    ICMはpixelデータを高次元に写像して行っています。

 一般にデータを高次元に写像するとデータは分離しやすくなります。

f:id:mabonki0725:20171021092726p:plain

    高次元の写像にはカーネルが一般的ですが、ここでは深層モデルで行っています。

 ・カーネルによる高次元写像

     KCC( [(x_{i,j},y_{i,j} ) ]_{j=1}^{m_i}) = \psi \left( \frac{1}{m_i} \sum_{j=1}^{m_i} \phi(x_{i,j},y_{i,j}) \right)

         ここで

    x_{i,j} \ \ y_{i,j} は部分画像iのpixel

            m_iは部分画像iのpixel数

            \phi(x_{i,j},y_{i,j}) は画像をカーネルで高次元に写像

   \psiは原因か結果かのICM2値判別関数

 ・深層学習によるデータの高次元化NCC(Neural Causation Coefficent)

  f:id:mabonki0725:20171021082605p:plain

       この論文では次式を使って「原因か結果」かを判別しています。

       次式の値が1に近ければ「結果」となります。

     \frac{1}{2} \{1- NCC ( [(x_{i,j},y_{i,j} ) ]_{j=1}^{m_i})) +  NCC( [(x_{i,j},y_{i,j} ) ]_{j=1}^{m_i})  \}

 

(1.2.1) 物体レベルの判別分析  

  しかしながらpixelベースでは「原因か結果」では判別が難しいので、

    最終的には物体c_kとその特徴量f_kとでNCCで判別しています。

 物体c_kとその特徴量f_kは深層学習で20個識別しています。

          NCC( [(c_k,f_k ) ]) = \psi \left( \frac{1}{m_k} \sum_{j=1}^{m_k} \phi(c_{k,j},f_{k,j}) \right)   

 上段が物体の検出精度で、下段が「結果」の識別精度となっています

f:id:mabonki0725:20171021084534p:plain

 

 

交通事故が起こる危険な場面の画像生成の論文を読む

ランニング30分 英語できず

(1) 交通事故が起こる危険な場面の画像生成の論文を読む

  「Expecting the Unexpected:Training Detectors for Unusual Pedestrians with Adeversarial Imposers」 https://scirate.com/arxiv/1703.06283

 この論文は歩行者の危険な場面の画像を自動生成するものです。      

 これはhttps://twitter.com/miyamotok0105さん主催の「酒を飲みながらCVPR2017の論文を読む会」で興味を持った一つです。

 一般道の自動運転を可能にするには、危険な事象のデータを大量に集めて予測回避モデルを構築する必要がありますが、この事象は非常に稀なので限界がありました。しかし、この様な場面を大量に生成できれば精度のよいモデルが出来る可能性があります。

 現在はOpenposeで動作予測をしていて、歩行者の危険な行動を事前に察知できないかと問題意識を持っていた所、論文になっていたので読んでみました。

(1.1) 手法

 この論文は3Dゲーム作成ツールを使ったGANモデルとなります。

  ・偽画像はゲーム作成ツールUnity3Dで生成

  ・本物の画像はGoole ImageやBaidu Imageのタイトルを[traffic violation]等の言葉で検索し

   危ない歩行者の画像を集めたものです。 

     GANなのでUnity3D生成器はより本物らいい画像を生成し、識別器は本物と偽物を識別し互いに敵対的に訓練します。

f:id:mabonki0725:20171020104118p:plain

 最も一般的な3Dゲーム生成ツール[Unity]で様々な場面を生成しますが、パラメータzを変動させて生成します。また経験的に人物の重なりは20%以下等の制限を入れています。

 パラメータzは多変量でキャラクター、背景、太陽の方向、歩行者の姿勢、天候等があります。 

f:id:mabonki0725:20171019215319p:plain

 よってGANの使命は危険な画像になる様なp_\theta^{Unity}(z)を求める事になります。

 一般のGANの式は以下です。

  min_G \  max_D V(D,G) = \mathbb{E}_{x \sim p_t(x)} [\log D(x) ] + \mathbb{E}_{z \sim p_z(z)} [\log(1 - D(G(z))) ]

 しかしUnity3Dでゲーム場面を生成するので

  min_I \  max_D V(D,I) = \mathbb{E}_{x \sim p_t(x)} [\log D(x) ] + \mathbb{E}_{z \sim \color{red}{Unity(Z_I)}} [\log(1 - D(G(z))) ]

    画像生成パラメータZ_Iは多変量の正規分布を仮定して最適化はGANの深層学習で実現しています。しかし間にUnity3Dが入っていので直接微分可能ではなく収束しないかもしれません。

 

    この論文では2段階のアルゴリズム RPN(Region Proposal Netwrk)で物体認識を実現しています。 

 ・アルゴリズム①(偽者画像の選択)

  偽者の画像で本物と誤認識率た高い複数の画像Iを選択

 ・アルゴリズム②(物体認識)

  まず予備訓練として偽の画像で物体認識を訓練

  本物とアルゴリズム①で得た紛らわしい画像で物体認識を訓練

  次に本物だけで物体認識訓練

 

(1.2) 結果

 危険な歩行者の状態を生成した画像で、物体を矩形で認識しています。 

f:id:mabonki0725:20171019221040p:plain

 

分散型DQNの論文を読む

ランニング30分 英語できず

(1) 分散型DQNの論文を読む

 「A Distributional Perspective on Reinforcement Learning

https://arxiv.org/abs/1707.06887

 この論文はDeepMindのDQNの派生モデルを統合したRainbowの中核を成すもので、DQNに初めて行動価値関数の分布を取り込んだモデルです。

 ロボット学のAbbeel達は方策\pi分布の最適化TRPOを提唱していますが、行動価値関数と方策との相違だけで殆ど似たモデルとなっています。やはり細かい制御をするには分布モデルが必要な様です。

 動機としては、簡単なPongゲームでも報酬が複雑な分布をしており、この報酬分布を旨く取り込んで強化学習の精度を向上させようとするものです。

f:id:mabonki0725:20171018183211p:plain

(1.1) 手法

 分布の行動価値関数は以下の(a) \sim (d)で作成します。

    ここでDQNは次の損失関数\mathcal{L}(\theta)を零にする様に\thetaを学習しますので

        \mathcal{L}(\theta) =[R+\gamma Q_{\theta-i}(s_{t+1},a_{t+1})-Q_\theta(s,a)]^2

 下図は細分化変数zを用いてQ \to P^\pi Zに置き換わったDQNといえます。

f:id:mabonki0725:20171018185434p:plain

 ここで

  zは分割したベクトルです

  P^\piは方策\piでの行動価値関数q(s,t|\theta-i)です

  \gamma \ \ Rは割引関数と報酬です

  \Phiは分布の整形作用素です(後述)

 まずzを報酬V_{min} \sim V_{max}N_{atoms}に分割してます。

 ここでV_{min} \ \ V_{max}は固定のパラメータです。

    報酬z_j毎に細分化した行動価値関数p_j(s,a)分布を算出します。

  p_j(s,t) = \Phi \hat{\mathcal{T}} z_\theta = \sum_{j=0}^{N_{atoms}}  \left(1 - \frac{|[\hat{\mathcal{T}}_{z_j}]_{V_{min}}^{V_{max}} - z_i|}{\Delta z} \right)_0^1 \cdot p_j(s_{t+1},\pi(s_{t+1}))

       z_\theta(s,a) = (p_1(s,a) \dots p_{N_{atoms}}(s,a))^T

       ここで 

   [\cdot]_a^ba \sim bまでの範囲を示します

           \pi(s) = argmax_a Q(s,a) 

   ZについてのDQNなので\thetaの損失関数\mathcal{L}_{s,a}(\theta)は前の方策z_{\theta_-1}(s,a)と現在のz_\theta(s,a)との差としています。

                 \mathcal{L}_{s,a}(\theta) = \mathcal{D}_{KL} [z_{\theta-1}(s,t) || z_{\theta}(s,a) ]

 

(1.2) 結果

 通常のDQNより早期に精度が向上していおり、分割数も多い方が精度が高いことを示しています。

f:id:mabonki0725:20171018195209p:plain

 

 

DeepMindのDQN統合版のRainBowの論文を読む

ランニング30分 英語できず

(1) DeepMindのDQN統合版のRainBowの論文を読む

 「Rainbow:Combining Imporvements in Deep Reinforcement Learninghttps://arxiv.org/abs/1710.02298

 2013年に発表されたDeepMind社のDQNの派生版を統合したRainbowの高パフォーマンスの論文です。

        f:id:mabonki0725:20171017160719p:plain

 DQNは2年後にアルファ碁のモデルの中核部分をなすモデルで如何に革新的なものであるか実績が示しています。

 DQNはDeepLearningを使ってEnd-to-Endでモデルを精緻化することに成功しました。

  ・DeepLearning(CNN)による特徴量の自動抽出

  ・自動抽出した特徴量を変数とする行動価値関数の精緻化

 特徴量による価値関数の精緻化はSuttonのニューロモデルで既に実現されていましたが、特徴量の抽出は試行錯誤でした。

 

 整理のためDQNの論文よりQ-learningの式を掲げます。

              https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf

    次式は繰返し毎に推定された前の価値行動関数と現在の価値行動関数の差を零にする様に学習しています。

         \mathcal{L_i}(\theta_i) = \mathbb{E} _{s,a \sim \rho(\cdot)} [y_i - Q(s,a | \theta_i)]^2

         但し、 y_i = \mathbb{E}_{s' \sim \varepsilon} [r + \gamma \ max_{a'} [Q(s',a' | \theta_{i-1} )]

 損失関数はL^2なので微分式は以下となります

   \frac{\partial \mathcal{L}_i(\theta_i)}{\partial \theta_i} = \mathbb{E}_{s,a \sim \rho(\cdot) \ s' \sim \varepsilon} [ \{r + \gamma \ max_{a'} [Q(s',a' | \theta_{i-1} ) -Q(s,a | \theta_i) \} \frac{\partial Q(s,a | \theta_i)}{\partial \theta_i}  ]  

         ここで

            \mathcal{L}_i(\theta_i)は損失関数

   iは繰返し数

            Q(s,a|\theta)\theta微分して精緻化する行動価値関数

   r \ \ \gammaは報酬と割引率

 しかしDQNには不得意なゲームがあり、その克服のため多くの改良版が主にDeepMindによって達成されてきました。

 

(1.1) 手法

  以下の6モデルを統合したのがRainbowとなりますが、

  5)の分散型強化学習(Deistributional RL)がベースとなっています。

  1) Double Q-Learning

   過学習を避けるため、a' \to max_{a'} Q(s',a'|\theta)でQ関数で推定し2重化しています。    

              \mathcal{L_i}(\theta_i) = \mathbb{E} _{s,a \sim \rho(\cdot)} [y_i(\theta_i) - Q(s,a | \theta_i)]^2

               y_i(\theta_i) = \mathbb{E}_{s' \sim \varepsilon} [r + \gamma [Q(s', max_{a'} Q(s',a' | \theta_i)| \theta_{i-1} )]

  2) Prioritize replay

   差の拡大を避けるためサンプリングの間隔を比例させています。

    \mathcal{p}_t  \propto  [r + \gamma \  max_{a'} [Q(s',a' | \theta_{i-1} ) ] - Q(s,a | \theta_i)]^2\

        3) Dueling netwwork

   DeepLearningの構成を強化学習用に変更 (意味不詳)

        4) Multi-step Learning

   倉庫問題や迷路問題を解くため、N期先の行動価値関数を推定しています。

           \mathcal{L_i}(\theta_i) = \mathbb{E} _{s,a \sim \rho(\cdot)} [y_i^N - Q(s,a | \theta_i)]^2

           但し、 y_i^N= \mathbb{E}_{s' \sim \varepsilon} [\sum_n^N r _n+ \gamma^N \ max_{a'} [Q(s_i^N,a' | \theta_{i-1} )]

        5) Deistributional RL

   これ以外は全て行動価値関数Q(s,a|\theta)の学習(Q_learing)でしたが、

           ここは唯一方策\piの学習になります。

            このアイデアはライバルAbbeel達のTRPO(Trust Region Policy)に近いものです。

   ここで報酬z区間v_{min} \sim v_{max}N_{atoms}に分割して、

            報酬z_i毎に行動価値関数q_\theta^i(s_t,a_t|z_i)を求めて方策\pi_\theta^*分布としています。

            \thetaの損失関数\mathcal{L}_{s,a}(\theta)は前の方策\pi_{\theta_-1}と現在の\pi_\thetaとの差としています。

                 \mathcal{L}_{s,a}(\theta) = \mathcal{D}_{KL} [\pi_{\theta+1} || \pi_\theta ]

     \pi_{\theta+1} = p_{\theta+1} (S_{t+1},a_{t+1}|z') \ \  z'=r + \gamma \cdot z

 

        6) Noisy Net

   DQNはMontezuma’s Revengeの様な変化の多い空間で移動する様なゲームでは同じ場面を繰返して最も不得意にしていました。

   そこで場面に叙々に少なくなる様なノイズをいれ大局的に場面の特徴量を掴む工夫を導入しています。

 f:id:mabonki0725:20170827095038p:plain

(1.1) 結果

 6個のモデルを統合したRainbowはゲームを問わず高得点を達成することを示しました。

f:id:mabonki0725:20171017161210p:plain

 

 

 

 

Abbeelの対等な敵対的ロボットの論文を読む

ランニング30分 英語できず

(1) Abbeelの対等な敵対的ロボットの論文を読む

 「Continuous Adaptation via Meta-Learning in Nonstationary and Competitive Environments」https://arxiv.org/abs/1710.03641

 対等な敵対的モデルはOpen-AIの手作りのカリキュラムを利用するモデルhttps://arxiv.org/abs/1710.03748が先日投稿されましたが、この論文は正攻法で対等な敵対モデルに取り組んだものです。モデル名はRobosumoです。

   f:id:mabonki0725:20171015222544p:plain

 強化学習のモデルはDeepMind(Google)対UC Barkeley(OpenAI)の両巨頭に絞られてきた感があります。DeepMindはQ-Learnig BarkeleyはTRPOをベースにしており、どちらが「強いAI」に至るか固唾を飲んで見守っている感じがします。

(1.1) 手法

 この論文の敵対的なモデルはタスクという概念を使い2階層モデルでできています。タスクは敵対的な相手に対する戦略の様なものです。

 ・1階層目 (メタ学習)前のタスクT_{i-1}\to T_iの方策\pi_\phiの改善

 ・2階層目 (強化学習)動作\tauの方策\pi_\thetaの改善

f:id:mabonki0725:20171015221913p:plain

最適化問題は次で定式化しています。

 min_\theta \mathbb{E}_{T \sim D(T)} \mathcal{R}_\tau(\theta)

    \mathcal{R}_\tau(\theta) = \mathbb{E}_{\tau_\theta^{1:K} \sim P(\tau|\theta)} [\mathbb{E}_{\tau_\phi \sim P(\tau|\phi)} \{\mathcal{L}_T(\tau_\phi) | \tau_\theta^{1:K} ,\theta \} ]

  上式は2階層の期待値で出来ていることがわかります。

  第1階層目 \mathbb{E}_{\tau_\phi \sim P(\tau|\phi)} \{\mathcal{L}_T(\tau_\phi) | \tau_\theta^{1:K} ,\theta \} 

  第2階層目  \mathbb{E}_{\tau_\theta^{1:K} \sim P(\tau|\theta)}

    ここで

       T \sim D(T)はタスクの分布

  \mathcal{R}_\tau(\theta)は動作\tauでの報酬

  \tau_\theta^{1:K}は経路\tau_\theta^1 \sim \tau_\theta^K

  \mathcal{L}_T(\tau_\phi)は損失関数

 

 上式の最適化問題の動作\tauをタスク間の動作に置き換えます。\tau \to T_i,T_{i+1}

 min_\theta \mathbb{E}_{T \sim D(T)} \mathcal{R}_{T_i,T_{i+1}} (\theta)

    \mathcal{R}_{T_i,T_{i+1}}(\theta) = \mathbb{E}_{\tau_\theta^{1:K} \sim P(\tau|\theta)} [\mathbb{E}_{\tau_{i+1,\phi} \sim P_{T_{i+1}}(\tau|\phi)} \{\mathcal{L}_{T+1}(\tau_{i+1},\phi) | \tau_\theta^{1:K} ,\theta \} ]

 

(1.2) 結果

 試合の回数に対する足の位置での報酬の低減です。提案モデルはMLP+meta-update LSTM+meta-update が該当します。提案モデルでは報酬の低減が緩やかになっています。

f:id:mabonki0725:20171015222837p:plain

 

  

 

安定的な動作を保持するTRPOの論文を読む

ランニングできず 英語:Toiec 30分

(1) 安定的な動作を保持するTRPOの論文を読む

 「Trust Region Policy Optimization」https://arxiv.org/abs/1502.05477

  この論文はロボットの強化学習で革新的な貢献をしたモデルです。UC Berkeleyのロボットチームの Shulmanが2015年にICMLで発表しました。

 ロボットの制御で必ずコストが低くなる(報酬が高くなる)信頼範囲(Trust Region)で方策\pi_\thetaを改善していくアイデアです。

          f:id:mabonki0725:20171014234339p:plain

   当然このTrust Region内で維持していくには、細かい行動する制限が加わることになりますが、これによって複雑な機械がスムーズに動作できることを実現しました。

(1.1) 手法

 ここでは報酬rの代わりにコストc=-rで考えます。

 一般化利益関数A(s,a)(Generalized Advantage Estimation)は行動aによって受ける利益(ここではコスト削減)を示します。

   A_{\pi_\theta}(s,a) = Q_{\pi_\theta}(s,a) - V_{\pi_\theta}(s)

           ここで

    sは状況

    V_\pi(s)は状況sの価値

    Q_\pi(s,a)は状況sで行動aを採った後の価値

 そこで、異なる方策\tilde{\pi}を採った場合の改善度\etaは次のとなります。

   \eta(\tilde{\pi}) = \eta(\pi) + \sum_s \rho_{\tilde{\pi}}(s) \sum_a \tilde{\pi}(a|s) A_\pi(s,a)

          但し、\rho_{\tilde{\pi}}(s)=P(s_0 = s) + \gamma P(s_1=s) + \dots + \gamma^t P(s_t = s)

     この式より\sum_a \tilde{\pi}(a|s) A_\pi(s,a) \lt 0なら必ずコスト削減になって改善することができます。

 それではコスト削減ができる範囲で最大のaを探っていけば、安定した制御ができる事になります。

この用件をTRPOでは次の制約付最適問題で更新規則を実現しています。

   \mathcal{L}(\pi_\theta) = \theta_{new} = argmin_\theta [ \eta(\pi_{\theta_{old}}) + \sum_s \rho_{\pi_\theta}(s) \sum_a \pi_\theta(a|s) A_{\pi_{\theta_{old}}}(s,a)]

            s.t. \ \  \mathcal{D}_{KL} (\theta_{new} || \theta_{old}) \lt \epsilon  

   ここで\epsilonは信頼境界への制限を示していますが。模擬にて適切な値が決定されます。