深度強化學習之:模仿學習(imitation learning)
2017.12.10

本文所涉及到的 模仿學習,則是從給定的展示中進行學習。機器在這個過程中,也和環境進行互動,但是,并沒有顯示的得到 reward。在某些任務上,也很難定義 reward。如:自動駕駛,撞死一人,reward為多少,撞到一輛車,reward 為多少,撞到小動物,reward 為多少,撞到 X,reward 又是多少,諸如此類。。。而某些人類所定義的 reward,可能會造成不可控制的行為,如:我們想讓 agent 去考試,目标是讓其考 100,那麼,這個 agent 則可能會為了考 100,而采取作弊的方式,那麼,這個就比較尴尬了,是吧 ?我們當然想讓 agent 在學習到某些本領的同時,能遵守一定的規則。給他們展示怎麼做,然後讓其自己去學習,會是一個比較好的方式。
本文所涉及的三種方法:1. 行為克隆,2. 逆強化學習,3. GAN 的方法
接下來,我們将分别介紹這三種方法:
一、Behavior Cloning :
這裡以自動駕駛為例,首先我們要收集一堆資料,就是 demo,然後人類做什麼,就讓機器做什麼。其實就是監督學習(supervised learning),讓 agent 選擇的動作和 給定的動作是一緻的。。。
但是,這個方法是有問題的,因為 你給定的 data,是有限的,而且是有限制的。那麼,在其他資料上進行測試,則可能不會很好。
要麼,你增加 training data,加入平常 agent 沒有看到過的資料,即:dataset aggregation 。
通過不斷地增加資料,那麼,就可以很好的改進 agent 的政策。有些場景下,也許适應這種方法。。。
而且,你的觀測資料 和 政策是有聯系的。因為在監督學習當中,我們需要 training data 和 test data 獨立同分布。但是,有時候,這兩者是不同的,那麼,就慘了。。。
于是,另一類方法,出現了,即:Inverse Reinforcement Learning (也稱為:Inverse Optimal Control,Inverse Optimal Planning)。
二、Inverse Reinforcement Learning (“Apprenticeship learning via Inverse Reinforcement Learning”, ICML 2004)
顧名思義,IRL 是 反過來的 RL,RL 是根據 reward 進行參數的調整,然後得到一個 policy。大緻流程應該是這個樣子:
但是, IRL 就不同了,因為他沒有顯示的 reward,隻能根據 人類行為,進行 reward的估計(反推 reward 的函數)。
在得到 reward 函數估計出來之後,再進行 政策函數的估計。。。
原本的 RL,就是給定一個 reward function R(t)(獎勵的加和,即:回報),然後,這裡我們回顧一下 RL 的大緻過程(這裡以 policy gradient 方法為例)
而 Inverse Reinforcement Learning 這是下面的這個思路:
逆強化學習 則是在給定一個專家之後(expert policy),通過不斷地尋找 reward function 來滿足給定的 statement(即,解釋專家的行為,explaining expert behavior)。。。
專家的這個回報是最大的,英雄級别的,比任何其他的 actor 得到的都多。。。
據說,這個 IRL 和 structure learning 是非常相似的:
可以看到,貌似真是的哎。。。然後,複習下什麼是 結構化學習:
我們對比下, IRL 和 結構化學習:
=======================================================================
我們可以看到,由于我們無法知道得到的 reward 情況,是以,我們隻能去估計這些 獎勵的函數,然後,我們用參數 w 來進行估計:
是以, r 可以寫成 w 和 f(s, a) 相乘的形式。w 就是我們所要優化的參數,而 f(s,a)就是我們提取的 feature vector。
那麼 IRL 的流程究竟是怎樣的呢???
上面就是 IRL 所做的整個流程了。
三、GAN for Imitation Learning (Generative Adversarial imitation learning, NIPS, 2016)
那麼如何用 GAN 來做這個事情呢?對應到這件事情上,我們知道,我們想得到的 軌迹 是屬于某一個高維的空間中,而 expert 給定的那些軌迹,我們假設是屬于一個 distribution,我們想讓我們的 model,也去 predict 一個分布出來,然後使得這兩者之間盡可能的接近。進而完成 actor 的訓練過程,示意圖如下所示:
=============================== 過程 ================================
====>> Generator:産生出一個軌迹,
====>> Discriminator:判斷給定的軌迹是否是 expert 做的?
==========================================================================
Recap:Sentence Generation and Chat-bot
===========================================================
Examples of Recent Study :