深層強化学習
公開資料
松尾研「深層強化学習セミナー」
予習講義
・問題設定を理解する
・なぜ深層強化学習が有効なのか理解する
・強化学習の実応用上の課題・近年の研究の動向を知る
エージェントがその環境との相互作用を通じて期待されている行動の系列を実行するように学習させる問題
多くのゲームでプロゲーマーと同等以上の性能を達成
ロボットのマニピュレーションやキャベツの定量ピッキングもできている
うまいやり方を試行錯誤を通じて見つけていく
強化学習の定式化
状態 st:エージェントが行動することで変化する環境の要素
行動at:エージェントの環境に対する働きかけ
マルコフ決定過程:次の時刻の状態は常に直前の状態と行動のみに依存する
状態遷移確率:状態stで行動atをとったときに状態s(t+1)に変化する確率
部分観測マルコフ決定過程:エージェントが状態s(t)の真値を与えられない設定
観測o(t):直前の行動と状態に依存して決まる
状態の遷移が観測できない部分で時間的に関連している場合などに考えられる
報酬r(t+1):ある状態s(t)に対する行動a(t)の評価値
収益R(t):その後の報酬の系列に対する評価値
強化学習の目的は期待収益の最大化
割引率が小さいほど即時的な報酬を重視
方策π(s):状態sにおける行動を出力する関数
つまりエージェントの行動規則
状態価値関数Vπ(s):そのあと、方策πに従うときの状態sの評価値を出力する関数
行動価値関数Qπ(s,a):その後、方策πに従うときの状態sにおける行動aの評価値(期待収益)を出力する関数
状態価値・行動価値・アドバンテージ
状態価値関数
行動価値関数
アドバンテージ:方策πに従うときの状態sでの行動aの相対的な良さの指標
Q関数も行動に関する価値関数だが、そもそも報酬の高い状態にいるとQ値も大きくなり、行動の価値自体を表すものではない
決定論的方策・確率的方策
確率的方策:ある状態sにおける行動aをとりうる行動の候補の中からある確率で選択する方策
決定論的方策:ある状態sでは常に行動aを出力する方策
探索と活用のジレンマ:なぜ確率的方策を用いるか?
現時点で最良と推定されている方策を選択すると他にとりうる行動からの収益が得られなくなる
他にとりうる行動が実際には良いことが決して学習できない
探索的な行動と学習した方策の活用のバランスが重要
問題設定:離散値状態・離散値行動から
古典的な強化学習手法の多くが離散値状態・離散値行動のアルゴリズムをベースにしている
価値に基づく手法
状態の行動や価値をもとに方策を決定する手法
Q関数を使うのものが一般的
再帰的な更新でQ関数を推定
TDターゲットの違いで複数のアルゴリズムがある
SARSAやQ-learning
マーケットの売買で強化学習使うのがある
SARSA
Q-Learning
価値に基づく手法での代表的な方策
決定論的方策:Greedy方策
確率論的方策:ε-Greedy方策
SARSAのQ-learningの更新式はどこからきたのか?
ベルマン方程式
ベルマン最適方程式
On-Poicy vs Off-Policy
On-policy:学習時に制御に用いた方策と同じ方策で価値を推定
Off-policy:学習時の制御に用いる方策と評価され改善される方策が異なる
関数近似の必要性
テーブル近似の欠点
・離散値への変換の仕方に設計が必要
・次元の呪い
・値同士の関連性を無視しているため学習が遅い
関数近似手法
コアースコーディング
タイルコーディング
RBFカーネル
良い近似関数を設計するには各問題に対する知見が必要
→NNでええやん
NNによる関数近似
価値関数や方策を近似する
DQN:行動価値関数のNNによる近似
Q関数をNNで近似してQ-learningを行う
特徴
・CNNの利用
・ターゲットネットワークの利用
・Experience Replayの利用
・報酬のクリッピング
CNNの利用
画像の入力に対応
ターゲットネットワークの利用:学習の安定化
Q関数の更新式
Experience Replay:過去の経験も使う
報酬のクリッピング
各ステップで得られる報酬の値を-1, 1の範囲に収める 方策勾配法
直接パラメータ化
REINFORCE:方策のNNによる近似
Actor-Critic
価値関数と方策の両方を関数近似
連続値行動空間への対応
DDPG:方策をNNで近似してDQNを利用可能に
強化学習の課題について
知能全体がケーキだとしたら単純な強化学習はチェリー
強化学習のサンプル効率の低さ
モデルフリーvsモデルベース
モデルベースRLと世界モデル
学習した方策やモデルの転移
人間の事前知識の利用
シミュレータの利用
Residual RL
模倣学習
オフライン強化学習
まとめ
強化学習はエージェントが環境との相互作用を通じて、期待された行動の系列を実行するような方策を学手する問題
状態や行動に関する価値や方策のパラメータを直接更新することで方策の学習を行う
NNを用いて関数近似することで、高次元で連続値の状態空間や行動空間が扱えるようになった
今後もデータを用いたロボット制御に関する研究や実応用が発展するはず
第1講 強化学習基礎
世界モデルとロボティクスが今後重要になる
修了したらDL輪読会に参加できる
強化学習の基礎
意思決定則を学習する
報酬の収益の総和を最大化するのが目的
例:制御、ゲーム戦略、金融、経営、政策
特性
データは自分で集める
遅延報酬
探索と活用のトレードオフ
強化学習の応用例
ロボットの制御
ゲーム
良いニューラルネットワークの構造を探索
データセンターの冷却電力を効率化
コンテンツ推薦の最適化
良い性質を持つ化学物質の設計
強化学習の定式化について
マルコフ決定過程
マルコフ決定過程を仮定しない方が精度が良くなりそうだが、そういった研究はあるのだろうか?
エピソード的タスクと連続タスクがある
収益・目的関数
単純な報酬和だと無限ステップの行動で無限に報酬獲得ができてしまい発散するので割引率を導入する
価値関数を方策の良さを示す目的関数として用いる
状態価値関数と方策
状態価値関数
行動価値関数
方策:ある状態sで行動aを選択する確率
方策の種類
ベルマン方程式
方策の価値関数を最大化したい
価値関数が満たす再帰的な式をベルマン方程式という
強化学習の方策改善の流れ
ベルマン方程式により、ある方策πを固定した時の様々な状態・行動に対する価値関数を具体的に求めることが可能
つまりある方策で環境の状態行動遷移の価値関数を計算→
方策改善のやり方で2つのやり方に分類
プランニングと強化学習
プランニング
環境のモデルが既知の場合に、モデルを用いて最適方策を求める手法
DPでベルマン方程式を求められる
SARSAはDPを近似的にやっている
モデルフリー強化学習とモデルベース強化学習
モデルフリー:環境モデルを持たず、環境から得たサンプルを使って方策学習
モデルベース強化学習:環境から得た経験で環境モデル自体を学習して方策改善に利用
テーブル形式の強化学習
いろいろ試していく
ルックアップテーブルを見て行動する
TD学習
経験した全てのデータを蓄積して更新に用いるのは効率が悪い
ある時間ステップで得た経験で価値を更新する
ターゲットというのはだいたいの価値の見積もり(教師信号みたいな)
ターゲットの違いにより、Q学習とSARSAに分けられる
方策オンと方策オフ
方策オン:改善しようとしている方策と同じ方策で得た経験で方策を改善する
方策オフ:改善対象と探索に使用している方策が違ってもOK、異なる学習のデータを使っているため分散が大きい、Q学習やDQNはこっち
Q学習
TDターゲットをmaxとした手法
greedy方策で最も高いQ値の行動をとったとして使う
SARSA
方策オン型
ターゲットに現れる実際の行動を用いて学習
テーブル形式学習の限界
状態数が多くなりすぎると全ての状態行動対をテーブル形式で表現するのは難しい
対策:人間が決めたやり方で状態を離散化し、状態空間を小さくする
関数近似による強化学習
入力から特徴抽出をして状態の類似性を捉え、似た状態に対しては似た出力をしてくれるようなパラメータを持つ関数を学習することを考える
いろいろな関数近似法
方策の関数近似法
DPG
DDPG
TRPO
価値関数の関数近似法
方策勾配法とその利点
パラメータθの関数近似器で方策を直接表現し、方策パラメータθを勾配法により学習することを考える
行動価値を求めてから方策を表現する価値ベース手法の欠点
行動空間が連続の場合、行動が大すぎ
方策勾配法/方策勾配定理
方策勾配はある式から求めることができる
だが、これは解析的には求められないので近似的に求める
1 REINFORCE
2 actor-critic
REINFORCE(モンテカルロ方策勾配法)
方策勾配の式中のQを収益で置き換える
Actor-Critic
方策モデルと並行して、状態価値関数を近似する状態表現モデルを同時に学習する
近年主流の深層強化学習で方策ベースのときはこれを使うことが多い
深層強化学習アルゴリズムの発展
深層強化学習
高い関数近似能力によりエージェントの観測を価値関数や方策を表現する
一般的にはDQN以降に登場したニューラルネットワークを使った手法全般を指す
ベースとなる技術は他の深層学習の手法と変わらない
Deep Q Networks
CNNの使用、報酬クリッピングなど、様々な工夫により深層ニューラルネットワークを強化学習の関数近似器として使う手法のスタンダード
DQNの学習
やっていることは強化学習と深層学習のミックス
深層学習では、損失→勾配→パラメータ更新
強化学習では損失を定義するときの教師ラベルとしてターゲットを使う
ターゲットと予測されたQの二乗誤差を考える
DQNの工夫/ターゲットネットワーク
テーブルのない深層強化学習ではターゲットをどうやって予測するのか?
教師データを作るのに同じネットワークを使ってはダメだろう
→ターゲットを求めるため、更新前のパラメータθをコピーしたターゲットネットワークを使用
DQNの工夫/経験再生
リプレイバッファと呼ばれる機構に、環境内を探索して得た複数の経験を保存し、深層ニューラルネットワークのバッチ学習を行うときにこのバッファからランダムに複数の経験を選択してミニバッチ学習(経験再生)を行う
今までの強化学習における経験の使い方の問題
1 一般的なSGDで前提としているサンプル間の独立性が時系列的な相関によって壊れる
2 極めてレアな経験があったとしてもそれを後で使えずに捨ててしまう
DQNの工夫/CNNの利用
今はResnetなどのものが使われていることがある
報酬のクリッピング
小さい問題
全ての報酬を-1~1にする
サッカーと野球の違いみたいにゲームによって違うので
深層強化学習のベンチマーク:Atari2600
DQNでは様々な動作が要求されるゲーム49種類をベンチマークとした
現在は57個のゲームが使用される
DQN以降の発展
DQN
Double DQN
Q学習やDQNなど、価値の過大評価による学習阻害の問題あり
2つの関数近似器を用いて、「行動選択」と「価値評価」を行う部分
直感的には、2つのネットワークがどちらも価値評価を大きく間違える可能性は低いため、片方がもう片方を抑制する
Priotized Experience Replay
DQNでは経験再生時にリプレイバッファに貯めた過去の経験からランダムサンプリングをして学習していた
実際のデータには学習効果が高い経験とそうでない経験が混ざっているはず
学習効果が高い経験を優先的に学習に使いたい
これは各経験データに対して、TD誤差が高いものに対して大きい優先度を割り当てるよう優先度をつける
Dueling Network
深層学習
状態のみに依存する部分とそれ以外の行動で決まる部分に分解できると考えられる
行動
Dueling Network/可視化による直感的理解
AtariのレースゲームEnduroで状態価値とアドバアンテーじがどのように分離されているか可視化
Categorical DQN
ある行動をしたときにどれくらいの確率でどれくらいの報酬を得られるかを示す分布をモデル化することで学習に有用な表現を学習できると考えられる
リスク考慮型強化学習
分布を51にしたのが精度が良かったので、C51という手法がある
Noisy Network
活用と探索の問題について取り組んでいる
各行動ステップで独立なもうちょっと広く探索してあげる
深層ニューラルにノイズを加えてあげる
Rainbow
全てのDQN拡張手法を組み合わせた全部混ぜ深層強化学習
Double DQN, Prioritized Experience Replay, Dueling Networks, Categorical DQN, Noisy Networkを混ぜ合わせた
Rainbow/どの手法が効いているのか
Prioritized Experience Replayの貢献は大きい
Double DQNやDueling Networkは影響が小さい
Noisy NetworkやCategorical DQNは後半にパフォーマンス低下
ここまでが純粋な1つのアルゴリズム
ここからは別の視点
分散型深層強化学習
ここまででは1つの深層ニューラルネットワークに1つのエージェントが対応し、1つの環境から経験を集める方式だった
CPUやGPUはその気になれば複数用意できる
各機構を複数計算機に分散させて学習を効率化する
Gorila
並列の複数環境を探索して経験を集めて深層強化学習
あまり使われていない
現在はもっと計算効率の良い手法が主流
A3C(Asynchronous Advantage Actor-Critic)
DQNのような価値ベースではなく、方策ベースのActor-Criticを使った分散型強化学習の手法
Experience Replayを廃止
CPUで構成される単一のマシンで高速に学習可能で、現在でも非常によく使われる
A3CとA2C
実装上は非同期部分を廃止しても問題ないのでA2Cが使われている
Ape-X
環境から経験を集めるActor,リプレイバッファ、リプレイバッファからサンプルした経験から勾配を計算して学習するLearnerに分けた分散型深層強化学習
あっっっっとう的な学習性能
R2D2
Ape-XにRNNを組み込んだ最強の分散型深層強化学習アルゴリズム
R2D2/深層強化学習でRNNを使うための工夫
RNNの隠れ状態と再生するときのネットワークの隠れ状態が違うため学習が困難
これを回避するため2つの工夫
1 Stored state:
2 Burn-in
R2D2の性能
Ape-Xを3倍以上も更新した異常者
その他の分散型深層強化学習アルゴリズム
ACER:A3Cを方策オフ型で経験再生を利用できるように
IMPALA:
UNREAL
現在の深層強化学習の最先端アルゴリズムはこの分散深層強化学習がベース
物凄い性能だが、物凄い計算資源が必要なので個人で手を出せる領域ではない
深層強化学習のここまでと課題
DQN~分散型深層強化学習R2D2まででAtari57ゲームでほとんど人間ごえ
しかし破滅的なパフォーマンスのゲームがある
深層強化学習の新たなパラダイム/内発的報酬による探索
攻略できないゲームは性能が違いすぎる
報酬がスパースな会では報酬の獲得が難しすぎて価値関数がほとんど更新されず意味のない探索が繰り返される
強化学習における外的報酬と内発的報酬
環境内で何らかの基準でエージェント自身が勝手に生み出す報酬
今まで行ったことのない状態に行ったら報酬を生成させてあげようということをやっている
いろんなアルゴリズムが提案されている
内発的報酬をいじって、分散を組み合わせて、バンディットなどいろいろをいじってやるとAgent57というアルゴリズムができて、全てのゲームで人間を超えた!!!
コードの説明
gpuを使う
ラッパーとして環境をうまく動くようにしている、おまじない
gymが、ベンチマークを提供してくれているもの
actionというところが、ランダムに行動をサンプル
stepに行動を渡すと環境で何か起きる
質問
モデルフリーがホットになって最近落ち着いてきたので、モデルベースが提案されてきた
将棋は選択肢が変わる
マリオも選択肢が変わることがある
エージェントは挙動不審
必ず行動するように設計されているのでは?
行動しないという行動を追加することもある
第2講 シミュレータの利用:連続値制御
シミュレーターがAI研究のボトルネック説
深層物理シミュレーション
目標
連続値制御とは何かを理解する
シミュレーション環境(PyBullet)の使い方を知る
方策勾配法を理解する
PPO、SACを理解する
連続値制御とは?
環境がわたされてうまくやるのが強化学習の得意なこと
ロボットに強化学習を導入したい
メリット
物理法則を詳しく調べなくても勝手に学習してくれる
デメリット
異常な行動をするかも
連続値制御ではQ関数が使えない
テーブルを埋めていく方法では困難
連続値制御では近い出力の関係を無視したくない
多くの場合、連続値制御では方策を最適化する
連続値制御の実験環境
MuJoCo
PyBullet
OpenAI Gym
DM Control
Unity ML
ROS
演習 PyBullet
PyBulletの基本的な使い方を演習する
データ形式の確認・編集
トルク制御・速度制御
衝突判定
環境の状態の取得
シミュレータが使えるよさ
自分で新しいタスク設計
Sim2Real、メタRL
強い人が少ない
pysicsClientで世界を作ってる
r2d2とかもurdfというファイル、xml形式で記述されている、質量とか慣性モーメントとかなど
urdfファイルを保存して、colabにアップロードする、色とか変えられる
r2d2のurdfを編集してみようと思うが、これはだるいのでやめておく
sim2realと呼ばれるロボット学習の分野では見た目に関係なく制御が行われるように、テクスチャなどをランダムにすることも
commandが速度
最後に状態を受け取る、なぜかというと、環境の状態を受け取って、うまく行ったかどうかを判断して方策などを変えていく
シミュレータだと、これが簡単にえられるので嬉しい!
衝突したかどうかを視覚的に表示されることができる
これで環境が変わったことがわかり、報酬を設定することで強化学習ができる
連続値制御アルゴリズム
方策勾配定理
TD、λ収益、GAE
VPG
TRPO
PPO
DDPG
TD3
SAC
状態価値関数と行動価値関数
行動価値関数はAtが含まれている
状態価値関数はAtも含まれているだけの違い
メインは割引報酬和
Q-Learning
次のステップのQ値の最大と今の報酬の誤差
DQNではQ関数をNNで関数近似
これらは連続値制御に向いていないので、ここからは方策も関数近似して、方策を直接最適化する手法について扱う
方策勾配定理
方策の良さの指標をf(・)として、目的関数を最大化するθを学習
ここでは例として、累積報酬和の良さの指標にした方策の最適化を考える
どうやって最適化するのか?→θで微分
自動微分できない
pの微分はできないが、log derivative trickというものを使うと、掛け算が足し算になって自動微分できるようになる
神様が決める環境モデルのところは定数扱いできる
積分を期待値に戻すとPが消える
アルゴリズムを作るときはlogの状態で実装することになる
神が決める環境の部分も関数近似するのがモデルベース強化学習である
今回はモデルフリー強化学習
方策勾配定理
Dは4000とかなので分散学習が大切
VPG:Vanilla Policy Gradient
純粋な方策勾配法
ポリシーの良さの評価
報酬和
Rt - b(St)
アドバンテージ
一般的にはアドバンテージを使う
準備3つ
TD(λ)
λ収益
Generalized Advantage Estimation
互いに関係し合っている
バイアスとバリアンスのトレードオフ
λ収益
TD(λ)
GAE
TD(λ)の発想で拡張
At(1)はTD誤差でかけた
アドバンテージはTD誤差の無限和で書き表せた
λ収益をGAEで表す
λ収益はV関数と誤差だけで表せた
TRPO:Trust Region Policy Optimization
背景
方策パラメタの更新幅を小さくしても挙動が大きく変わってしまうことが多々あッタ
解決策
方策の変化を測り、変化量に制約を設けた元で方策を最適化する
制約の元での最適化なので、ラグランジュの未定乗数法を用いる
Natural Policy Gradient
ラグランジュの未定乗数法により更新式が求まる
ヘシアンの逆行列が求まらないので、共役勾配法で求めていく
PPO:Proximal Policy Optimization
TRPOは実装が大変!
ほとんど形は変わっていない
Rが小さくなりすぎたり大きくなりすぎたりするのを防ぐ
演習2
TDごさを計算した後ひたすらλかけてたしまくる
DDPG
TD3:Twin Delayed DDPG
SAC:Soft Actor-Critic
エントロピーがでかいときに報酬
性能がよい!!
演習
Sacでは各状態に対して標準偏差を出している
第3講 制御モデルの利用:モデルベース強化学習
目標
モデルベース強化学習の手法の基礎を学習
近年のモデル学習手法を知る
どのような問題設定でモデルベースがよいのか、既存の制御手法と比べて良くなるのか
前回まではモデルフリーだったが、今回は制御に何らかのモデルを用いる
制御モデル、環境モデル、既知、未知(モデル学習)など
運動学の利用、最適制御、プランニング、モデルベースRL
既知の制御モデル
ロボット制御するときに、必ずしも強化学習を用いる理由はない
ロボット制御ではモデルを利用した制御の方が本流である
どういうときにモデル(事前知識)を使うのが良くて、どういうときに強化学習を使ったら良いのかを理解する
ロボットアームを使った強化学習タスク
マニピュレータの制御を素直にRLすると結構難しいことがある
単純な把持タスクはRLを使わずに解くことが多い
モデルとは環境やタスクの構造に関する知識を明示的に表現したもの
ルールが既知の場合、状態遷移モデルにおけるルールが得られる場合はモデル学習の場合として考えることができる
次回は模倣学習とオフライン強化学習
まとめ
既知のモデルを利用することでプランニングができる
モデルが未知の場合でも方策の学習とモデルの学習を組み合わせてサンプル効率高く学習が可能
モデルの不確実性を考慮した手法が提案されてきた
近年ではモデル学習手法としての工夫も多く見られる
制御対象に関する人間の事前知識をモデルに導入するための方法を検討する余地がある
第4講 デモを利用する手法
1 デモ利用のモチベーション
概要
模倣学習、逆強化学習
オフライン強化学習
なぜデモンストレーションを利用するのか?
複雑なタスクそれぞれに対して報酬を設計するのは大変
模倣学習では人間に近い性能を出せる可能性があり、オフライン
でもを利用した強化学習:QT-Opt
58万回の試行データを事前に集めてoff-policyで学習する
2 模倣学習のアプローチ
・Behavior Cloning
デモデータの行動をそのまま真似る
・逆強化学習
でもデータで選択された行動の裏側の方策を学習する
Behavior Cloning
逆強化学習はGANとして理解できる
第5講 Control as Inference:世界モデル
これまでの内容とは毛色が違う
内容
・ベイズ統計入門
・強化学習の基礎
・Control as inderence
・部分観測マルコフ決定過程
・世界モデル
強化学習は教師あり学習や教師なし学習とはちょっと違う
統計的なフレームワークを使うと、強化学習も一般的に考えられる
今日理解すること
・機械学習手法の多くは統計モデルの推論問題として定式化できる
統計モデル
グラフィカルモデル
最尤推定
ベイズ推定
最尤推定は決め打ち
例えばデータの量に対する情報は全て捨ててしまう
強化学習の基礎まとめ
Control as Inference
強化学習でのモデルは何?
何を推論している?
第6講 応用を見据えた発展的話題
第一部:ゲームAIの基礎
ここでは2人以上のプレイヤーが参加するゲームで各プレイヤーが自身またはチームの目標達成のために行うものが対称
現在は深層強化学習などが使われいるが、歴史的には職人芸的なものが多い
ゲームに関連する概念
人数
完全情報性
確定性
ゼロサムゲーム
その他、有限性、収束性など
ゲームの分類
将棋、囲碁:二人完全情報確定ゼロ和ゲーム
1対1のポケモン:二人不完全情報不確定ゼロ和ゲーム
ポーカー:多人数不完全
人生
二人完全情報確定ゼロ和ゲーム
必勝法がある
先手後手の時点で勝敗が決まる
ゲームAIの主戦場である
ゲームAIのアプローチ
ルールベース行動選択:基本的にむり、局面が多すぎるので
ゲーム木の探索:どうやって効率よく学習するか
ゲーム戦略の学習:
ゲーム理論による戦略決定:他のプレイヤーは合理的に意思決定するという仮定をおく
ルールベース行動選択
ゲーム内に出現しうる状況に対し、if thenの形で対応する処理を書いていく
ゲーム木
先手後手プレイヤーからなる展開型ゲームの木はミニマックスゲーム木という
ゲーム木の葉では先手プレイヤーの勝利、敗北、引き分けに対してゲーム値を与える
マックスプレイヤーの手番では子ノードのスコアが最大
ミニプレイヤーの手番では子ノードのスコアが最小のものを選択
これを繰り返してroot noodまでつなげるのがミニマックス探索
囲碁、将棋などは理論上可能な状態数が多すぎるため現在の計算機では不可能
評価関数
この場面だったらこのぐらい勝てるだろうという評価関数がわかれば、最後まで探索しなくてもミニマックス探索のようなものがわかるだろう
歴史的には評価関数は職人芸だったが、後から機械学習でこれを学習し始めた
alpha-beta法
評価関数を使うことで木を展開しなくても、ある程度探索が可能に
ゲーム木の中には実際に探索しなくても良い部分があり、それを省略すれば高速な探索が可能になる→枝刈り
これは将棋では効果があったが、囲碁ではあまり意味がなかった
というのも囲碁では評価関数を作るのが難しかった
モンテカルロ法
複数ある候補手のうち、具体的に良い打ち手の基準がなくてもいい手を見つけたい
コンピュータの計算力に任せて、可能手を選択して終局まで適当に打つシミュレーションを複数回繰り返せば良いか?
なんとなくいろんな手を複数回シミュレーションしてみて、勝率が高い手が一番良い打ち手として採用する手法→モンテカルロ法
モンテカルロ木探索
原始モンテカルロ木探索では乱数シミュレーションを行うため、現実的には相手がミスをしなければ勝ちにつながらないような手を選択してしまう可能性
そこで有力な手に探索を集中させる手法
ゲームAIの教師あり学習
評価関数を人手で設計するのはいくつかの問題がある
人間のトッププロが実際にうつ手の教師データがあればパラメータを自動で学習できるやん!
ゲームAIの強化学習
強化学習は補助的に扱われる
これらのゲームではゲーム木探索の際の局面評価に使う
一方、格ゲー、RTSなどはゲーム木展開できないので強化学習の価値・方策モデルをそのまま使う
純粋戦略ナッシュ均衡
複数のプレイヤーが関わるとゲーム理論が出てくる
第二部:様々なゲームAI
初期の人工知能研究ではゲームが対象
最近はAlphaGoの手法が主流
AlphaZeroで、ゲーム木でとけるゲームはほぼ解かれたので、それ以降は違うゲームに対しての研究
チェッカーAI
ゲーム木の探索に加え、割引やTD学習のような概念を導入して平均よりはちょっと強いAIを作った
TD-Gammon
強化学習を使った最初期の本格的ゲームAI
盤面を入力とするニューラルネットを使った関数近侍による
チェスAI
IBMがつくったDeep Blueが当時最強プレイヤーを打ち負かし、ゲームAIの最前線から離脱
計算能力をめっちゃ使ったら勝った!みたいな感じ
将棋AI
Bonanza:機械学習で評価関数を作った
Ponanza:2013にプロ棋士に勝利、当時はロジスティック回帰ベース
囲碁AI
Crazy Stone:モンテカルロ木探索
MoGo:ハンデありでプロに勝利
AlphaGo:イ・セドルに勝った
ロールアウトポリシー:モンテカルロ木で高速ににプレイアウト
SLポリシーネットワーク:
バリューネットワーク:
RLポリシーネットワーク:自己対戦で強化
非同期方策価値モンテカルロ木探索:主役
AlphaGo Zero
教師学習は全く使わず、自己学習だけで最強に
アルゴリズムとしては単純だが強い
AlphaZero
汎用性のあるやつにして、チェスや将棋AIにも勝てるようになった
ポーカーAI
DeepStack, Libratus, Prulibus
強化学習を全く使っていない
ゲーム理論を使っている
Counterfactual Regret Minimizationというものを使っている
麻雀AI
天鳳で10段
OpenAI Five
Dota2で世界チャンピオンに勝利
新しい手法を提案したというより、超大型AIを頑張って学習させた
LSTMを使ったネットワークでPPOで学習させた
とんでもない量の計算資源を使った
AlphaStar
スタークラフトAI
既存のAI技術の総結集させた
グランドマスターに勝利
転移学習・メタ学習
ロボット工学の未解決問題というタグがツイッターである
転移学習
強化学習でそれぞれの環境やタスクごとに個別の方策を学習?
人間が学習するときもタスク間で使いまわせるなんらかの事前知識を利用しているはず→転移学習の利用による学習の効率化
あるタスクの経験を利用して新しいタスクの学習を高速化したり、性能を高める
タスクはMDP、状態遷移関数、報酬関数
shot:ターゲットでの試行回数
転移学習の大雑把な分類
Forward Transfer:1つのタスクで訓練して他のタスクに転移する
Multi-task Transfer:たくさんのタスクで訓練して新しいタスクに転移する
Multi-task meta-learning:たくさんのタスクで「学習の仕方」を学習する
Forward Transfer
・特に工夫しないで学習した方策をそのまま使う
・事前学習, fine-tuning系
・Domain randomization系:シミュレーターでタスクを色々変えて学習させる
・ドメイン適応系:ターゲットタスクにソースタスクで学習した内容を適応させる
事前学習, fine-tuning
エントロピー最大化の方策が良い初期化になる
エントロピー最大化項によって方策の多様性を担保する
Domain Randomization
ソースタスクの設定を変更することができる場合
Sim2Realなどでよく用いられる
力学に関するパラメータをランダマイズする場合、dynamics randomizationと呼ばれる
Active/Automatic Domain Randomization
賢くランダマイゼーションしましょう!
シミュレータのパラメータを最適化してくれる
ターゲットドメインに関する知識が得られないとき
Domain Adaptation
ターゲットドメインに関する知識が得られる場合
例えば、シミュレータの入力画像をGANでrealisticにするなど
Multi-task transfer
たくさんのタスクで訓練して他のタスクに転移する
・モデルベース強化学習の利用
・Contextual Policyの学習
モデルベース強化学習の利用
タスクが異なっていても、運動方程式のようなモデルはある程度共通しているはず
マルチタスクで学習したダイナミクスモデルをpriorとしてオンラインで新たなタスクに適応
Contextual Policyの利用
ある程度共通した環境内で複数のモデルが考えられる場合にタスクを表す変数ωで条件づけられた方策を学習
例えば、どのに物体をおくかが違う、歩くべき方向が違うときなど
Multi-task Meta-Learning
たくさんのタスクの学習の仕方を学習する
未知のタスクにfew-shotで適応できるモデルを学習
NNのパラメータを出力し、テストタスクに適応する手法も多い
MAML
NNのパラメータの良い初期値を求める
全タスクで共通の初期パラメータから各タスクごおtに数ステップパラメータを更新
勾配法を二回やっているような感じ
メタ強化学習
MAMLを強化学習に利用
タスクごとに動く向きが違う設定
テスト時はfew-shotなロールアウトのみが許される
メタ模倣学習
MAMLを模倣学習に利用
与えられた少数のデモを利用して未知のタスクを実行
メタ模倣学習(ドメイン適応版)
人間のデモを使って新しいタスクを解く
メタ訓練時は同じタスクを解いた人間とロボットの遠隔操作のペア
メタテスト時間は未知のタスクの人間のデモのみ与えられる
メタ学習とcontextual policy
タスク固有の潜在変数で条件づけられたcontextual policyをメタ学習として解釈可能
few-shotで得られるロールアウト・デモから潜在的なタスク変数を確率的に推論
報酬の設計
どんな報酬関数を用いるのか?
ここまでは、逆強化学習を除いて、報酬は与えられているとして議論を進めてきた
報酬設計の難しさ
報酬がスパースな場合、探索がたくさん必要
だからといって中間的な報酬を設けると性能を毀損する可能性がある
よくやられている手法
・内的な報酬を利用する
・人間の好みを使う
・マルチタスクの場合、後知恵で報酬を付け加える
内的報酬の利用
外的な報酬がめったに得られない問題設定での探索
DADSを実機に利用
数時間で実用的なロコモーションが学習できる
人間の好みから模倣学習
報酬関数を設計するのは面倒だが、得られた軌道に順位をつけるのは比較的簡単
D-REX
ランキングを自動生成するT-REX
HER
goal-conditional RLで後知恵で報酬ラベルを付け替える経験リプレイを利用
VAEでゴール画像を生成
Generalized HER
HERをgoal-conditionalじゃないRLに利用
深層強化学習の課題
アルゴリズムとして
・安定性:アルゴリズムは収束するのか
・効率性:収束するまでにどれだけ時間がかかるのか
・汎化:収束したところで、学習した方策が汎化しているのか?
問題設定として、
・そもそも正しい問題設定になっているか
・どんなデータを使って学習するか?
ロボット学習で何を解くべきか?
既存の制御モデルでかなり解ける問題
・限定されたタスク・環境で高速に制御
・対象のシステムの挙動が既知・推定しやすい
ロボット学習が得意そうな領域
・環境やタスク、対象の多様性が大きい
・非線型など
データドリブンなロボティクスに向けて
ハードウェアに観点
・安価で信頼性が高い
・解きたいタスク・対象に適切なハードウェアの設計
データの観点
・Domain gapの小さいリアルなシミュレータ
・データを大量に低コストに取得する
手法の観点
まとめ
・解きたい問題に対して適切なハードウェア、アルゴリズム、データを検討することが大切
・ロボット学習を利用して、今までのロボット制御では難しかった制御ができるようになるはず
大規模なデータ収集・アルゴリズム開発のサイクルを回すことが大事になりそう
・知能を作る観点からは強化学習に限らず他の分野との融合も大切