Q-Learning算法簡明教程


聲明

本文轉載自:https://blog.csdn.net/itplus/article/details/9361915

此處僅作學習記錄作用。這篇教程通俗易懂,是一份很不錯的學習理解Q-learning算法工作原理的材料。

 

以下為正文:

1.1 Step-by-Step Tutorial

  本教程將通過一個簡單但又綜合全面的例子來介紹Q-learning算法。該例子描述了一個利用無監督訓練來學習位置環境的agent。

  假設一幢建築里面有5個房間,房間之間通過門相連(如圖1所示)。我們將這五個房間按照從0至4進行編號,且建築的外圍可認為是一個大的房間,編號為5。

 

  上圖的房間也可以通過一個圖來表示,房間作為圖的節點,兩個房間若有門相連,則相應節點間對應一條邊,如圖2所示。

 

  對於這個例子,我們首先將agent置於建築中的任意一個房間,然后從那個房間開始,讓其走到建築外,那是我們的目標房間(即編號為5的房間)。為了將編號為5的房間設置為目標,我們為每一扇門(即相應的邊)關聯一個reward值:直接連接到目標房間的門的reward值為100,其他門的reward值為0。因為每一扇門都有兩個方向(如由0號房間可以去4號房間,而由4號房間也可以返回0號房間),因此每一個房間上指定兩個箭頭(一個指進一個指出),且每個箭頭上帶有一個reward值(如圖3所示)

 

 

 

   注意,編號為5的房間有一個指向自己的箭頭,其reward值為100,其他直接指向目標房間的邊的reward值也為100。Q-learning的目標是達到reward值最大的state,因此,當agent到達目標房間后將永遠停留在那里。這種目標也稱為“吸收目標”。

  想象一下,我們的agent是一個可以通過經驗進行學習的“啞巴虛擬機器人”,它可以從一個房間走到另一個房間,但是,它不知道周邊的環境,也不知道怎么走到建築的外面去。

  下面我們想對agent從建築里的任意房間的簡單撤離進行建模。假定現在agent位於2號房間,我們希望agent通過學習到達5號房間。

 

  Q-Learning算法中有兩個重要術語:“狀態(state)”和“行為(action)”。

  我們將每一房間(包括5號房間)稱為一個“狀態”,將agent從一個房間走到另外一個房間稱為一個“行為”。在圖2中,一個“狀態”對應一個節點,而一種“行為”對應一個箭頭。

 

  假設agent當前處於狀態2。從狀態2,它可以轉至狀態3(因為狀態2到狀態3有邊相連)。但從狀態2不能轉至狀態1(因為狀態2到狀態1沒邊相連)。類似地,我們還有

  • 從狀態3,它可以轉至狀態1和4,也可以轉回至狀態2.
  • 從狀態4,它可以轉至狀態0,5和3.
  • 從狀態1,它可以轉至狀態5和3.
  • 從狀態0,它只能轉至狀態4.

  我們可以以狀態為行,行為為列,構建一個如圖6所示的關於reward值的矩陣R,其中得-1表示空值(相應節點之間沒有邊相連)。

 

  類似地,我們也可以構建一個矩陣Q,它用來表示agent已經從經驗中學到的知識。矩陣Q與R是同階,其行為表示狀態,列表示行為。

  由於剛開始時agent對外界環境一無所知,因此矩陣Q應初始化零矩陣。為簡單起見,在本例中我們假設狀態的數目是已知的(等於6)。對於狀態數目未知的情形,我們可以讓Q從一個元素出發,每次發現一個新的狀態時就可以在Q中增加相應的行列。

  Q-learning算法的轉移規則比較簡單,如下式所示:

 

 

其中s, a表示當前的狀態和行為,~s, ~a表示s的下一個狀態及行為,學習參數γ為滿足0≤γ<1的常數。

  在沒有老師的情況下,我們的agent將通過經驗進行學習(也稱為無監督學習)。它不斷從一個狀態轉至另一個狀態進行探索,直到到達目標。當agent達到目標狀態后,一個episode即結束,接着進入另一個episode。

  下面給出整個Q-learning算法的計算步驟。

算法1.1(Q-learning算法)

Step 1 給定參數γ和reward矩陣R。

Step 2 令Q := 0。 # 將表格Q初始化為0

Step 3 For each episode:

  3.1 隨機選擇一個初始的狀態s。

  3.2 若未達到目標狀態,則執行以下幾步

    (1) 在當前狀態s的所有行為中選取一個行為a.

    (2) 利用選定的行為a, 得到下一個狀態~s.

    (3) 按照(1.1)計算Q(s, a)

    (4) 令s := ~s

  Agent利用上述算法從經驗中進行學習。每一個episode相當於training session。在一個training session中,agent探索外界環境,並接收外界環境的reward, 直到達到目標狀態。訓練的目的是要強化agent的“大腦”(用Q表示)。訓練得越多,則Q被優化得更好。當矩陣Q被訓練強化后,agent便很容易找到目標狀態得最快路徑了。

  公式(1.1)中的γ滿足0≤γ<1. γ趨向與0表示主要考慮immediate reward, 而γ趨向於1表示agent將同時考慮future rewards.

  利用訓練好的矩陣Q,我們可以很容易地找出一條從任意狀態S0出發達到目標狀態的行為路徑,具體步驟如下:

  

 

 

1.2 Q-Learning Example By Hand

  為進一步理解上一節介紹的Q-Learning 算法是如何工作的,下面我們一步一步地迭代幾個episode。

  首先取學習參數γ=0.8,初始狀態為房間1,並將Q初始化為一個零矩陣。

 

  觀察矩陣R的第二行(對應房間1或狀態1),它包含兩個非負值,即當前狀態1的下一步行為有兩種可能:轉至狀態3或轉至狀態5.隨機地,我們選取轉至狀態5

 

 

   想象一下,當我們的agent位於狀態5以后,會發生什么事呢?觀察矩陣R的第6行(對應狀態5),它對應三個可能的行為:轉至狀態1,4或5.根據公式(1.1),我們有

 

  現在狀態5變成了當前狀態。因為狀態5即目標狀態,故一次episode便完成了,至此,agent的“大腦”中的Q矩陣刷新為

 

  接下來,進行下一次episode的迭代,首先隨機地選取一個初始狀態,這次我們選取狀態3作為初始狀態。

  觀察矩陣R的第四行(對應狀態3),它對應三個可能的行為:轉至狀態1,2或4.隨機地,我們選取轉至狀態1.因此觀察矩陣R的第二行(對應狀態1)。它對應兩個可能的行為:轉至狀態3或5.根據公式(1.1),我們有

 

注意到上式中的Q(1,5)用到了圖9中的刷新值。此時,矩陣Q變為

 

 

   現在狀態1變成了當前狀態。因為狀態1還不是目標狀態,因此我們需要繼續往前探索。狀態1對應三個可能的行為:轉至狀態3或5.不妨假定我們幸運地選擇了狀態5.

 

   此時,同前面的分析一樣,狀態5有三個可能的行為:轉至狀態1,4或5.根據公式(1.1),我們有

 注意,經過上一步刷新,矩陣Q並沒有發生變化。

  因為狀態5即為目標狀態,故這一次episode便完成了,至此,agent的“大腦”中的Q矩陣刷新為

 

  若我們繼續執行更多的episode,矩陣Q將最終收斂成

 

  對其進行規范化,每個非零元素都除以矩陣Q的最大元素(這里為500),可得(這里省略了百分號)

 

  一旦矩陣Q足夠接近於收斂狀態,我們的agent便學習到了轉至至目標狀態的最佳路徑。只需按照上一節結尾時介紹的步驟,即可找到最優路徑(如圖15所示)。

 

  例如,從2為初始狀態,利用Q,可得

  • 從狀態2,最大Q元素指向狀態3;
  • 從狀態3,最大Q元素指向狀態1或4(這里假設我們隨機地選擇了1);
  • 從狀態1,最大Q元素指向狀態5,

  因此最佳路徑的序列為2-3-1-5.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM