深度學習課程筆記(七):模仿學習(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 :








