Abbeelの相手の様子を見る強化学習の論文を読む

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

(1) Abbeelの相手の様子を見る強化学習の論文を読む

 「Learning with Opponent-Learning Awareness」https://arxiv.org/abs/1709.04326

 ロボット学の第一人者のAbbeelが参加している敵対的強化学習の論文です。この強化学習はタイトルの[Awareness]が示す様に相手の動きを察知して強化学習するモデルLOLA(Learning with Opponent-Learning Awareness)を提案しています。多分この様な強化学習は存在しないと思います。

 例題の1つとしては「囚人のジレンマ」というものを扱っています。共犯の2人がいて、刑事から密告すると自分は許されが、相手は3年の懲役と言われています。しかし両人が庇いあって黙秘を続けると1年ぐらいで済みそうです。また互いに密告し合うと2年の懲役になります。 

 Cが黙秘でDが密告とすると下表の様になります。 

     f:id:mabonki0725:20170920213712p:plain

 客観的に見れば両人が黙秘を続ける方が都合がいいのですが、思考を繰返すと結局自分の事だけ考えて裏切ると思い結局密告しあう事になります。

 この問題を繰返し模擬した互い(Agent-1 Agent-2)の確信度の分布が下図です。

  a)は従来型の強化学習 native larning (NL)

  b)は相手を察知する強化学習 (LOLA)

 ※下図のs0は模擬の初期値の状態を表します

f:id:mabonki0725:20170920215919p:plain

  a)の従来型の強化学習では最も低い1年となる確信度が広がっていて互いに疑心暗鬼の状態になっています。

  b)のLOLAモデルでは相手の様子を見て判断しているので両人共が裏切るDDが少なく、様子を見て片方が裏切るCDやDCに確信度が集まっています。

 この問題は簡単なので数学的の解けますが、LOLAでは多様な問題に適用できる様に近似解で計算しています。下図が繰返し回数と報酬の結果で従来型(赤と橙)は最悪の懲役2年になっていますがLOLA(青と水色)は互いに裏切る機会を得て低い懲役で済んでいます。なお近似解は少し精度が落ちています。 

f:id:mabonki0725:20170920222018p:plain

  今度は理論解がない複雑な問題の場合です。

 これはセルを移動するAgentが自分の色を取ると1点得点し、相手は1点減点になります。また相手の色を取ると相手に倍の減点を与えられます。 

   f:id:mabonki0725:20170920225356p:plain

 LOLAは相手の動きを見て動くので訓練の結果下図の報酬となります。従来型(NL)は相手を見ていないので殆ど報酬を得ていません。ここでLOLA-OMは相手の経路を評価した近似モデルとなります。

f:id:mabonki0725:20170920230356p:plain

 ここで(a)は自分の色を取る学習の結果、(b)は相手の色を取る場合も含めた結果です。

 LOLA-OMは近似解なので少し劣化しています。

(1.1) 手法

 このモデルの大事な前提は以下です。

 ・相手の価値関数のパレメータ\theta^2が分っていること

        実際には部分的にしか相手の事は判り得ないはずです。

 ・2人敵対モデルである 

   

 1) 自分のパラメータ\theta_{i+1}^1のExactな更新は次式の相手の価値関数を予測して行っています。

  \theta_{i+1}^1 = \theta_i^1 + \Delta \theta^1

        \Delta \theta^1 = argmax_{\Delta \theta^1} V^1 \left( \theta_i^1 + \Delta \theta^1 ,  \theta_i^2 + argmax_{\Delta \theta^2} V^2( \theta_i^1+\Delta \theta^1 , \theta_i^2+\Delta \theta^2)\right)

       ここで

            V^1 \ V^2は自分と相手の価値関数です

   実際には自分のパラメータの更新は自分と相手の価値関数を2回偏微分して行っています。

    \theta_{i+1}^1 = \theta_i^1 + f_{LOLA}^1(\theta_i^1,\theta_i^2)

          f_{LOLA}^1 = \frac{\partial V^1(\theta_i^1,\theta_i^2)}{\partial \theta_i^1} \cdot \delta + \left(  \frac{\partial V^1(\theta_i^1,\theta_i^2)}{\partial \theta_i^2} \right) ^T \frac{\partial^2 V^2(\theta_i^1,\theta_i^2)}{\partial \theta_i^1 \partial \theta_i^2} \cdot \delta \eta

   2) パラメータの更新の微分と2回微分の計算は複雑なモデルでは算出できないので、

  自己と相手の動きの履歴\tau^1 \ \tau^2から近似して求めています。

 \frac{\partial V^1(\theta_i^1,\theta_i^2)}{\partial \theta_i^1} = \nabla_{\theta_1} \mathbb{E} R_O^1(\tau) = \mathbb{E} \left( R_O^1(\tau) \nabla_{\theta^1} \log \pi^1(\tau) \right)

    \frac{\partial^2 V^2(\theta_i^1,\theta_i^2)}{\partial \theta_i^1 \partial \theta_i^2} = \nabla_{\theta_1} \nabla_{\theta_2} \mathbb{E} R_O^2(\tau)

    ここで

       R_O^1\ R_O^2はOまでの自分と相手の累計価値です