深度學習課程筆記(七):模仿學習(imitation learning)函數
2017.12.10 學習
本文所涉及到的 模仿學習,則是從給定的展現中進行學習。機器在這個過程當中,也和環境進行交互,可是,並無顯示的獲得 reward。在某些任務上,也很難定義 reward。如:自動駕駛,撞死一人,reward爲多少,撞到一輛車,reward 爲多少,撞到小動物,reward 爲多少,撞到 X,reward 又是多少,諸如此類。。。而某些人類所定義的 reward,可能會形成不可控制的行爲,如:咱們想讓 agent 去考試,目標是讓其考 100,那麼,這個 agent 則可能會爲了考 100,而採起做弊的方式,那麼,這個就比較尷尬了,是吧 ?咱們固然想讓 agent 在學習到某些本領的同時,能遵照必定的規則。給他們展現怎麼作,而後讓其本身去學習,會是一個比較好的方式。測試
本文所涉及的三種方法:1. 行爲克隆,2. 逆強化學習,3. GAN 的方法優化
接下來,咱們將分別介紹這三種方法:spa
1、Behavior Cloning : 3d
這裏以自動駕駛爲例,首先咱們要收集一堆數據,就是 demo,而後人類作什麼,就讓機器作什麼。其實就是監督學習(supervised learning),讓 agent 選擇的動做和 給定的動做是一致的。。。blog
可是,這個方法是有問題的,由於 你給定的 data,是有限的,並且是有限制的。那麼,在其餘數據上進行測試,則可能不會很好。ip
要麼,你增長 training data,加入日常 agent 沒有看到過的數據,即:dataset aggregation 。深度學習
經過不斷地增長數據,那麼,就能夠很好的改進 agent 的策略。有些場景下,也許適應這種方法。。。it
並且,你的觀測數據 和 策略是有聯繫的。由於在監督學習當中,咱們須要 training data 和 test data 獨立同分布。可是,有時候,這二者是不一樣的,那麼,就慘了。。。
因而,另外一類方法,出現了,即:Inverse Reinforcement Learning (也稱爲:Inverse Optimal Control,Inverse Optimal Planning)。
2、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 所作的整個流程了。
3、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 :