當前位置:
首頁 > 新聞 > 深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

本文為 AI 研習社編譯的技術博客,原標題 :

Diving deeper into Reinforcement Learning with Q-Learning

作者 | Thomas Simonini

翻譯 | 斯蒂芬?二狗子

校對 | 斯蒂芬?二狗子 審核 | 醬番梨 整理 | 菠蘿妹

原文鏈接:

https://medium.freecodecamp.org/diving-deeper-into-reinforcement-learning-with-q-learning-c18d0db58efe

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

本文是 Tensorflow 深度強化學習課程的一部分。?點擊這裡查看教學大綱。

今天我們將學習 Q-Learning。 Q-Learning 是一種基於數值的強化學習演算法。

本文是關於深度強化學習的免費系列博客文章的第二部分。有關更多信息和更多資源,請查看 課程的教學大綱。 請參閱 此處的第一篇文章。

在本文中,您將學習:

  • 什麼是 Q-Learning

  • 如何用Numpy實現它

大圖:騎士和公主

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

假設你是一名騎士,你需要拯救被困在上面地圖上所示城堡中的公主。

您可以一次移動一個圖塊。敵人不能移動,但是騎士和敵人落在同一塊地磚上就會死。目標是使騎士儘可能以最快的路線前往城堡。這可以使用「積分」系統來評估。

騎士每走一步都減去1分 (使用每一步-1策略有助於我們的Agent快速到達終點)。

  • 如果 騎士 觸碰一個敵人,將失去100分,然後這一集結束。

  • 如果 騎士 在到達城堡並獲勝,將得到100分。

  • 問題是:如何做才能創建一個的 Agent 完成這個任務?

這裡的第一個策略:讓 Agent 不斷嘗試移動到每個瓷磚上,然後為每個瓷磚著色。綠色表示「安全」,紅色表示「不安全」。

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

相同的地圖,但著色顯示哪些瓷磚可以安全訪問

然後,我們可以告訴 Agent 只在綠色瓷磚上移動。

但問題是這樣做並沒有對問題有幫助。當綠色瓷磚彼此相鄰時,我們無法分辨哪個瓷磚更好。所以 Agent 在試圖找到城堡過程會因此陷入死循環!

介紹Q表

這是第二個策略:創建一個表格,我們將計算每種狀態 state 下採取的每種行動 action的最大的未來預期獎勵。

多虧了這個策略,我們將知道對每種狀態採取的最佳行動是什麼。

每個 state(瓷磚片)允許四種可能的動作。它們分別是向左,向右,向上或向下移動。

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

0表示不可以執行的動作(如果你在左上角你不能向左或向上!)

在計算方面,我們可以將此網格轉換為表格。

這個表格被稱為 Q 表(「Q」表示動作的「質量」)。列表示是四個動作(左,右,上,下)。行表示的是狀態。每個單元格的值將是該給定狀態和行動的最大未來預期獎勵。

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

如果在 state 狀態下給定的行動 action 是最佳策略,那麼每個 Q 表評分為未來獎勵的最大期望。

為什麼我們說「根據策略給出?」這是因為我們不能直接給出這種策略。而是通過改進我們的 Q 表以始終選擇最佳行動 action。

可以把這個 Q-table 認為是一個遊戲的「備忘單」。通過找到「備忘單」行中的最高分,我們知道每個狀態(Q 表中的每一行)最好的行動是什麼。

Yeah!我們解決了城堡問題!但是等等......我們如何計算 Q 表中每個元素的值?

要給出此 Q 表的每個值,可以使用 Q-learning 演算法。

Q學習演算法:學習動作值函數

動作值函數(或「 Q 函數」)有兩個輸入:「狀態」和「動作」。它返回該動作在該狀態下的預期未來獎勵。

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

我們可以把這個 Q 函數作為一個閱讀指南,通過滾動 Q 表找到與我們的狀態相關的行,以及與我們的動作相關聯的列。它返回匹配的 Q 值。這個值就是「預期的未來獎勵」。

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

在我們探索環境之前,Q 表中的值是固定的初始值(一般為0)。在我們探索環境時,通過使用Bellman方程迭代更新Q(s,a),Q 表中的值將趨近於更好(見下文!)。

Q學習演算法過程

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

Q-Learning演算法的偽代碼

步驟1:初始化Q值

我們構建一個Q表,有 m 列 (m = 行動數)和 n 行(n =狀態數)。我們將值初始化為0。

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

第2步:終身學習(或直到學習停止)

該過程將重複步驟3到5,直到演算法運行次數為的 episode 的最大值(由用戶指定)或直到我們手動停止訓練。

步驟3:選擇操作

根據當前的Q值 選擇 當前狀態下行動 Action a。

但是......如果每個Q值都是零,那麼在該採取什麼行動?

這就是我們在上一篇文章中談到的探索/使用權衡的重要性。

我們的想法是,在開始時,我們將使用epsilon貪心策略:

  • 我們指定一個探索率「epsilon」,我們在開始時設置為1,即隨機執行的step的速度。剛開始學習時,這個速率必須是最高值,因為我們對Q表的取值一無所知。這意味著我們需要通過隨機選擇我們的行動進行大量探索。

  • 生成一個隨機數。如果這個數字> epsilon,那麼我們將進行「 使用」(這意味著我們使用已知的方法來選擇每一步的最佳動作)。否則,我們會進行探索。

  • 我們的想法是,在Q函數訓練開始時我們必須有一個較大的epsilon。然後,隨著Agent變得做得越來越好,逐漸減少它。

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

步驟4-5:評估!

採取行動action a 並觀察結果狀態 s" 和獎勵 r。 並更新函數Q(s,a)。

我們採取我們在步驟3中選擇的操作,然後執行此操作將返回一個新的狀態s"和獎勵r(正如我們在第一篇文章中的看到的強化學習過程那樣)。

然後,使用Bellman方程更新Q(s,a):

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

更新Q(state,action)代碼可以寫成如下所示:

New Q value =

Current Q value +

lr * [Reward + discount_rate * (highest Q value between possible actions from the new state s』 ) — Current Q value ]

我們來舉個例子:

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

  • 一個乳酪= +1

  • 兩個乳酪= +2

  • 大堆乳酪= +10(劇集結束)

  • 如果吃到鼠毒= -10(劇集結束)

第1步:初始化Q表

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

初始化的Q表

步驟2:選擇操作

從起始位置,您可以選擇向右還是向下。我們有一個大的epsilon率(因為我們對環境一無所知),採用隨機選擇的方式。例如......向右移動。

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

我們採用隨機移動(例如,右)

發現了一塊乳酪(+1),則更新的Q值並記錄向右的行動。通過Bellman方程來進行計算。

步驟4-5:更新Q函數

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

  • 首先,計算Q值的變化ΔQ(start, right)

  • 然後將Q值與ΔQ(start, right)的和乘以學習率。

學習率可以看視為該學習網路更新Q值的速度。如果學習率為1,則新估計值將是新的Q值。

深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)

更新後的Q表

好!我們剛剛更新了我們的第一個Q值。現在我們需要一次又一次地這樣做,直到學習停止。

實現Q學習演算法

我們製作了一個視頻,我們實現了一個學習與Numpy一起玩Taxi-v2的Q學習代理。

使用numpy和OpenAI Taxi-v2進行Q學習(教程)

現在我們知道Q-Learning是如何工作的,我們將逐步實現Q學習演算法。代碼的每個部分在下面的Jupyter筆記本中都能找到。

您可以在Deep Reinforcement Learning Course repo中訪問它 。

或者您可以直接在Google Colaboratory上訪問它:

Q-learning實現Frozen Lake

colab.research.google.com

回顧......
  • Q-learning是一種基於數值的強化學習演算法,用於使用q函數找到最優的動作選擇策略。

  • 它根據動作值函數評估要採取的動作,該動作值函數確定處於某種狀態的值並在該狀態下採取某種動作。

  • 目標:最大化Q函數(給定狀態和行動的預期未來獎勵)。

  • Q表幫助我們找到每個狀態的最佳行動。

  • 通過選擇所有可能的最佳行動來最大化預期獎勵。

  • Q表示來自特定狀態下某個動作的質量。

  • 函數Q(state, action) → return該狀態下該動作的預期未來獎勵。

  • 可以使用Q學習來估計該函數,Q學習使用Bellman方程迭代地更新Q(s,a)

  • 在我們探索環境之前:Q表給出了相同的任意值進行初始化→但是當我們探索環境時→Q給了我們更好的近似值。

就這樣!不要忘記自己實現代碼的每個部分 - 嘗試修改我給你的代碼非常重要。

嘗試添加epoch,改變學習速度,並使用更複雜的環境(例如使用8x8瓷磚的Frozen-lake)。玩得開心!

下次我們將開展深度Q學習,這是2015年深度強化學習的最大突破之一。我們將訓練一個智能體玩Doom,並殺掉敵人!

想要繼續查看該篇文章相關鏈接和參考文獻?

長按鏈接點擊打開或點擊底部【深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)】:

https://ai.yanxishe.com/page/TextTranslation/1394

AI研習社每日更新精彩內容,觀看更多精彩內容:雷鋒網雷鋒網雷鋒網

【點擊跳轉】深度強化學習從入門到大師:簡介篇(第一部分)

用PyTorch來做物體檢測和追蹤用 Python 做機器學習不得不收藏的重要庫初學者怎樣使用Keras進行遷移學習一文帶你讀懂 WaveNet:谷歌助手的聲音合成器

等你來譯:

強化學習:通往基於情感的行為系統如何用Keras來構建LSTM模型,並且調參高級DQNs:利用深度強化學習玩吃豆人遊戲用於深度強化學習的結構化控制網路 (ICML 論文講解)
喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

人工智慧的前沿領域路在何方 之江杯全球人工智慧大賽告訴你
捷豹路虎宣布明年大裁員;蘋果被控 iPhone 像素和尺寸造假;滴滴全員年終獎減半高管無獎

TAG:雷鋒網 |