本文是對Arthur Juliani在Medium平台發布的強化學習系列教程的個人中文翻譯,該翻譯是基於個人分享知識的目的進行的,歡迎交流!(This article is my personal translation for the tutorial written and posted by Arthur Juliani on Medium.com. And my work is completely based on aim of sharing knowledges and welcome communicating!)
原文地址(URL for original article)
從本系列的上一篇博客算起,已經有一段時間沒更新了。上篇博客講的是如何設計一個策略梯度強化學習agent,它能解決CartPole任務。在本教程里,我將重新審視CartPole問題,但這一次,我會引入環境模型的概念,agent將可以利用這個環境模型來改善它的性能。

什么是模型,以及為什么我們要用一個模型?在這個情境下,一個模型將會是一個神經網絡,它會嘗試去學習真實環境的動態(dynamics)。比如,在CartPole中,我們想要一個模型可以在考慮了之前的位置以及當時選擇的行動后,預測Cart下一個位置。通過學習到一個精准的模型,我們可以訓練我們的agent使用這個模型,而不是每次都要求真實的環境來給它反饋。這可能看起來不是那么有用,但是實際上環境模型可以帶來巨大的優勢,尤其是在嘗試學習在物理世界里的行動策略時非常有用。
不像在計算機模擬中的樣子,物理環境需要時間來摸清,而且世界的物理法則會避免出現像簡單的環境重置這樣不合理的事情出現。於是,我們可以通過建立環境模型來節省時間和精力。有了一個環境模型,一個agent可以想象(imagine)在真實環境中進行四處移動的感覺,並且我們可以在這個想象的環境中讓agent也學會足夠好的策略,就和能在真實世界中學到的一樣。如果我們有了一個足夠好的環境模型,agent就完全可以基於這個模型來進行訓練,並且當把agent第一次放入真實環境中時,它也能表現得足夠好。
那我們怎么用TensorFlow來實現環境模型呢?如我之前所提到的,我們將用一個神經網絡來實現,它可以學習之前的觀察和動作的組合,到所預期的新的觀察與回報之間的遷移動態(transition dynamics)。我們的訓練過程將包括在用真實環境來訓練模型,和用模型環境來訓練agent的策略之間不斷切換。通過用這種方法,我們將有可能學習到一個策略,使我們的agent可以解決CartPole任務,而不需要實際在真實環境中進行訓練。讀一下下面的iPython notebook,看一下實現細節。
源代碼太長,就不在這里放了…
現在已經有兩個神經網絡了,還有很多超參數可以調,以使整體模型的性能和效率都能更高。我強烈推薦你去自己多嘗試一下以發現更好地組裝這些模型的方式。在Part 4,我將探索如何利用卷積神經網絡來學習更復雜環境的表征,如Atari游戲。
如果這篇博文對你有幫助,你可以考慮捐贈以支持未來更多的相關的教程、文章和實現。對任意的幫助與貢獻都表示非常感激!
如果你想跟進我在深度學習、人工智能、感知科學方面的工作,可以在Medium上follow我 @Arthur Juliani,或者推特@awjliani。
用Tensorflow實現簡單強化學習的系列教程:
- Part 0 — Q-Learning Agents
- Part 1 — Two-Armed Bandit
- Part 1.5 — Contextual Bandits
- Part 2 — Policy-Based Agents
- Part 3 — Model-Based RL
- Part 4 — Deep Q-Networks and Beyond
- Part 5 — Visualizing an Agent’s Thoughts and Actions
- Part 6 — Partial Observability and Deep Recurrent Q-Networks
- Part 7 — Action-Selection Strategies for Exploration
- Part 8 — Asynchronous Actor-Critic Agents (A3C)
