NIPS2017論文読みメモ: Tensorized LSTM(その0)

以下の論文を読む準備をします。論文の内容に入っていないのでその0です。

Zhen He, Shaobing Gao, Liang Xiao, Daxue Liu, Hangen He and David Barber. Wider and Deeper, Cheaper and Faster: Tensorized LSTMs for Sequence Learning. arXiv: 1711.01577, 2017. https://arxiv.org/abs/1711.01577
※ 以下、キャラクターが会話します。それぞれの原作とは関係ありません。内容の誤りは本ブログ筆者に帰属します。
次回:まだ
f:id:cookie-box:20180108144114p:plain:w60

今日読むのはこの論文…。タイトルは…テンソル化したLSTM? LSTMというのは…Long Short-Term Memory…ロングでショート?

f:id:cookie-box:20180108144126p:plain:w60

「長く(long)保持できる短期記憶(Short-Term Memory)」だよ。最初のLSTMの論文は以下だね。

Sepp Hochreiter; Jürgen Schmidhuber. Long short-term memory. Neural Computation, 9 (8): 1735–1780, 1997. http://www.bioinf.jku.at/publications/older/2604.pdf
この論文のイントロダクションに、それまでの再帰ニューラルネットワークを短期記憶と表現して、入出力にタイムラグがあると全然学習できなかったりするって書いてあるよ。そうだね、まずRNN、再帰ニューラルネットワークの復習をしようか。RNNは  x_{1:n} を受け取って  y_n を返す箱だね。 x_n は文章の  n 文字目だったり、時刻 n の株価だったり、順番に観測されるデータであることが多いよね。その場合、 y_nn 文字目までの文章がポジティブな文章かネガティブな文章かの確率とか、時刻 n の株価まで観測した結果次の株価が上昇するか下落するかの確率なんかになるかもしれないね。

f:id:cookie-box:20180108144114p:plain:w60

RNN、聞いたことがある。出力したものを、次の入力へ…それが再帰。だから…順番に考えると…RNNはまず x_1 を受け取って  y_1 を出す。次に  x_2 を受け取るけど、このときさっき出力した  y_1 も受け取って、どっちのデータもつかって、 y_2 を出す。次は x_3y_2 を受け取って y_3 を出す。…これを繰り返すと、最後に  y_n が出てくる。 x_{1:n} を受け取って  y_n を出すことは、再帰のないニューラルネットワークでもできるけど…RNNは、各 i 番目のデータまでで、「ひとまずその時点での出力  y_i」をして、それを次に引き継いでいる。こうすると、どの時点でも出力が取り出せる…言い換えると、入力データの長さが変わってもいい。それに…順番に観測されるデータを受け取る度に情報が積み重なっていくのが上手く表現できるのかも…。

f:id:cookie-box:20180108144126p:plain:w60

でも、問題があるんだ。特に入力データ列が長いと、学習が不安定になったりできなくなったりすることがある。絵理さんがいま言ったように、RNNは再帰のないニューラルネットワークでもできる学習を、ネットワーク構造に制約を加えて、パラメータどうしを共有させて学習しようとするものだよね。例えば100ステップのある入力データ x_{1:100} でネットワーク学習するとするよ。ネットワークの重み  w_{ij} をどの方向に更新すべきかについて、100個のデータが全部注文をつけてくるんだ。それも、RNNの誤差逆伝播法では後ろのステップに伝播する度に掛け合わさる。だから、誤差の絶対値の組合せによっては、誤差が x_1 に伝播する頃には、発散するか、消滅しちゃう。

f:id:cookie-box:20180108144114p:plain:w60

じゃあ…どうすれば…。

f:id:cookie-box:20180108144126p:plain:w60

そこでLSTMが提案されたんだ。LSTMは下図のような構造をしているよ。あ、LSTMの原理については わかるLSTM ~ 最近の動向と共に - Qiita を参考にしているけど、下図が間違っていたらプロデューサーのせいだからね。
※ Output Gate と Input Gate のテキストが逆になっていたのを修正しました(2017-01-17)。

f:id:cookie-box:20180117204331p:plain:w600

(その1があれば)つづく

NIPS2017論文読みメモ: Inverse Reward Design(その5)

NIPS2017論文読み会に参加するので論文を読みたいと思います。今回読むのは以下です。最終回です。

Dylan Hadfield-Menell, Smitha Milli, Pieter Abbeel, Stuart Russell and Anca Dragan. Inverse Reward Design. arXiv: 1711:02827, 2017. https://arxiv.org/abs/1711.02827
※ 以下、キャラクターが会話します。それぞれの原作とは関係ありません。論文内容の解釈誤りは本ブログ筆者に帰属します。
前回:その4
f:id:cookie-box:20180101155951p:plain:w60

IRD の効果を検証すべく、格子世界での最短経路探索タスクを4パターン実験するということでしたが、残りの2パターンはどのような実験なのでしょうか。

f:id:cookie-box:20180101155919p:plain:w60

突然だけど、瑞希ちゃんは草むらに踏み出したとき、そこが確かに草むらだということをどうやって知るかにゃ?「そこは草むらです」という天からの声が降ってくるかにゃ? あるいは、地面に「草むら」というラベルが貼ってあるかにゃ?

f:id:cookie-box:20180101155951p:plain:w60

いいえ、天からの声を聞いたこともなければ、地面にラベルが貼ってあるのを見たこともありませんね。そこが草むらだというのは、自分の目で見て草が生えていることから認識すると思います。

f:id:cookie-box:20180101155919p:plain:w60

ロボットの場合は、搭載されているカメラで認識するかもしれないし、地面の形状をセンサで感じて認識するかもしれないね、現実的には。それで、未知の状態に出くわしたとき、それが自分が知らないものだと認識するのも実は難しいんだよねー。あたしは全然専門じゃないからよくわからないけどさー、ロボットの判定ってこんな風になってそーじゃん?

if ( 地面がもしゃもしゃしている ) {
  return 草;
} else {
  return 土;
}
地面には土と草しかないだろうなって思ってたらさー、こーゆー実装しそう。

f:id:cookie-box:20180101155951p:plain:w60

…私は前回、知らない状態に出くわしたら回避すればよいのではとつぶやきましたが、そもそも知らない状態があるという想定がなければ、知らない状態であると認識することもできないということですか。まるで、無知の知です。

f:id:cookie-box:20180101155919p:plain:w60

哲学的だねー。まーそれで論文に戻ると、後半の2つの実験では、前半の2つの実験と違って地面が何であるかを知らせる天の声はないんだ。より現実的な状況を想定している。論文では地面タイプが latent っていってるねー。ロボットは天から知らされる地面の形状の正解ラベルではなくて、たぶんセンサか何かで地面の形状の確率的な特徴量を受信するよ。今回は、地面タイプによって平均と分散が決まっているような、多変量正規分布からサンプルされた点とするみたいだねー。プロキシ報酬を設計するときに、地面タイプは草か土か宝物しかないって思っているのは前半の2つの実験と同じだよ。それで、プロキシ報酬を設計する手順を以下の2パターン試したみたいだねー。

  • ロボットが受信した特徴量を直接利用して、報酬を線形回帰で求める。
  • ロボットが受信した特徴量からまず土か草か宝物か分類して、土と草と宝物への報酬を設計する。
つまり、前者のパターンでは、テスト環境での最短経路探索時にもロボットは地面が土か草か宝物かは気にせずに、センサが受信した生の数値をつかって報酬を算出するけど、後者のパターンではセンサの数値をそのまま報酬計算には利用せず、まず土か草か宝物の判定をするんだね。

f:id:cookie-box:20180101155951p:plain:w60

後者の方が、地面タイプを判定するという点で、余計な中間目標を設定しているような感じがあります。チェスで駒取りに報酬を与えるような。本当に達成してほしい目標にだけ報酬を与えるべきで、余計な中間目標はない方がよいはずです。…でも、それだと学習が遅くなったりなかなかできなかったりする、か。…一ノ瀬さん、IRD を検証する4つの実験がどのようなものかは何となくわかりましたが、IRD の効果を測るのに、具体的に何を計測したのでしょうか。

f:id:cookie-box:20180101155919p:plain:w60

たくさんの訓練用地図+テスト用地図を生成して、訓練用地図でプロキシ報酬を設計してテスト用地図で最短経路を求めて、テスト用地図での最短経路が溶岩を踏んじゃった割合がいくつだったか、ってのを測ったみたいかなー。論文7ページに4つの実験の結果のグラフがあるね。灰色がプロキシ報酬に愚直にしたがって学習した場合に溶岩を踏んじゃった割合、オレンジ色と青色が IRD で真の報酬の分布を推測しながら求めた最短経路で溶岩を踏んじゃった割合っぽい。オレンジ色と青色は IRD の解き方の違いだね。その3でみたように、IRD の近似解法にはプロキシ報酬の有限個のサンプルで積分を近似するやり方と IRL として解く方法があって、サンプルで近似するのが青色、IRL として解くのがオレンジ色だね。

f:id:cookie-box:20180101155951p:plain:w60

オレンジ色や青色で示されている IRD の結果は、灰色で示されているプロキシ報酬そのままで学習した結果より、随分よいですね。オレンジ色と青色だと、オレンジ色、つまり、IRD を IRL として解く方法の方が僅かによいみたい。あ、一番右端の、ロボットが受信した特徴量を土か草か宝物か分類してから報酬を計算する実験は、他の3つの実験に比べるとどの学習方法も苦戦していますね、やっぱり。

f:id:cookie-box:20180101155919p:plain:w60

それについては、プロキシ報酬そのままの学習については、溶岩を宝物って分類しちゃう可能性が大きくなるから悪いと言及されてるねー。IRD による学習でも、一度土か草か宝物と分類した後で真の報酬を推論するために悪いって書かれてる。ちなみに、地図の生成の際に、隣り合うセルは同じ地面タイプになりやすいようになっているみたいだから、溶岩があるテスト環境では地面の切り替わり(?)が多くなって、ロボットは溶岩を土や草とかと誤認したとしても訓練環境とはちょっと違うって気付くんだとは思う。一番右のグラフの、灰色とオレンジ・青色の差はそこにあるのかにゃーって思った。

f:id:cookie-box:20180101155951p:plain:w60

地面が土、草、土、草とたくさん切り替わるような経路は訓練環境で経験しなかったので、報酬に不確かさが大きいということですね。

f:id:cookie-box:20180101155919p:plain:w60

最後に、課題と今後の展望が述べられているね。課題は、真の報酬の事後分布をどう利用するのがベストなのかとか、リスク回避計画だと良い方のリスクまで回避してしまうとか。出くわした未知の状態は、溶岩じゃなくて、想定してたよりもっとすごい宝物かもしれない。

f:id:cookie-box:20180101155951p:plain:w60

…そうかもしれない、けど、それは強化学習の枠組みで解決できる問題なんでしょうか…。

f:id:cookie-box:20180101155919p:plain:w60

まーそのくだりは、IRD が、報酬関数の設計者に設計ミスを気付かせる鍵になるだろうって書かれてるくらいだねー。別の課題は、この論文ではリスク回避計画問題を明示的に解いているんだけど、環境モデルや報酬関数が複雑だと計画問題を明示的に解くのって無理。だから、より複雑な環境でも IRD をつかえるように、近似的に計画問題を解くとか、真の報酬の事後分布の使い方を工夫したいって。あと、報酬関数が線形であることを仮定しているのもやっぱり制約になっていて、例えば今回の実験の場合、地面タイプの特徴量を地面の色(RGB)として受信していたら上手くいかなかっただろうって。

f:id:cookie-box:20180101155951p:plain:w60

土の茶色と溶岩の赤色が結構似ていますしね。

f:id:cookie-box:20180101155919p:plain:w60

加えて、IRD で報酬の設計ミスをリカバーできるといっても、いまの IRD はミスの仕方にも制約があるのが課題と言ってるね。このくだりは、結構近いプロキシ報酬を特定しておかないといけないというのと対応していると思うにゃー。それも将来的には対応したいってさー。

f:id:cookie-box:20180101155951p:plain:w60

確かにプロキシ報酬に仮定を置いていました…。上手なミスの仕方に限る、というのも、現実的には厳しいですね。

f:id:cookie-box:20180101155919p:plain:w60

この論文はこれで以上だね。課題は色々あるけど、ヒトが設計した報酬をとりあえずのものとして、真の報酬を推定しようっていうのは面白かったにゃー。模範的な行動を与えて真の報酬を推定する逆強化学習(IRL)という枠組みはあったけど、模範的な行動がわかんないから強化学習に頼りたい訳だしー?

f:id:cookie-box:20180101155951p:plain:w60

Appendix は読まないんですか?

f:id:cookie-box:20180101155919p:plain:w60

あたしは読んでもいーんだけど、プロデューサーが他にも読みたい論文があるってさー。

終わり

NIPS2017論文読みメモ: Inverse Reward Design(その4)

NIPS2017論文読み会に参加するので論文を読みたいと思います。今回読むのは以下です。

Dylan Hadfield-Menell, Smitha Milli, Pieter Abbeel, Stuart Russell and Anca Dragan. Inverse Reward Design. arXiv: 1711:02827, 2017. https://arxiv.org/abs/1711.02827
※ 以下、キャラクターが会話します。それぞれの原作とは関係ありません。論文内容の解釈誤りは本ブログ筆者に帰属します。
前回:その3 / 次回: その5
f:id:cookie-box:20180101155951p:plain:w60

前回までに、逆報酬デザイン=IRD の問題定義とその解、それに近似解の求め方をみてきました。IRD は環境モデル  \tilde{M} およびプロキシ報酬関数=なるべく上手くデザインした報酬関数を所与として、真の報酬関数の分布を求める問題として定式化されます。そして、以下の仮定をおくと真の報酬関数の分布を式に表すことができます。

  • 報酬関数  r は、エージェントがたどった行動系列  \xi の特徴量ベクトル  \phi(\xi) を用いて  r(\xi; w)=w^{\top}\phi(\xi) とかける。
  •  P(\tilde{w} | w^{\ast}, \tilde{M}) \propto \exp \bigl( \beta E[ w^{\ast \top} \phi(\xi) | \tilde{w}, \tilde{M} ] \bigr) が成り立つ。この式は、真の報酬が  w^{\ast} のときプロキシ報酬  \tilde{w} がデザインされる確率です。どんな  \tilde{w} がデザインされやすいのかというと、 \tilde{w} をつかって学習した方策にしたがって行動したときの真の報酬の期待値が高ければ高いほどデザインされやすいです。確率は真の報酬の  \beta 倍のエクスポネンシャルに比例します。 \beta はどれくらいよい設計ができるかのパラメータでした。 \beta は報酬関数を設計するエンジニアの腕がよければ高いかもしれないし、タスクに不確定要素が大きければ低いかもしれませんね。
これらの仮定の下で  P(w=w^{\ast} | \tilde{w}, \tilde{M}) を式に表すことができますが、この式の分母に現れる積分積分空間が膨大です。論文には、近似解法が以下の2つ示されています。
  • 積分を有限個のサンプル  \{w_i\} の和で代替する。
  • プロキシ報酬から真の報酬の分布を求める IRD を、手本となる行動系列セットから真の報酬を求める IRL に翻訳する。このとき、あるプロキシ報酬から得る「お手本」は行動系列の特徴量ベクトル  \phi(\xi) の期待値として丸められる。

f:id:cookie-box:20180101155919p:plain:w60

前回までのあらすじありがと。今回読むのは実際に IRD で強化学習タスクを解くとどうなるかを検証するセクションだねー。あたしの好きな実験だよ♪ 今回チャレンジするタスクは、格子世界での最短経路探索だね。

f:id:cookie-box:20180101155951p:plain:w60

格子世界、Sutton 本でもよく出てきました。風が吹く格子世界とか、崖がある格子世界とか…。

f:id:cookie-box:20180101155919p:plain:w60

今回のもそんな感じだねー。東西南北4方向に移動できて、各地点は「宝物」「草むら」「土」「溶岩」のいずれかだよ。論文5ページの絵の一番左と真ん中を見てほしいかな。黄色が宝物で、緑が草むら、茶色が土、赤が溶岩だね。草むらは土よりも通りにくいみたいで、草むらの上を通る距離は最小限にしつつ宝物まで最短経路で到達したい。ただし、溶岩は即死だから絶対避けないと駄目。だけど、当初は溶岩の存在は想定していなくて、プロキシ報酬には溶岩が考慮されていない。5ページの一番左の絵がプロキシ報酬を設計するのに用いられた環境だね。プロキシ報酬は、ひとまずこの環境で意図通りのパス(絵の中の灰色のパス)を学習するように設計された。たぶん、最短で宝物までたどり着いてくれるように、宝物でないマスは-1、草むらのマスはさらにもう少しマイナスみたいな報酬になったんじゃないかにゃー。

f:id:cookie-box:20180101155951p:plain:w60

草むらの上を進む距離が最短になるように、スタート地点から宝物のある真東に進むのではなくて、少し南に迂回していますね。

f:id:cookie-box:20180101155919p:plain:w60

こんな風に、溶岩のない環境で設計したプロキシ報酬関数で、溶岩のあるテスト環境の最短経路を探索するのが今回の実験だよー。今回検証してみる環境は以下の4つ。最初の2つが、報酬の設計ミスによる悪影響を回避できるかの検証で、後の2つがより現実的でチャレンジングな例という位置付けみたいだねー。

  1. 溶岩を未定義の状態と認識する環境(ネガティブサイドエフェクトを回避できるかの検証)
  2. 環境からは各マスのカテゴリが2つのシグナルで知らされるという前提で、溶岩については、一方のシグナルは宝物、もう片方のシグナルは草むらと告げる環境(報酬ハッキングを回避できるかの検証)
  3. 各マスが土とか草とかの手がかりがなく、特徴量が確率的にしか観測できない環境―プロキシ報酬設計時に、観測された特徴量を用いて直接報酬を設計する場合
  4. 各マスが土とか草とかの手がかりがなく、特徴量が確率的にしか観測できない環境―プロキシ報酬設計時に、まず観測された特徴量によって土か草か宝物かの3クラス分類を行い、各クラス値に対して報酬を設計する場合
早速1つ目から見ていくね。このテスト環境は論文5ページの真ん中の絵だね。プロキシ報酬を設計した左の絵と似ているけど、真ん中に溶岩の池があるね。プロキシ報酬は、溶岩のマスにペナルティを課すように設計されていなかったので、もしエージェントがプロキシ報酬をそのまま信用すると溶岩を突っ切るパス(灰色のパス)を学習してしまう。

f:id:cookie-box:20180101155951p:plain:w60

溶岩の存在を想定しておらず、想定していなかった状態への対策を何も講じていなければ、そうなってしまいますね。では、IRD ではどうなる?

f:id:cookie-box:20180101155919p:plain:w60

IRD では真の報酬はわからないことを悟っているから、プロキシ報酬を妄信することはないね。まず、いまもっているプロキシ報酬  \tilde{w} と、それを設計した環境  \tilde{M} をもとに、真の報酬を推定してみる。すると、溶岩を含むパスの報酬がとても不確かなことがわかる。プロキシ報酬を設計した環境において、溶岩の報酬をいくつにしようと同じ学習結果をもたらしてしまうからね。それで、ここまで触れていなかったんだけど、IRD には「リスク回避計画」を組み合わせてつかうんだ。報酬の不確定さが大きい行動は避けるってことだと思う。詳しくは Appendix に載ってるね。

f:id:cookie-box:20180101155951p:plain:w60

結局そのような計画が要るのですか。…何だか、それって、「知らない状態に出くわしたら回避しなさい」とエージェントに教えておけば済む話ではないのでしょうか。

f:id:cookie-box:20180101155919p:plain:w60

まーこの例だとそうだよねー。でも、一般的には、知っているか知らないかの0か1じゃない。「どれくらい知らないか」を定式化したのがこの論文だよね。それに、報酬関数を最初に固定しない立場をとることで、エージェントが自動的に報酬関数を書き換えて成長していく枠組みへの示唆を与えていると思う。

f:id:cookie-box:20180101155951p:plain:w60

…確かに、知らない状態を避けろといっても、知らない状態とは何なのか、具体的にどうやって避けるべきかを考えなければならないですね。

f:id:cookie-box:20180101155919p:plain:w60

2つ目の実験は、報酬ハッキングの検証だね。このシチュでは、エージェントにマスの状態を告げるシグナルが2つあるってする。報酬を設計した環境では、土のマスだったら2つのシグナルはどちらも「土」、草のマスだったらどちらも「草」、というように両方とも正しいシグナルになっていたんだけど、テスト環境では溶岩のマスについて片方のシグナルは「宝物」、もう片方のシグナルは「草」となっちゃうんだ。溶岩という未知の状態に、ロボットのセンサがバグっちゃったのかもしれないねー。

f:id:cookie-box:20180101155951p:plain:w60

すみません、話が見えないのですが、シグナルがそのようにバグっているとなぜ報酬ハッキングの検証になるのでしょうか。

f:id:cookie-box:20180101155919p:plain:w60

話を端折っちゃったね。報酬ハッキングは、報酬をデザインした環境では釣り合っていたバランスが、デプロイ環境では崩れるときに起きちゃうんだよね。ボートレースゲームの例だと、報酬をデザインした環境では標的を撃ち落とすことにある程度の報酬を与えることがゲームに勝つことにつながっていたんだけど、デプロイ環境ではそうならなかった。今回のテスト環境だと、報酬をデザインした環境では、2つのシグナルの内容がそろっていたんだけど、デプロイ環境ではちぐはぐになった。だから学習が上手くいかなくなるんだけど、上手くいくようにするためには、一つの報酬源に賭けないでほしいんだよね。ボートレースゲームの場合だと、標的を撃ち落とすことって、中間目標あるいはWANTであってMUSTでない目標なのかなって思うんだけど、そういう目標だけから報酬を得るのをやめてほしい。今回のタスクでは、一方のシグナルに賭けないでほしい。それで、IRD は、2つのシグナルがちぐはぐっていう特徴の報酬が不確かなことに気付くから、結局溶岩を回避できる。

f:id:cookie-box:20180101155951p:plain:w60

…もし IRD をボートレースゲームに適用できるなら、「ゲームに勝つことによる報酬ではなく、標的を撃ち落とすことによる報酬ばかり稼いでいるのは、報酬をデザインした環境のようすと違って何かおかしいぞ」とエージェントが気付ける、のでしょうか。

f:id:cookie-box:20180101155919p:plain:w60

そんな感じだと思う。残り2つの実験については、次回にするねー。次で最終回にしたいにゃー。

つづく

NIPS2017論文読みメモ: Inverse Reward Design(その3)

NIPS2017論文読み会に参加するので論文を読みたいと思います。今回読むのは以下です。

Dylan Hadfield-Menell, Smitha Milli, Pieter Abbeel, Stuart Russell and Anca Dragan. Inverse Reward Design. arXiv: 1711:02827, 2017. https://arxiv.org/abs/1711.02827
※ 以下、キャラクターが会話します。それぞれの原作とは関係ありません。論文内容の解釈誤りは本ブログ筆者に帰属します。
前回:その2 / 次回:その4
f:id:cookie-box:20180101155919p:plain:w60

前回の最後で、 P(w=w^{\ast} | \tilde{w}, \tilde{M}) つまり環境モデルとプロキシ報酬所与の下での真の報酬の分布の式まで導出したねー。でも、この式に出てくる分母の計算が問題なんだ。

f:id:cookie-box:20180101155951p:plain:w60

分母?  \int _{\tilde{w}} \exp(\beta w^{\top} \tilde{\phi} ) d \tilde{w} でしたね。積分する対象は、「あるプロキシ報酬  \tilde{w} に基づいた方策で行動する下で、報酬関数  w に基づいて得られる報酬の期待値」の  \beta 倍のエクスポネンシャルですね。積分区間は…ありうるプロキシ報酬全て…。

f:id:cookie-box:20180101155919p:plain:w60

うん。前回、報酬になりうる関数がなす空間って  \mathbb{R}^d なんじゃない?ってつぶやいちゃったけど、もしそうだったら積分は発散しちゃうかもね。もっと積分領域が絞れたとしても、フツウに大変な積分なんだよね。だから、まともに計算するのはあきらめて、近似的に計算するよ。この論文では2つの近似計算法が挙げられていて、1つ目は、この積分を有限個のサンプル  \{w_i \} に対する和で代替する。

f:id:cookie-box:20180101155951p:plain:w60

結構単純ですね。

f:id:cookie-box:20180101155919p:plain:w60

ちょっと工夫するみたいだけどねー。それで、2つ目の方法は…その前に、逆強化学習に触れておかないとにゃー。瑞希ちゃん、逆強化学習(Inverse Reinforcement Learning; IRL)は知ってるかにゃ?

f:id:cookie-box:20180101155951p:plain:w60

知りません。逆強化学習…逆…何が逆?

f:id:cookie-box:20180101155919p:plain:w60

逆強化学習は、この論文の直接的な先行研究になるね。報酬関数って実はちゃんとわからないってゆー問題意識はこの論文と同じ。それで、逆強化学習では、理想的な行動を与えて、そこから報酬関数を推定しようとするんだよね。

  • この論文(逆報酬デザイン;IRD)でも、真の報酬を推定する過程で、プロキシ報酬に基づいた方策がどんな行動系列を選択するかを考えるから、逆強化学習と逆報酬デザインはゴールが一緒でスタート地点が違うみたいな感じだねー。
  • IRL(逆強化学習)概ねよい行動→ 真の報酬   
    IRD(逆報酬デザイン)概ねよい報酬 →概ねよい行動→ 真の報酬   

f:id:cookie-box:20180101155951p:plain:w60

行動のお手本を示して、報酬を逆算しようとするのですか。強化学習は報酬を与えて行動させる、逆強化学習は行動を与えて報酬を求める、確かに、逆です。…でも、理想的な行動がわかっているなら、そもそも強化学習が必要なのかって気もします。もちろん、理想的な行動のデータセットはあらゆる状況を網羅していないかもしれないので、一度報酬を逆算しなければどんな状況でも自動的に行動するエージェントをつくれないのかもしれません。でも、逆算した報酬はあくまで用意したデータセット上の行動を再現するだけなので、データセットに現れないような状況には、弱そう。そうなると、逆算した報酬で学習したエージェントをデプロイして、好ましくない行動をするようだったらそれを修正する行動をお手本に追加して報酬を逆算し直す、というような、反復が必要そう。

f:id:cookie-box:20180101155919p:plain:w60

んー、その辺はなんか工夫していると思うんだけど、逆強化学習がどうやって報酬関数の精度を上げているかは、あたしもよく知らないんだよねー。でも、そーゆー、「報酬関数ってわからない、だから、理想的な行動を与えて報酬を逆算しちゃえ、でも、理想的な行動って与えきれる?」みたいな流れがあってこの論文があると思うんだよね。この論文のイントロはあくまで「報酬って設計ミスっちゃうよね」って感じなんだけど。でも、3節では先行研究に触れられていて、「究極的には IRL(逆強化学習)と IRD(逆報酬デザイン=この論文)は相互補完的につかいたい」ってあるんだ。

f:id:cookie-box:20180101155951p:plain:w60

相互補完的に?

f:id:cookie-box:20180101155919p:plain:w60

…上手い喩えじゃないかもしれないけど、ママの料理に、注文つけるとするじゃん。どうしてほしいのか明らかなときは「もっと塩を入れてよー」とか、具体的な行動の仕方を伝えればいいよね。それのが確実だし。でも、具体的にどうするべきかは明らかじゃないけど、おいしくないってゆーときもあるよね。そのときは「微妙」っていう評価を伝えるしかない。だから、ママっていうお料理エージェントには、行動の仕方を伝えるだけとか、評価を伝えるだけとかより、どっちも組み合せて伝えられた方がいい。ってゆーことじゃないかな。

f:id:cookie-box:20180101155951p:plain:w60

なるほど、そうですね。人間相手でも、後輩に何か学んでもらうときなど、具体的なやり方を教えることも、評価を伝えることもありますね。

f:id:cookie-box:20180101155919p:plain:w60

話を戻そうかな。いま、ありうるプロキシ報酬上での積分をどうしよっかってゆー話をしてたよね。でもさ、そんないかにも膨大そーなプロキシ報酬上で積分なんてしたくない。だから、プロキシ報酬上で積分しない道を探す。

f:id:cookie-box:20180101155951p:plain:w60

プロキシ報酬上で積分しない? いえ、でも、「あるプロキシ報酬  \tilde{w} に基づいた方策で行動する下で、報酬関数  w に基づいて得られる報酬の期待値」をプロキシ報酬上で積分しなくてはという話だったのでは…あれ…「行動する下で」?…プロキシ報酬上での積分を行動系列上の積分にできればよい?…行動系列のパターンも膨大かもしれませんが、プロキシ報酬関数の空間などよりはまだましなはず。そうか、いま一ノ瀬さんが逆強化学習の話に触れなければと言ったのは、「概ねよい行動」から出発する逆強化学習がここで利用できるという意味なのでは?

f:id:cookie-box:20180101155919p:plain:w60

当ったり~♪ まさにここから逆強化学習にしちゃうんだ。でも、あるプロキシ報酬に基づいた方策から行動のお手本データをたくさん取るんじゃなくて、あくまで行動系列の特徴量の期待値に丸めちゃうから、近似解なんだけどねー。それで、逆強化学習(のベイズ的解法)では、いま言ってくれたように、行動系列上で積分するよー。この解法では、プロキシ報酬をどれくらい上手く設計できるかのパラメータ  \beta が、あるプロキシ報酬に基づいた方策から取り出すお手本データの個数に相当するって解釈ができるんだ。プロキシ報酬が上手く設計できるって信じているときほど、プロキシ報酬に基づいた方策からたくさんのお手本を取り出すから、そこから推定される真の報酬関数もプロキシ報酬をかなり再現したものになるってわけだねー。ここまで IRD の定義と解法までみてきたから、次回は、実際に IRD で強化学習タスク(実験的なタスクだけどね)を解いたら従来の解法に比べてどんな風によかったかってゆー検証のセクションをみていこう。

f:id:cookie-box:20180101155951p:plain:w60

おー。

つづく

NIPS2017論文読みメモ: Inverse Reward Design(その2)

NIPS2017論文読み会に参加するので論文を読みたいと思います。今回読むのは以下です。

Dylan Hadfield-Menell, Smitha Milli, Pieter Abbeel, Stuart Russell and Anca Dragan. Inverse Reward Design. arXiv: 1711:02827, 2017. https://arxiv.org/abs/1711.02827
※ 以下、キャラクターが会話します。それぞれの原作とは関係ありません。論文内容の解釈誤りは本ブログ筆者に帰属します。
前回:その1 / 次回: その3
f:id:cookie-box:20180101155951p:plain:w60

前回は、強化学習の報酬関数を正しくデザインするのは難しい。だから、真の報酬関数がわからないことを認めて、真の報酬関数を推定しようというところまででした。次は、その推定方法を具体的に数式で追っていく、ですね。

f:id:cookie-box:20180101155919p:plain:w60

そうだったねー。推定方法の前に、まず問題の設定ってゆーか定義を確認していこう。まず、環境モデル(原著: world model を意訳)を以下で定義するにゃー。

  •  \tilde{M} = \langle \mathcal{S}, \mathcal{A}, T, H \rangle … 環境モデル
 \mathcal{S} は状態集合、 \mathcal{A} は行動集合、 T=T(s_{t+1}|s_t, a) はある状態である行動をとったときに次の状態がどうなるかの確率分布、 H \in \mathbb{Z}_{+} はエピソード終了までのステップ数だね。この環境モデルに報酬  r: \mathcal{S} \to \mathbb{R} も加えるとマルコフ決定過程  M = \langle \mathcal{S}, \mathcal{A}, r, T, H \rangle になるねー(あ、この論文では、報酬を状態行動系列  \xi の特徴ベクトル   \phi(\xi) w で重み付けした線形和として  r(\xi; w) = w^{\top} \phi(\xi) とかけるものと仮定するよー)。

f:id:cookie-box:20180101155951p:plain:w60

マルコフ決定過程  M を与えられたときに、それぞれの時間ステップでどの行動を選択していくべきか=方策を求めるのが通常の強化学習ですね。でも、今回は報酬  r がわかっていないという立場を取るのですよね。

f:id:cookie-box:20180101155919p:plain:w60

うん。でも真の報酬に結構近いプロキシ(代理)報酬  \tilde{r} は特定できることにするよ(結構近い、の意味は後でねー)。このとき、「逆報酬デザイン(Inverse Reward Design: IRD)」を  \langle \mathcal{R}, \tilde{M}, \tilde{\mathcal{R}}, \pi(\cdot | \tilde{r}, \tilde{M}), \tilde{r} \rangle と定義する。ここで、 \mathcal{R} は真の報酬になりうる関数がなす空間で、 \tilde{\mathcal{R}} はプロキシ報酬になりうる関数がなす空間ね(報酬関数がなす空間といっても、今回は報酬関数が  r(\xi; w) = w^{\top} \phi(\xi) とかけるものと仮定しているから、重みベクトルの次元のユークリッド空間  \mathbb{R}^d と考えればいいと思うんだけどねー)。 \pi(\cdot | \tilde{r}, \tilde{M}) はエージェント。方策と捉えていいんじゃないかなー。この状況を説明するとー、

  •  \tilde{M} … 環境モデルは特定できていて、
  •  \tilde{r} … プロキシ報酬もどーにか特定できていて、
  •  \pi(\cdot | \tilde{r}, \tilde{M}) … その環境モデルとプロキシ報酬の下での方策も特定できている。
こんな状況だね。この状況で、真の報酬  r^{\ast} の分布を求めるのがゴールになるよ。

f:id:cookie-box:20180101155951p:plain:w60

報酬関数がわからない立場をとるというのは他で聞いたことのない設定なので慣れませんが、状況は何となくわかりました。では、解法を教えてください。…わくわく。

f:id:cookie-box:20180101155919p:plain:w60

その前に、瑞希ちゃん、ベイズの定理は覚えてるかにゃー?

f:id:cookie-box:20180101155951p:plain:w60

ベイズの定理ですか。はい。よく、病気の検査を受けて陽性だった人が本当に病気である確率は?などという例で説明されますね。知りたいのは  P(病気 |陽性) なのですが、これは以下がわかれば求まります。

  • その病気である周辺確率:  P(病気)
  • 病気のときに陽性と診断される確率:  P(陽性 |病気)
  • 病気でないのに陽性と診断される確率:  P(陽性 |病気 ^C)
つまり、 P(陽性)=P(病気)P(陽性 |病気)+P(病気 ^C)P(陽性 |病気 ^C) と陽性と診断される確率に周辺化でき、あとは  P(病気 |陽性)=P(陽性 \cap病気) / P(陽性 )=P(陽性 |病気)P(病気) / P(陽性 ) とするだけです。このような式変形をベイズの定理といいます。…式の右辺と左辺で、縦棒 "given" の前と後ろが入れ替わるんだな。

f:id:cookie-box:20180101155919p:plain:w60

ふふ、今回も  P(\tilde{r} | r^{\ast}) を入れ替えて  P(r^{\ast} | \tilde{r}) を求めちゃうよー。これ以降、真の報酬とプロキシ報酬に対応する重みベクトルをそれぞれ  w^{\ast} \tilde{w} とするね。だから言い直すと  P(\tilde{w} | w^{\ast}) を入れ替えて  P(w^{\ast} | \tilde{w}) を求めるってことだねー。

f:id:cookie-box:20180101155951p:plain:w60

入れ替える?…そうか、私たちは真の報酬の下で学習したいのですが、真の報酬はわからない。代わりに利用できるのは、なるべく真の報酬に似せた、プロキシ報酬。それはまるで、なるべく正しく病気かどうかを診断しようとする検査みたいです。と考えれば、さっきのベイズの定理と同じ。だとしたら必要なのは、ある報酬関数  w になる周辺確率  P(w) と、ある報酬関数  w のときにプロキシ報酬  \tilde{w} が選択される確率  P(\tilde{w} | w) だぞ。…一ノ瀬さん、 P(\tilde{w} | w) がわかりません。

f:id:cookie-box:20180101155919p:plain:w60

あ、うん。そこは仮定を置くからねー。まず、方策所与の下で、状態行動系列  \xi が選択される確率を  \pi(\xi | \tilde{w}, \tilde{M}) \propto \exp (\tilde{w}^{\top} \phi(\xi)) とするんだ。最大報酬が得られる状態行動系列のみ選択されるってほど最適化はされていないけど、各状態行動系列が報酬の大きさに指数関数的に比例するように選択されるんだから、ほぼほぼ最適化されてるって状態だね。それで、プロキシ報酬  \tilde{w} は、真の報酬の期待値  E[ w^{\ast \top} \phi(\xi) | \tilde{w}, \tilde{M} ] を訓練環境  \tilde{M} で最大化するべく設計されたって考えるよ。それで、真の報酬に結構近い設計ができることにするんだ。つまり、 P(\tilde{w} | w^{\ast}, \tilde{M}) \propto \exp \bigl( \beta E[ w^{\ast \top} \phi(\xi) | \tilde{w}, \tilde{M} ] \bigr) が成り立つことにする。 \beta はどれくらいよい設計ができるかのパラメータだけど、もし  \beta \to \infty だったら、訓練環境  \tilde{M} で真の報酬の期待値を最大にするプロキシ報酬  \tilde{w} が必ず設計できる極限になるね。

f:id:cookie-box:20180101155951p:plain:w60

あ、 P(\tilde{w} | w) だ。

f:id:cookie-box:20180101155919p:plain:w60

そーだね。ここで、 w^{\ast} は期待値の外に出すことができるから、 \tilde{\phi} = E[ \phi(\xi) | \tilde{w}, \tilde{M} ] と定義するよー。すると、求める真の報酬の分布は、ベイズの定理より以下のようにかける。

 \displaystyle P(w=w^{\ast} | \tilde{w}, \tilde{M}) \propto P(\tilde{w} | w, \tilde{M}) P(w) = \frac{\exp (\beta w^{\top} \tilde{\phi})}{\int_{\tilde{w}} \exp (\beta w^{\top} \tilde{\phi} ) d \tilde{w} } P(w)
ここで、さっき瑞希ちゃんが説明してくれたときのように、 P(\tilde{w} | \tilde{M}) での規格化はしてないよ。ただ、 P(\tilde{w} | w, \tilde{M}) に対しては規格化が必要で、上の式の分母の積分がそれだね。この積分が厄介なんだ。これにどう対処しようかって話を、次回以降していくねー。

つづく