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 TypeScriptTypeScript
- 機器學習(Machine Learning)&深度學習(Deep Learning)資料機器學習Mac深度學習
- Machine Learning with SklearnMac
- gitglossary learning by examplesGit
- 《machine learning》引言Mac
- CodeReview LearningView
- 論文解讀(MLDG)《Learning to Generalize: Meta-Learning for Domain Generalization》AI
- Machine Learning - Basic pointsMac
- Web-Security-LearningWeb
- Python Learning: 03Python
- Python Learning: 01Python
- Learning Node.jsNode.js
- Learning MySQL and MariaDBMySql
- day 3 of learning vueVue
- Learning with Mini-BatchBAT
- blogs for learning javaJava
- Code Review Engine LearningView
- Chkrootkit Sourcecode Learning
- Deep Learning with Differential Privacy
- D. Learning to PaintAI
- 《深度學習》PDF Deep Learning: Adaptive Computation and Machine Learning series深度學習APTMac
- 吳恩達機器學習第三課 Unsupervised learning recommenders reinforcement learning吳恩達機器學習
- Machine Learning(機器學習)之一Mac機器學習
- Machine Learning-IntroductionMac
- Machine Learning (10) - Decision TreeMac
- Machine learning terms_01Mac
- Extreme Learning Machine 翻譯REMMac
- pages bookmarks for machine learning domainMacAI
- Machine Learning(機器學習)之二Mac機器學習
- Learning Java day1Java
- 深度學習(Deep Learning)深度學習
- "bare repository" learning by examples
- 【機器學習】李宏毅——Unsupervised Learning機器學習
- Reinforcement Learning Chapter2APT
- Machine Learning 機器學習筆記Mac機器學習筆記
- PHP Code Reviewing LearningPHPView
- Learning Django: the hard way (1)Django