Blog人工知能であらゆる機械の自動化を目指すDeepXのメンバーが、最新の人工知能研究について発信します。2018-06-28Tweetエンジニアの吉田です。ICLR2018の参加報告を計4回にわたって行なっており、今回は2回目にあたります。第1回の報告では、ICLR2018の概要(ハコ)と強化学習の研究領域の簡単な紹介をしました。第2回以降では、ICLR2018で発表された論文(ナカミ)の紹介をしていきます。発表された中で印象深かった論文をピックアップして分野別に3回に分けて紹介する予定です。今回は、強化学習における転移学習に関連する論文を紹介します。転移学習と、転移学習と密接に関係するメタラーニングに関して整理します。転移学習とは転移学習とは、ソースタスクで学習したモデルから知識を抽出し、ターゲットタスクに適用することで、ターゲットタスクを少量のデータで高性能で解くことを目指す学習方法です。転移学習には以下の特徴があります。ターゲットタスクが定まっており、ソースタスクはターゲットタスクが解きやすくなるように設計・選定する必要がある。ソースタスクよりターゲットタスクの方が難しい傾向にある。Learn(学習の学習)とも呼ばれる学習方法です。タスクの集合を仮定して、そこから複数の訓練タスクをサンプリングして訓練していく中で、どのようにタスクを解けばいいのかという知識(タスクの集合に対するメタ知識)を抽出します。その知識を用いてテストタスクを少量のデータで訓練しつつも高性能に解けるようにすることを目指しています。狭義にはメタ知識を獲得する部分のみを指してメタラーニングと呼ぶこともあります。メタラーニングの概念図メタラーニングには以下の特徴があります。訓練タスクとテストタスクは同じ集合からランダムに定まる。訓練タスクとテストタスクの難易度は同程度である。転移学習はメタラーニングの部分問題と考えられますが、本記事では区別をつけやすいようにソースタスクとターゲットタスクを固定していた場合は転移学習、タスクの集合を仮定していた場合はメタラーニングと呼ぶことにします。強化学習における転移学習とメタラーニング第1回で整理した強化学習研究の整理表において転移学習とメタラーニングがどこに当たるか見ておきましょう。オレンジの箇所が転移学習とメタラーニングが扱う部分です。シミュレータでなく実機で強化学習をさせる場合、十分量のデータを収集することは難しいです。これは、深層強化学習アルゴリズムの多くは学習に必要な試行回数が多く、実機では1回の試行に少なくない時間がかかり、また、機械が劣化する、あるいは壊れる等の実機に特有の性質のためです。そのため、学習に必要な試行回数を減らす必要があります。その試行回数を減らす1つのアプローチとして、転移学習やメタラーニングでは、事前学習により初期方策を改善することを目指しています。次に強化学習における転移学習とメタラーニングの具体的な研究について説明します。強化学習における転移学習の応用の方向性として、ここでは、主要な2つを取り上げます。1つ目は、複雑なタスクであるターゲットタスクに対して、ソースタスクをその部分タスクとすることで、要素スキルを1つ1つ学ぶよう学習をステップ化し、安定性や効率性を向上させようという方向性です。具体例として、槍投げを学習させる場合を考えてみます。ターゲットタスクは槍投げです。ここでは、例えば、この槍投げを「槍を持って走った後に投げる」タスクと捉えます。加えて、「槍を持って走る」タスクと「槍を投げる」タスクをソースタスクとして、先に学習させます。することで、要素スキルを学習した状態で、ターゲットタスクを学習できるため、学習効率や安定性の向上が期待できます。2つ目は、実機でのタスクであるターゲットタスクに対して、ソースタスクをシミュレータでの同様のタスクとすることで、実機での試行回数を減らそうという方向性です。こちらについては、文献を交えつつ、説明します。シミュレータ実機の違いを簡単に整理します。シミュレータと実機では、制御・センサ信号の遅延や摩擦や慣性モーメント等物理パラメータ、制御・センサ値の誤差等の観点で相違があります。そのため、シミュレータで学習した制御方策をそのまま実機に適用しても実機ではシミュレータのように動かないことがほとんどです。Brainが発表した論文では、遅延の再現や物理パラメータのランダマイゼーション、状態空間の選定を行うことで、四足歩行ロボットの制御方策をシミュレータで学習して、その方策を実機に適用することで実機を走らせることに成功しています(下図)。2018]実機と近い条件やランダマイズされたパラメータにおいて学習された方策が、先の転移学習の章で説明した「知識」に相当します。シミュレータでは実時間より早く時間が流れますし、機械が壊れることもないため、十分な量のデータを得ることができます。そのため、実機でデータを集めるコストの大幅な低減が可能なため、シミュレータから実機への転移は非常に有用な手段になりえます。2017]というものがあります。この手法は下図のようにタスクの集合内のどのタスクにも、できるだけ少しの追加学習をするだけで転移できる機械学習モデルのパラメータの初期値を見付ける手法です。この初期方策がメタラーニングの章で説明した知識(メタ知識)に相当します。2017]このMAMLを強化学習に適用した結果が以下になります。前にでも後ろにでもすぐに転移できる走れる初期値を獲得し(下動画前半)、1回だけの勾配降下による追加学習で前方と後方に走ることに成功しています(下動画後半)。2017]また、ある範囲の一様分布から目標速度をサンプリングしてメタラーニングし、転移によって範囲内であればどんな速度でも走れる初期値を獲得し(下動画前半)、1回だけの勾配降下による追加額数で目標速度で走ることに成功しています(下動画後半)。2017]実際の応用の場面で動作速度が後になって決まる場合、目標速度が決まってからゼロから学習していては時間がかかってしまいます。メタラーニングを用いてどの速度にも即時に対応できるような初期方策を得ておくと複数の速度にすぐに転移できるため、試行回数の大幅な低減を期待できます。ここまで、転移学習とメタラーニングの概要、強化学習における転移学習とメタラーニングの概要と具体例について説明しました。この後は、ICLR2018で発表された、強化学習における転移学習とメタラーニングの論文をそれぞれ1つずつ説明します。al.]の2つの論文を紹介します。前者は転移学習の問題設定になっており、後者はメタラーニング(+転移学習)の問題設定になっています。どちらも階層型強化学習を用いており、スキル表現が対照的で興味深いです。初めは走って最高速度で槍を投げる)を表す上位方策に分けて学習する強化学習手法です。2つの論文では、スキルを表す下位方策の表現方法に、潜在変数として埋め込むか、1スキル1下位方策と対応づけるかの観点でも違いがあります。下記の表に、2つの論文の特徴を比較整理しました。al.]この論文は転移学習の問題設定になっています。ソースタスクでスキルを埋め込む潜在空間を知識として獲得し、ターゲットタスクでは獲得したスキル空間のみを探索することで問題を解決します。多くの先行研究において、1つのスキルを1つの方策だけに覚えさせる方法は、システムの多様性や適応性を損なうことが指摘されています。そこで、効率的に、スキルを表現してそのスキルを再利用する方法への関心が高まっており、また、この方法の開発が大きな課題になっています。この論文は、この課題の解決を狙っています。実験で使用するタスク。al.]問題設定この論文では以下のような3つのタスクを扱います。いずれも、下図の青いブロックを灰色の球状のゴールに入れると報酬を得らえるタスクになります。中:組合せでとけるがターゲットタスクにアームと箱の衝突回避の要請あり手法この論文で使われるタスクとスキルという単語の定義がややこしいので整理しておきましょう。タスク:上図のような報酬を得る条件や環境を決めると1つに定まるもの。上図は9つのタスクが存在していることになる。軌道:上図のL-wallのLift(真ん中のタスク)を例にとると、ブロックを真上に持ち上げたり、斜め上に持ち上げて直接ゴールに持っていたりといった軌道が考えられる。(同じ高さに行けば同じ報酬がもらえるので色んな方向に動かす自由度がある)下図の例でいうと、真ん中の初期値から左に行く「タスク」と右に行く「タスク」があり、同じ左に行くタスクでも真っすぐゴールに向かう「スキル」や回り込みながらゴールに向かう「スキル」などの複数のスキルがみられます。al.]この論文の手法の概要図は下図のようになっています。al.]:タスクを表すone-hotベクトル:スキルを表現する潜在特徴空間にタスクを埋め込み潜在変数zを得るエンコーダ:現在の状態sと使用したいスキルzを入力として次の行動aを決める方策:状態の系列と行動から使用すべきスキルを推論するデコーダタスクの報酬を最大化しながらも多様なスキルでタスクを解いてほしいので、タスクに条件づけられた方策のエントロピー最大化項を加えた以下の最適化問題として記述できます。これを変分下界を用いて変形すると、エンコーダーとデコーダーと方策の学習は以下の目的関数のもと、行われることと同値になります。以下の部分が一般的な強化学習と異なる部分であり、それぞれスキルを構成する条件を表しています。:タスクに対していろいろなスキルが出てきてほしい(generality):同じスキルでも多様な軌道が出てきてほしい(versatility):転移学習に使用したいのでスキルを実行したときの軌跡からスキルを推定できるようにしたい(identifiability)また、転移先タスクでは事前学習で獲得した方策のパラメータを固定します。zを入力してロールアウトさせてタスクを解かせます。ターゲットタスクではどのスキルを使うかについてのみ探索をすればよいことになります。学習させる(提案手法)。学習させる(提案手法)。netを用いることで以下の図のように得られる軌道に多様性があらわれることが確認できます。Liftというタスクで、ランダムにzをサンプリングさせて方策をロールアウトさせています。al.]この結果についてポスター発表の際に著者と以下のようなやり取りをしました。著者「逆に考えてください。同じ軌道を出すようになります。」ターゲットタスクに転移した結果は下図のようになっています。scratchに解けないタスクを提案手法が解けています。allもタスクを解けるが関連する事前学習用タスク2つのみの提案手法の方がサンプル効率が高くなっています。netの性能が悪いのは事前学習でqによって多様なスキルが生じていて多様なスキルを表す潜在空間zを獲得できていたからと主張されています。versalityが効いているということです。数式としても綺麗な手法ですし、スキルを潜在空間で表すとinterpolateできて事前学習になかったスキルまで使えるようになるのは画期的と感じました。al.]この論文はメタラーニングの問題設定になっています。訓練タスクで1つの下位方策に1つのスキルを獲得させてメタ知識とし、テストタスクでどの下位方策を使うかを決める上位方策のみ追加学習させることで汎化性能を評価しています。追加実験としてタスク集合のタスクとは環境が大きく異なるターゲットタスクに転移させるという転移学習の問題も行っています。この論文は内容もさることながら著者がOpenAIでインターンをしている高校生という事実も驚きです。従来の階層強化学習の研究は単一タスクにフォーカスされていて、タスクの集合を仮定することが少ない。強化学習におけるメタラーニングの研究では数回の勾配降下での転移しか扱っておらず、多量の勾配降下を用いて転移する研究はない。このような背景から強化学習におけるメタラーニングを階層強化学習をツールとして解くことを目指した研究になります。問題設定タスクの集合は迷路形状の分布になっています。したがって、迷路の形状はランダムに生成されます。ランダムに生成される多様な迷路形状を解くことで、どんな迷路形状を解く時でも必要な知識の獲得を目指します。どの形状の迷路でも、上/下/右に進む3つのスキルの組み合わせで解けるので、3つのスキルに対応する下位方策が獲得したい知識になります。この知識を訓練タスクで得た後、新しい迷路形状のテストタスクでも成功できるかを確かめます。9つの迷路形状の異なるソースタスク。