NIPS2017読み会@PFN: 参加メモ

以下の勉強会に参加してきました。connpass.com


以下、思ったことのメモです。いい加減なことしか書いてなく、文字数と興味は比例しません。
NIPSについて はえーNIPS会議への参加はプラチナチケットなのですね…。
GANのテーマトーク 半教師有りですごいというのやってみたいです。ラベル貼るの大変ですので。
Inverse Reward Design
https://arxiv.org/abs/1711.02827
自分の発表でした…お聞き苦しくすみませんでした…。この日記上で志希ちゃん(自分)とまかべー(自分)が論文読みをしてくれましたが、発表資料を作成すると後から結構間違いに気付きました…それもすみませんでした…。
A Unified Approach to Interpreting Model Predictions
https://arxiv.org/abs/1705.07874
モデルの解釈性の話。この話とは関係ないですが、以前読もうとしていた教材を、全然読んでいません…。
https://christophm.github.io/interpretable-ml-book/
Deep Sets
https://arxiv.org/abs/1703.06114
(順序のない)集合を扱う話でした。PointNet と関係あるのでしょうか…。関係ないですが、この論文タイトルは検索しづらいですね…。
Interpolated Policy Gradient: Merging On-Policy and Off-Policy Gradient Estimation for Deep Reinforcement Learning
https://arxiv.org/abs/1706.00387
ご本人の発表でした。方策オンと方策オフを混ぜた手法。強化学習問題で、囲碁などは Simulation。データがいくらでも取れる。自動運転などは Real-world。データは限られる。なので向いている手法の違いなども出てくるのですね。
分散深層学習のテーマトーク 大規模データの処理はお金でGPUを積めば解決するのではないのですよというお話でした。学習率とバッチサイズのスケジューリングだけでなく、大規模なりの勾配降下法など。
階層的強化学習のテーマトーク 11月の強化学習アーキクチャ勉強会でこの方のお話を一度お聴きしたので聴きやすかったです。ワークショップとなるほどの分野になのですね。これも昨年からやってみたいと思っていてやっていないです…。LSTM論文を読んでいたので、「記憶改竄」と聞いて LSTM の Forget Gate を思い出してしまいました。LSTM でいうなれば、入力データのモードの違いを読み取って、Forget ではなく以前もっていた記憶を Remember ということができそうですね。どなたかやっているのでしょうか。
モデルに基づく強化学習のテーマトーク 現実世界の強化学習は難しいという話が今日よく出てきますね。現実世界の情報の引き出しにくさに加え、安全性(解釈性)が求められるのは、深層学習モデルではなかなか届かないですね。AIの判定が誰かの不利益になるとき(説得するのに)、失敗が致命的な事故となるとき(自動運転)、安全性(解釈性)が要りますね。
Estimating Mutual Information for Discrete-Continuous Mixtures
https://arxiv.org/abs/1709.06212
情弱なので相互情報量がわからないです。
→ このスライドの下で考えました。
Predicting Organic Reaction Outcomes with Weisfeiler-Lehman Network
https://arxiv.org/abs/1709.04555
グラフを畳込むということが言われればできますね(但しノードことに近傍が異なる)。こういう、高度に専門的なドメイン知識(この発表では化学反応)が搭載された機械学習というの、将来できたらいいなあと思う方向性です。
音のテーマトーク 音、会話、音楽とあるのですね。会話認識で音素がモデル化されているというの、前回の記事でエリー(自分)が言っていたのと関連しています。音声合成というのは、ボイスロイドという認識でよいのでしょうか…。マルチモーダル学習もやってみたいです。
分子と材料のテーマトーク 今日一日通して、機械学習とモデルの協力というテーマがよく出てきますね…。VAE は分子もつくってくれるのですね…(合成できる保証がないって面白いですが)。というか VAE と GAN で対比したときの VAE の役割って何だったっけ…。以下をみると GAN と違って尤度が測れるのか…。
https://www.slideshare.net/masa_s/gan-83975514
相互情報量って何かを以下の記事っぽい雰囲気で考えようと思いますが、2変数必要ですね。
雑記: 交差エントロピーって何 - クッキーの日記
上の記事には2国間の天気の同時分布などないので、以下のようにイメージしておきます。

  •  P(A国が晴, B国が晴)=0.25
  •  P(A国が曇, B国が晴)=0.25
  •  P(A国が雨, B国が曇)=0.25
  •  P(A国が雪, B国が雨)=0.125
  •  P(A国が雪, B国が雪)=0.125

A国の天気とB国の天気の相互情報量というものを考えることができるはず。
 I(A国の天気, B国の天気 \displaystyle)= \sum_{y \in Y} \sum_{x \in X} p(x, y) \log \frac{p(x,y)}{p(x)p(y)}
A国の天気がこれでB国の天気がこれだという情報を、「A国の天気とB国の天気が独立だと考えたときのエンコーディング」から「正しいエンコーディング」を引いたものの平均になっている。独立だと考えたときの方が確率は同じか小さくなるから、相互情報量は0か正になる。相互情報量が0なら、 X Y は独立になる。というか、「実際の同時分布」と「独立な場合の同時分布」のカルバック・ライブラー情報量だ。「独立な場合の同時分布」までの距離だ。

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

以下の論文を読みます。

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
※ 以下、キャラクターが会話します。それぞれの原作とは関係ありません。内容の誤りは本ブログ筆者に帰属します。
前回:その0 / 次回:まだ
f:id:cookie-box:20180108144114p:plain:w60

前回この論文を読もうとしたけど、RNN や LSTM の話をして、全く論文に入らなかった…。

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

ごめん…今回は論文の内容に入るね。でも、前回は LSTM は図を出しただけで、LSTM ってどんなものか全然話してなかったから、その話だけ先にしておきたいかな。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
前回の絵も再掲しておくね。あ、絵の黄色い箇所は上の論文にはなくて、わかるLSTM ~ 最近の動向と共に - Qiita を参考に描き足したものだよ。該当する論文はそちらの記事を見てね。
f:id:cookie-box:20180117205719p:plain:w600

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

前回と違って、一部線が太くなってる?

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

太い線の箇所だけみるとシンプルなRNN(シンプルな RNN のことを、Tensorized LSTM の論文では vanilla RNN と呼んでいるね)なんだ。LSTM は vanilla RNN にどんなパーツを付け加えたものかわかるようにしてみたよ。

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

バニラ…シンプルな味で、おいしそう。じゃなかった、vanilla RNN の周りに結構ごてごてパーツが付いてるんだ…わたしのPCみたい…でも、どうしてこんなに色々なパーツが?

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

絵理さん、PC自作だもんね。じゃなかった、vanilla RNN には以下の欠点があって、この前者を解決するのが上図の「記憶」のライン(原論文の constant error carrousel)、後者を解決するのが上図の Input Gate / Output Gate というように対応付いているよ。

  • 勾配や発散や消滅することにより学習が不安定になる: これは前回も話したけど、誤差を時間ステップをさかのぼらせて伝播させる毎に各時間ステップの誤差が掛け合わさることで発散や消滅の恐れがある問題だね。これは RNN の再帰構造に起因する問題ではなくて、再帰しない多層ネットワークでも層をさかのぼる度に誤差が掛け合わさるんだけど、RNN では時間ステップの長いデータを処理したいときさかのぼる回数が多くなるのと、再帰ゆえに同じ重みを何度も通るパスが存在することから特にクリティカルになっているね。
  • 重み係数のコンフリクトにより表現力が制限される: こちらは再帰構造ならではの悩みだね。ある入力パターンを受け取ったらその特徴を何ステップも保持したいとする。このとき、ある入力パターンから特徴を受け取るように学習しなければならないのはもちろんだけど、そうやって得た特徴がその後の入力によってかき消されないようにもしないといけない。あるときには受け取りたいけどあるときには受け取りたくない、これが Input 側のコンフリクト。他方、特徴があるパターンのときにだけ何か信号を出力したいとして、別のパターンのときにはそのような信号を出力しないようにしたいこともある。あるときには読み出したいけどあるときには読み出したくない、これが Output 側のコンフリクト。
前者を解決するには、再帰させる特徴ベクトルに重み係数を掛けることも活性化することも許されない(正確には原論文を見てね)。誤差を安定的に過去に伝播させるには、言い換えると、過去から今まで続く系列の特徴を学ぶには、そのような特徴には毎ステップ何か加算するくらいしかできない。このような「記憶」という特徴を再帰させる。後は、記憶を毎ステップ加算して読み出せばいい。LSTM では記憶にどのように加算するかをこそ学ぶ。でも、それだけだと重み係数のコンフリクトから逃れられない。だから、受け取りたいときだけ受け取れるように、読み出したいときだけ読み出せるように、制御するゲートを付けてしまってこのゲートの開閉も学べばいい。これが LSTM。

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

パーツパーツに意味があるんだ。

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

前回話しそびれたのはここまでだよ。

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

ありがとう泉さん。いまの話で読みやすくなった…今回読む論文のイントロダクションでも「LSTM によって記憶の保持期間の長期化と、ゲートによる情報フローの制御ができるようになった」とある…それで次の課題は…どうやって LSTM のキャパシティを大きくする?

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

LSTM のキャパシティ?

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

うん…いくら記憶をずっと保持することができても…複雑な記憶をもつことができなければ LSTM の適用場面は限られる。LSTM のキャパシティを広げる1つの方向は、単に記憶の次元を増やす…これは、一度にもてる情報量を増やす。もう1つは…特徴抽出の深化(という表現はわたしが勝手にあてているけど…)。LSTM をいくつも積み重ねる(Stacked LSTM が既に提案されている)ことで、より高レベルな特徴を抽出できるようになる…深層学習がなぜ深層なのかという話でよく挙げられるように…ピクセルからエッジを、エッジから顔のパーツを、顔のパーツから人の顔を…。時系列なら音素、言葉、会話文とか…?Stacked LSTM の原論文は読んでない…ごめん…。

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

その2つの方向が、論文タイトルの Wider と Deeper ということかな?

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

うん。もちろん、記憶の次元を増やせば Wider になるし、LSTM をいくつもスタックすれば Deeper にはなる…。でも…前者は追加的なパラメータを…後者は実行時間を要する…。

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

そりゃあパラメータは必要になるでしょ…記憶の次元を  d だけ大きくするなら、必要な追加パラメータは…あ、2乗で効くんだね。

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

そう。もう一方の Stacked LSTM は実行時間もかかるし、それに、多層化によって LSTM が払拭したはずの勾配の発散や消滅の懸念がまた首をもたげてくる…。

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

それは確かに問題って感じがするね。

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

それでこの論文では、上図の「記憶」を、テンソル―多次元配列の意味だと思う―で表現する手法で、LSTM を、パラメータの追加なしに Wider に、ほとんど実行時間の増加なしに安定的に Deeper にする…以下の順序でそれを実現していく…。

  • まず RNN の出力をテンソルにすることで、パラメータを共有しながら一度にもてる情報量を増やす。
  • 次に上の Tensorized RNN で特徴抽出の深化を時間ごとの再帰ループにマージさせていく。
  • Tensorized RNN を Tensorized LSTM に拡張する。

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

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つの実験については、次回にするねー。次で最終回にしたいにゃー。

つづく