Imitation Learning
很多場景是很難有一個明確的reward甚至沒有reward。所以需要很厲害的agent或者直接由人來示範的資料,讓agent跟著做。
本文會講兩個Imitation Learning的方法:
1.Behavior Cloning
Behavior Cloning其實和監督學習(supervised learning)是一樣的。 以自動駕駛為例子,蒐集很多的expert(假設是人類)駕駛資料,這些資料的狀態s是開車的場景,動作a是在此場景下做出的動作。把這些資料輸入到Neural Network中,使網路輸出的動作能儘可能接近實際人類做出的動作,就完成任務。
但是這個過程中,expert觀察到state是有限的。比如在實驗中,讓人去開車,都能順利轉彎,沒有出現撞牆的情況。而這時讓agent去開車,如果某一時間它沒及時轉彎導致處於快撞牆的state,由於缺少相應的訓練資料導致agent不知道接下來怎麼做。
所以這時需要引入Dataset Aggregation稍微緩解下這個問題。
1.讓actor
π
1
\pi_1
π1開車
2.讓一個專家坐在車子裡觀察所處狀態並告訴actor 做出什麼動作。
3.但是actor不會聽取專家的建議,還是以actor的意願去開車,最終就撞牆了,一個episode結束。
4.這時actor就知道在快要撞牆的時候要採取什麼樣的動作,然後用這個新的data去訓練新的actor
π
2
\pi_2
π2。
5.重複1234步
以上就是Dataset Aggregation的過程
從上面我們可以看出Behavior Cloning很容易實現,但是它也有問題:
1.agent會完全複製expert的行為,不管這個行為對不對
2.agent的學習能力有限,沒辦法什麼都學,有可能只學到不好的東西,沒學到有價值的東西
3.有可能會遇到Mismatch的問題(上面開車那個例子)
這裡再具體看一下第三點
在監督學習中,是希望訓練資料和測試資料有獨立同分布的。而在Behavior Cloning中,actor做出的action是會影響後續的state的。因為Network的訓練是有誤差的,訓練出來的actor 不可能完全和expert actor 一模一樣,就會導致某個state下,兩者採取的action不一樣,然後就導致後面的state完全不一樣了,最壞的情況就是actor後面遇到的state是expert沒遇到過的,這時actor就會完全不知道如何進行下去了。即,失之毫米,差之千里。
所以,雖然Behavior Cloning簡單但是並不是一個很好的辦法,所以又有第二種方法Inverse Reinforcement Learning (IRL)
2.Inverse Reinforcement Learning (IRL)
左圖是熟悉的Reinforcement Learning的步驟,通過Environment和Reward function,最終更新出理想的Actor。
右圖就是 Inverse Reinforcement Learning 的步驟,由於沒辦法從Environment獲得reward,那就通過收集expert的資料還有Environment的資訊,來反推Reward function,推出Reward function就能應用以前的Reinforcement Learning的做法了。
具體來看Inverse Reinforcement Learning怎麼運作的。
1.expert
π
\pi
π去玩遊戲,記錄遊戲過程,形成n個
τ
\tau
τ,每個
τ
\tau
τ代表1個episode。
2.actor
π
\pi
π 去玩遊戲,記錄遊戲過程,形成n個
τ
\tau
τ。
3.設定一個Reward Function,這個Reward Function強制要求expert的累計得分一定要高於actor的累計得分。
4.有了Reward Function就可以使actor去更新出更強的actor。
5.當actor能在此時的Reward Function達到很高的reward時,修改Reward Function(還是要求expert的得分一定要高於actor),6.讓actor根據新Reward Function去更新出更強的actor。
7.重複上述步驟。
Inverse Reinforcement Learning可以實現只用很少量的expert的示範資料,就訓練出一個很理想的actor。
看了以上的步驟,可以想到,actor和reward function就對應類似於GAN的generator和discriminator。通過reward function的不斷修改,使actor越來越接近expert的水平。
相關文章
- [Active Learning] Multi-Criteria-based Active Learning
- learning sequelize
- Meta Learning
- Learning TypeScriptTypeScript
- 《machine learning》引言Mac
- Python Learning: 03Python
- Python Learning: 01Python
- Learning MySQL and MariaDBMySql
- Learning Rhino - 2
- Learning Rhino - 1
- gitglossary learning by examplesGit
- Machine Learning with SklearnMac
- 《深度學習》PDF Deep Learning: Adaptive Computation and Machine Learning series深度學習APTMac
- 論文解讀(MLDG)《Learning to Generalize: Meta-Learning for Domain Generalization》AI
- day 3 of learning vueVue
- Deep learning - note 1
- Machine Learning-IntroductionMac
- Learning Node.jsNode.js
- Deep Learning with Differential Privacy
- Reinforcement Learning Basic Notes
- Self-supervised Learning
- Machine Learning - Basic pointsMac
- Web-Security-LearningWeb
- 《Learning ELK Stack》前言
- D. Learning to PaintAI
- Learning with Mini-BatchBAT
- "bare repository" learning by examples
- learning koa2.x
- Machine Learning (1) - Linear RegressionMac
- Extreme Learning Machine 翻譯REMMac
- pages bookmarks for machine learning domainMacAI
- Python Learning-目錄Python
- 【Learning eBPF-0】引言eBPF
- 《DEEP LEARNING·深度學習》深度學習
- Reinforcement Learning Chapter2APT
- Learning Java day1Java
- What is being transferred in transfer learning?
- Machine Learning(13)- Random ForestMacrandomREST