深度強化學習簡介

釋出於 2022 年 5 月 4 日
在 GitHub 上更新

Hugging Face 深度強化學習課程的第 1 章 🤗

⚠️ **本文的更新版本在此處提供** 👉 https://huggingface.co/deep-rl-course/unit1/introduction

本文是深度強化學習課程的一部分。這是一個從入門到精通的免費課程。請在此處檢視課程大綱 here.

Thumbnail

⚠️ **本文的更新版本在此處提供** 👉 https://huggingface.co/deep-rl-course/unit1/introduction

本文是深度強化學習課程的一部分。這是一個從入門到精通的免費課程。請在此處檢視課程大綱 here.

歡迎來到人工智慧最引人入勝的主題:**深度強化學習。**

深度強化學習是一種機器學習型別,其中代理透過**執行動作**並**觀察結果**來學習在環境中**如何行動**。

自 2013 年的《深度 Q-學習》論文以來,我們已經看到了許多突破。從 OpenAI 在 Dota2 中擊敗世界上一些最佳玩家的 Five,到 靈巧專案,我們**正處於深度強化學習研究的激動人心的時刻。**

OpenAI Five, an AI that beat some of the best Dota2 players in the world
OpenAI Five,一個擊敗世界上一些最佳 Dota2 玩家的 AI

此外,自 2018 年以來,**你現在可以訪問如此多出色的環境和庫來構建你的代理。**

這就是現在是開始學習的最佳時機的原因,透過本課程,**你來對了地方。**

是的,因為本文是深度強化學習課程的第一單元,這是一個**從初學者到專家免費的課程**,你將學習理論並使用著名的深度強化學習庫,如 Stable Baselines3、RL Baselines3 Zoo 和 RLlib。

在這門免費課程中,你將:

  • 📖 **理論與實踐**地學習深度強化學習。
  • 🧑‍💻 學習**使用著名的深度強化學習庫**,如 Stable Baselines3、RL Baselines3 Zoo 和 RLlib。
  • 🤖 在**獨特環境**中訓練代理,如 SnowballFight、Huggy the Doggo 🐶,以及經典環境,如 Space Invaders 和 PyBullet。
  • 💾 **一行程式碼**將訓練好的代理釋出到 Hub。也可以從社群下載強大的代理。
  • 🏆 **參與挑戰**,你將在其中評估你的代理與其他團隊的表現。
  • 🖌️🎨 學習**分享你使用 Unity 和 Godot 製作的環境**。

所以在這個第一單元中,**你將學習深度強化學習的基礎知識。**然後,你將訓練你的第一個著陸器代理**正確地降落在月球🌕並將其上傳到 Hugging Face Hub,這是一個免費的開放平臺,人們可以在其中共享機器學習模型、資料集和演示。**

在深入實施深度強化學習代理之前,**掌握這些要素**至關重要。本章的目標是為你打下堅實的基礎。

如果你願意,可以觀看本章的 📹 影片版本

那麼,我們開始吧!🚀

**什麼是強化學習?**

要理解強化學習,我們先從大局著眼。

**概述**

強化學習的思想是,**代理(AI)將透過與環境互動(透過試錯)並接收獎勵(負面或正面)作為執行動作的反饋來學習。**

透過與環境互動學習**源於我們的自然經驗。**

例如,想象一下,把你的小弟弟放在一個他從未玩過的影片遊戲面前,手裡拿著控制器,然後讓他一個人玩。

Illustration_1

你的弟弟將透過按下正確的按鈕(動作)與環境(影片遊戲)互動。他得到一個硬幣,那是 +1 獎勵。這是積極的,他剛剛明白在這個遊戲中**他必須獲得硬幣。**

Illustration_2

但接著,**他又按下了右鍵**,他碰到了一個敵人,他剛死了 -1 獎勵。

Illustration_3

透過與環境的試錯互動,你的小弟弟明白**他需要在這個環境中獲取硬幣,但要避開敵人。**

**在沒有任何監督的情況下**,這個孩子會越來越擅長玩這個遊戲。

這就是人類和動物的學習方式,**透過互動。**強化學習只是一種**透過行動學習的計算方法。**

**正式定義**

現在我們來看一個正式定義

強化學習是一種解決控制任務(也稱為決策問題)的框架,透過構建代理,使其透過試錯與環境互動並接收獎勵(正面或負面)作為唯一反饋來學習。

⇒ 那麼強化學習是如何工作的呢?

**強化學習框架**

**強化學習過程**

The RL process
強化學習過程:狀態、動作、獎勵和下一個狀態的迴圈
來源:《強化學習:導論》,Richard Sutton 和 Andrew G. Barto

為了理解強化學習過程,讓我們想象一個代理正在學習翫一個平臺遊戲

The RL process
  • 我們的代理從**環境**中接收到**狀態 S0S_0**——我們收到遊戲(環境)的第一幀。
  • 根據該**狀態 S0S_0,**代理執行**動作 A0A_0**——我們的代理將向右移動。
  • 環境進入一個**新的狀態 S1S_1**——新的一幀。
  • 環境給代理一些**獎勵 R1R_1**——我們沒有死(*正面獎勵 +1*)。

這個強化學習迴圈輸出一個**狀態、動作、獎勵和下一個狀態**的序列。

State, Action, Reward, Next State

代理的目標是最大化其累積獎勵,**稱為預期回報。**

**獎勵假設:強化學習的核心思想**

⇒ 為什麼代理的目標是最大化預期回報?

因為強化學習基於**獎勵假設**,即所有目標都可以描述為**最大化預期回報**(預期累積獎勵)。

這就是為什麼在強化學習中,**為了獲得最佳行為,**我們需要**最大化預期累積獎勵。**

**馬爾可夫性質**

在論文中,你會看到強化學習過程被稱為**馬爾可夫決策過程**(MDP)。

我們將在後續單元中再次討論馬爾可夫性質。但如果你今天需要記住一些關於它的東西,馬爾可夫性質意味著我們的代理**只需要當前狀態來決定**採取什麼動作,而**不需要之前的所有狀態和動作的歷史記錄**。

**觀測/狀態空間**

觀測/狀態是**代理從環境中獲取的資訊**。在影片遊戲的情況下,它可以是一幀(截圖)。在交易代理的情況下,它可以是某種股票的價值等。

觀察和狀態之間有一個區別

  • 狀態 s:是對**世界狀態的完整描述**(沒有隱藏資訊)。在完全可觀測的環境中。
Chess
在國際象棋遊戲中,我們從環境中接收到一個狀態,因為我們可以訪問整個棋盤資訊。

在國際象棋遊戲中,我們從環境中接收到一個狀態,因為我們可以訪問整個棋盤資訊。

在國際象棋遊戲中,我們處於一個完全可觀測的環境中,因為我們可以訪問整個棋盤資訊。

  • 觀測 o:是**狀態的部分描述**。在部分可觀測的環境中。
Mario
在《超級馬里奧兄弟》中,我們只能看到靠近玩家的部分關卡,所以我們收到一個觀測。

在《超級馬里奧兄弟》中,我們只能看到靠近玩家的部分關卡,所以我們收到一個觀測。

在《超級馬里奧兄弟》中,我們處於一個部分可觀測的環境中。我們收到一個觀測,**因為我們只能看到關卡的一部分。**

實際上,在本課程中我們使用“狀態”一詞,但在實現中我們將進行區分。

總結一下

Obs space recap

動作空間

動作空間是**環境中所有可能動作的集合。**

動作可以來自*離散*或*連續空間*

  • 離散空間:可能的動作數量是**有限的**。
Mario
同樣,在《超級馬里奧兄弟》中,我們只有 4 個方向和跳躍動作

在《超級馬里奧兄弟》中,我們的動作集是有限的,因為我們只有 4 個方向和跳躍。

  • 連續空間:可能的動作數量是**無限的**。
    Self Driving Car
    自動駕駛汽車代理有無限多的可能動作,因為它可以左轉 20°、21.1°、21.2°、按喇叭、右轉 20°……

總結一下

Recap action space

考慮這些資訊至關重要,因為它將在**將來選擇強化學習演算法時具有重要意義。**

**獎勵與折扣**

獎勵在強化學習中至關重要,因為它是代理的**唯一反饋**。多虧了它,我們的代理才知道**所採取的行動是否正確。**

每個時間步 t 的累積獎勵可以寫成

Rewards
累積獎勵等於序列中所有獎勵的總和。

這相當於

Rewards
累積獎勵 = rt+1 (rt+k+1 = rt+0+1 = rt+1)+ rt+2 (rt+k+1 = rt+1+1 = rt+2) + ...

然而,實際上,**我們不能就這樣把它們加起來。**較早(遊戲開始時)的獎勵**更有可能發生**,因為它們比長期未來的獎勵更可預測。

假設你的代理是這隻小老鼠,它每個時間步可以移動一格,你的對手是貓(它也可以移動)。你的目標是**在被貓吃掉之前吃到最大量的乳酪。**

Rewards

正如我們在圖中所見,**吃到我們附近的乳酪比吃到靠近貓的乳酪更有可能**(我們離貓越近,就越危險)。

因此,**靠近貓的獎勵,即使它更大(更多的乳酪),也會被更多地折扣**,因為我們不確定能否吃到它。

要**折扣獎勵**,我們這樣做

  1. 我們定義一個稱為伽馬的折扣率。**它必須在 0 到 1 之間。**大多數情況下在 **0.99 和 0.95** 之間。
  • 伽馬值越大,折扣越小。這意味著我們的代理**更關心長期獎勵。**

  • 另一方面,伽馬值越小,折扣越大。這意味著我們的代理**更關心短期獎勵(最近的乳酪)。**

2. 然後,每個獎勵將以時間步數的指數對伽馬進行折扣。隨著時間步的增加,貓離我們越來越近,**所以未來的獎勵發生的可能性越來越小。**

我們**折扣後的累積預期獎勵**是

Rewards

任務型別

任務是強化學習問題的**一個例項**。我們可以有兩種型別的任務:情節性和連續性。

情節性任務

在這種情況下,我們有一個起點和終點(**一個終點狀態**)。**這構成一個回合**:一個由狀態、動作、獎勵和新狀態組成的列表。

例如,想想《超級馬里奧兄弟》:一個回合從啟動一個新的馬里奧關卡開始,並**在你被殺死或到達關卡末尾時結束。**

Mario
新回合的開始。

連續性任務

這些任務將永遠持續下去(沒有終止狀態)。在這種情況下,代理必須**學習如何選擇最佳動作並同時與環境互動。**

例如,一個進行自動化股票交易的代理。對於這個任務,沒有起點和終點狀態。**代理將一直執行,直到我們決定停止它們。**

Stock Market
Tasks recap

**探索/利用權衡**

最後,在研究解決強化學習問題的不同方法之前,我們必須涵蓋一個非常重要的話題:*探索/利用權衡。*

  • 探索是指透過嘗試隨機動作來探索環境,以**發現更多關於環境的資訊。**

  • 利用是指**利用已知資訊來最大化獎勵。**

請記住,我們強化學習代理的目標是最大化預期累積獎勵。然而,**我們可能會陷入一個常見的陷阱。**

舉個例子

Exploration

在這個遊戲中,我們的老鼠可以吃到**無限量的小塊乳酪**(每塊+1)。但在迷宮的頂部,有巨量的乳酪(+1000)。

然而,如果我們只關注利用,我們的代理將永遠無法達到巨量的乳酪。相反,它只會利用**最近的獎勵來源**,即使這個來源很小(利用)。

但是如果我們的代理進行一些探索,它就可以**發現巨大的獎勵**(那堆大乳酪)。

這就是我們所說的**探索/利用權衡**。我們需要平衡**探索環境**的程度和**利用我們所瞭解的環境**的程度。

因此,我們必須**定義一個規則來處理這種權衡**。我們將在未來的章節中看到不同的處理方法。

如果仍然感到困惑,**請思考一個實際問題:選擇一家餐廳:**

Exploration
來源:加州大學伯克利分校人工智慧課程
  • 利用:你每天都去你熟悉的同一家餐廳,**承擔錯過另一家更好餐廳的風險。**
  • 探索:嘗試你從未去過的餐廳,有不好的體驗的風險,**但有極好體驗的可能機會。**

總結一下

Exploration Exploitation Tradeoff

**解決強化學習問題的兩種主要方法**

⇒ 現在我們瞭解了強化學習框架,如何解決強化學習問題呢?

換句話說,如何構建一個能**選擇能最大化其預期累積獎勵的動作**的強化學習代理?

**策略 π:代理的大腦**

策略**π**是**代理的大腦**,它是一個函式,告訴我們**在給定當前狀態下應該採取什麼行動。**因此,它**定義了代理在給定時間點的行為**。

Policy
將策略視為我們代理的大腦,該函式會告訴我們給定狀態下要採取的動作

將策略視為我們代理的大腦,該函式會告訴我們給定狀態下要採取的動作

此策略**是我們想要學習的函式**,我們的目標是找到最優策略**π**,即當代理根據該策略行動時,**能最大化預期回報的策略。我們透過訓練找到這個**π**。

訓練我們的代理找到這個最優策略 π* 有兩種方法

  • **直接**教代理學習在給定狀態下**採取什麼動作**:**基於策略的方法。**
  • **間接**地教代理學習**哪些狀態更有價值**,然後採取**導致更有價值狀態的動作**:基於價值的方法。

**基於策略的方法**

在基於策略的方法中,**我們直接學習一個策略函式。**

此函式將每個狀態對映到該狀態下最佳的相應動作。**或者在該狀態下可能動作集上的機率分佈。**

Policy
如我們在此處所見,策略(確定性)**直接指示了每個步驟要採取的動作。**

我們有兩種策略型別

  • 確定性:給定狀態下的策略**總是返回相同的動作。**
Policy
動作 = 策略(狀態)
Policy
  • 隨機性:輸出**動作上的機率分佈。**
Policy
策略(動作 | 狀態)= 在給定當前狀態下動作集上的機率分佈
Mario
給定一個初始狀態,我們的隨機策略將輸出在該狀態下可能動作的機率分佈。

總結一下

Pbm recap
Pbm recap

**基於價值的方法**

在基於價值的方法中,我們不是訓練一個策略函式,而是**訓練一個價值函式**,該函式將狀態對映到**處於該狀態的預期價值。**

一個狀態的價值是代理在**從該狀態開始並按照我們的策略行動**時可以獲得的**預期折扣回報**。

“根據我們的策略行動”只是指我們的策略是“**走向價值最高的州**”。

Value based RL

這裡我們看到我們的價值函式**為每個可能的狀態定義了價值。**

Value based RL
多虧了我們的價值函式,我們的策略每一步都會選擇價值函式定義的價值最大的狀態:-7,然後是-6,然後是-5(依此類推),以達到目標。

多虧了我們的價值函式,我們的策略每一步都會選擇價值函式定義的價值最大的狀態:-7,然後是-6,然後是-5(依此類推),以達到目標。

總結一下

Vbm recap
Vbm recap

**強化學習中的“深度”**

⇒ 到目前為止我們談論的是強化學習。但“深度”又從何而來呢?

深度強化學習引入了**深度神經網路來解決強化學習問題**——因此得名“深度”。

例如,在下一篇文章中,我們將研究 Q-學習(經典強化學習),然後是深度 Q-學習,兩者都是基於價值的強化學習演算法。

你會發現不同之處在於,第一種方法中,**我們使用傳統演算法**來建立一個 Q 表,幫助我們找到每個狀態下要採取的動作。

在第二種方法中,**我們將使用神經網路**(來近似 q 值)。

Value based RL
靈感來自 Udacity 的 Q 學習筆記本的圖示

如果你不熟悉深度學習,你絕對應該觀看 fastai 的面向程式設計師的實用深度學習課程(免費)

資訊量很大,我們來總結一下

  • 強化學習是一種透過行動學習的計算方法。我們構建一個代理,透過**試錯**與環境互動並接收獎勵(負面或正面)作為反饋來學習。

  • 任何強化學習代理的目標都是最大化其預期累積獎勵(也稱為預期回報),因為強化學習基於**獎勵假設**,即**所有目標都可以描述為最大化預期累積獎勵。**

  • 強化學習過程是一個迴圈,輸出一系列**狀態、動作、獎勵和下一個狀態。**

  • 為了計算預期累積獎勵(預期回報),我們對獎勵進行折扣:較早(遊戲開始時)的獎勵**更有可能發生,因為它們比長期未來的獎勵更可預測。**

  • 為了解決強化學習問題,你需要**找到一個最優策略**,策略是人工智慧的“大腦”,它會告訴我們**在給定狀態下應該採取什麼行動。**最優策略是**能夠最大化預期回報的策略。**

  • 有兩種方法可以找到你的最優策略

    1. 透過直接訓練策略:**基於策略的方法。**
    2. 透過訓練一個價值函式,告訴我們代理在每個狀態下將獲得的預期回報,並使用該函式來定義我們的策略:**基於價值的方法。**
  • 最後,我們談論深度強化學習,因為我們引入了**深度神經網路來估計要採取的動作(基於策略)或估計狀態的價值(基於價值)**,因此得名“深度”。


現在你已經學習了強化學習的基礎知識,你已經準備好訓練你的第一個著陸器代理,使其**正確地降落在月球🌕並將其透過 Hub 🔥 分享給社群**

點選這裡開始教程 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit1/unit1.ipynb

由於學習和避免能力錯覺的最佳方法是**自我測試**。我們編寫了一個測驗來幫助你找出**你需要加強學習的地方**。在此處檢查你的知識 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit1/quiz.md

恭喜你完成了本章!**這是最長的一章**,資訊量很大。也恭喜你完成了教程。你剛剛訓練了你的第一個深度強化學習代理並將其分享到 Hub 🥳。

如果所有這些元素讓你**仍然感到困惑**,那是**正常現象**。**我和所有學習強化學習的人都經歷過同樣的感覺。**

花些時間真正理解這些材料再繼續。掌握這些元素並打下堅實的基礎,才能進入**有趣的部分。**

如果你想深入瞭解,我們在教學大綱中釋出了額外的閱讀材料 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit1/README.md

當然,在課程中,**我們將再次使用和解釋這些術語**,但最好在深入下一章之前理解它們。

在下一章中,我們將學習 Q-學習並更深入地瞭解**基於價值的方法。**

別忘了分享給你想學習的朋友 🤗!

最後,我們希望**根據你的反饋不斷改進和更新課程**。如果你有任何反饋,請填寫此表格 👉 https://forms.gle/3HgA7bEHwAmmLfwh9

繼續學習,保持優秀,

社群

註冊登入 發表評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.