日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Q学习(Q-learning)入门小例子及python实现(Meaning)

發布時間:2023/12/15 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 Q学习(Q-learning)入门小例子及python实现(Meaning) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、從馬爾科夫過程到Q學習

# 有一定基礎的讀者可以直接看第二部分

Q學習(Q-learning)算法是一種與模型無關的強化學習算法,以馬爾科夫決策過程(Markov Decision Processes, MDPs)為理論基礎。

標準的馬爾科夫決策過程可以用一個五元組<S,A,P,R,γ>表示,其中:

  • S是一個離散有界的狀態空間;
  • A是一個離散的動作空間;
  • P為狀態轉移概率函數,表示agent在狀態s下選取動作a后轉移到a’的概率;
  • R為回報函數,用于計算agent由當前狀態 選取動作 后轉移到下一狀態 得到的立即回報值,由當前狀態和選取的動作決定,體現了馬爾科夫性的特點;
  • γ是折扣因子,用于確定延遲回報與立即回報的相對比例, 越大表明延遲回報的重要程度越高。

馬爾科夫決策問題的目標是找到一個策略 ,使其回報函數 的長期累積值的數學期望

最大。其中,策略π只和狀態相關,與時間無關(靜態的)。 是t時刻的環境狀態, 是t時刻選擇的動作。

根據Bellman最優準則,得到最優策略 對應的最優指標為:

其中,R(s,a)為r(st,at)的數學期望, 為在狀態s下選取動作a后轉移到下一狀態狀態s’的概率。由于某些環境中狀態之間的轉移概率P不容易獲得,直接學習 是很困難的,而Q學習不需要獲取轉移概率P,因而可用來解決此類具有馬爾科夫性的問題。

Q學習是一種與環境無關的算法,是一種基于數值迭代的動態規劃方法。定義一個Q函數作為評估函數:

評估函數Q(s,a)的函數值是從狀態s開始選擇第一個動作a執行后獲得的最大累積回報的折算值,通俗地說,Q值等于立即回報值r(s,a) 加上遵循最優策略的折算值,此時的最優策略可改寫為:

該策略表達式的意義在于:如果agent用Q函數代替 函數,就可以不考慮轉移概率P,只考慮當前狀態s的所有可供選擇的動作a,并從中選出使Q(s,a)最大的動作,即agent對當前狀態的部分Q值做出多次反應,便可以選出動作序列,使全局最優化。

在Q學習中,agent由初始狀態轉移到目標狀態的過程稱為“Episode”,即“場景”。Q函數可以表示為以下的迭代形式進行Q矩陣的更新:

在每一步的迭代中,上式又可寫為:

Q矩陣(st,at)位置元素的值等于回報函數R的相應值加上折扣因子γ乘以轉換到下一個狀態后最大的Q值。

上述的Q學習算法可以看出,當劃分的狀態有限時,每一場景開始時隨機選擇的初始狀態s在算法的指導下探索環境,最終一定可以到達目標狀態s*,回報函數R(s,a)是有界的,并且動作的選擇能夠使每個狀態映射到動作對的訪問是無限頻率,則整個學習過程就能夠訓練出來。

Q學習通過對環境的不斷探索,積累歷史經驗,agent通過不斷試錯來強化自身,最終可以達到自主選擇最優動作的目標,即不論出于何種狀態,都可給出到達目標狀態的最優選擇路徑,該算法中環境和動作相互影響,動作的選擇影響環境狀態,環境也可以通過強化回報函數 來反饋動作的優劣性,影響動作的選擇。

參考文獻:

[1]汪黎明.制造企業零庫存管理物資調度方法研究[J].價值工程, 2019,38(23):126-129.

二、由一個廣為流傳的小例子了解Q學習的算法邏輯

一個由門連接的建筑物中有五個房間,如下圖所示,分別用0-4號標識,將外界看作一個大房間,同樣標識為5。

每個房間代表一個節點,門代表連線,可以將上圖抽象為下面這樣:

agent會被隨機放置在任意一個房間里,然后從那個房間出發,一直走到建筑外(即5號房間為目標房間)。門是雙向的,所以相鄰節點間是雙向箭頭連接。通過門可以立即得到獎勵值100,通過其他門獎勵值為0。將所有箭頭標注獎勵值如下圖:

在Q學習中,目標是達到獎勵最高的狀態,所以如果agent到達目標,它將永遠在那里。 這種類型的目標被稱為“吸收目標”。

想象一下,我們的agent是一個想象的虛擬機器人,可以通過經驗學習。 agent可以從一個房間轉移到另一個房間,但它沒有上帝視角,也不知道哪一扇門通向外面。

按照第一部分Q學習的理論,我們把每個房間抽象為一個狀態,選擇進入哪號房間作為動作,把狀態圖和即時獎勵值放到下面的獎勵值表“回報矩陣R”中:(-1表示不可選擇的動作,兩個狀態間沒有連接)

現在我們將添加一個類似的矩陣“Q”給我們agent的大腦,代表了通過經驗學到的東西的記憶。 矩陣Q的行表示agent的當前狀態,列表示導致下一個狀態的可能動作(節點之間的連線)。

agent開始什么都不知道,矩陣Q被初始化為零。 在這個例子中,為了解釋簡單,我們假設狀態的數目是已知的(六個,0-5)。 如果我們不知道涉及多少個狀態,矩陣Q可能從只有一個元素開始。 如果找到新的狀態,則在矩陣Q中添加更多的列和行是一項簡單的任務。

Q學習的更新規則如下:

根據這個公式,分配給矩陣Q的特定元素的值等于矩陣R中相應值加上學習參數γ乘以下一狀態下所有可能動作的Q的最大值。

每一場景的探索都會為agent增加經驗,Q矩陣得到更新。訓練的基本思路如下圖:

基于算法思想,訓練Q矩陣的具體流程如下:

步驟1.初始化倉庫環境和算法參數(最大訓練周期數,每一場景即為一個周期,折扣因子γ,即時回報函數R和評估矩陣Q。)。

步驟2.隨機選擇一個初始狀態s,若s=s*,則結束此場景,重新選擇初始狀態。

步驟3.在當前狀態s的所有可能動作中隨機選擇一個動作a,選擇每一動作的概率相等。

步驟4.當前狀態s選取動作a后到達狀態s’

步驟5.使用公式對Q矩陣進行更新。

步驟6.設置下一狀態為當前狀態,s=s‘。若s未達到目標狀態,則轉步驟3。

步驟7.如果算法未達到最大訓練周期數,轉步驟2進入下一場景。否則結束訓練,此時得到訓練完畢的收斂Q矩陣。

上面的流程是給agent用來學習經驗的。 每一場景都相當于一個培訓課程。 在每個培訓課程中, agent將探索環境 (由矩陣R表示), 接收獎勵 (如果有), 直到達到目標狀態。訓練的目的是提高我們的agent的 “大腦”(矩陣 Q)。 場景越多,Q矩陣越優化。 在這種情況下, 如果矩陣 Q 得到了增強,四處探索時并不會在同一個房間進進出出, agent將找到最快的路線到達目標狀態。

參數γ的范圍為0到1(0 <= γ<1)。 如果γ接近零,agent將傾向于只考慮立即得到獎勵值。 如果γ更接近1,那么agent將會考慮更多的權重,愿意延遲得到獎勵。

我們使用Python為訓練agent編寫代碼:

import numpy as np
import random

# 初始化矩陣
Q = np.zeros((6, 6))
Q = np.matrix(Q)

# 回報矩陣R
R = np.matrix([[-1,-1,-1,-1,0,-1],[-1,-1,-1,0,-1,100],[-1,-1,-1,0,-1,-1],[-1,0,0,-1,0,-1],[0,-1,-1,0,-1,100],[-1,0,-1,-1,0,100]])

# 設立學習參數
γ = 0.8

# 訓練
for i in range(2000):
    # 對每一個訓練,隨機選擇一種狀態
    state = random.randint(0, 5)
    while True:
        # 選擇當前狀態下的所有可能動作
        r_pos_action = []
        for action in range(6):
            if R[state, action] >= 0:
                r_pos_action.append(action)
        next_state = r_pos_action[random.randint(0, len(r_pos_action) - 1)]
        Q[state, next_state] = R[state, next_state] + γ *(Q[next_state]).max()  #更新
        state = next_state
        # 狀態4位最優庫存狀態
        if state==5:
            break
print(Q)

運行結果為:

這個矩陣Q可以通過將所有的非零條目除以最高的數字(在這種情況下為500)來歸一化(即轉換為百分比):

一旦矩陣Q足夠接近收斂狀態,我們知道我們的agent已經學習了任意狀態到達目標狀態的最佳路徑。

例如:

從初始狀態2開始,agent可以使用矩陣Q作為指導,從狀態2開始,最大Q值表示選擇進入狀態3的動作。

從狀態3開始,最大Q值表示有兩種并列最優選擇:進入狀態1或4。假設我們任意選擇去1。

從狀態1開始,最大Q值表示選擇進入狀態5的動作。

因此,最優策略是2 – 3 – 1 – 5。

同時,若狀態3時選擇進入狀態4,最優策略為2-3-4-5。

兩種策略的累計回報值相等,故從狀態2到5有兩種最優策略。

# 例子較為簡單,讀者可以根據流程圖和步驟解釋手算以便加深印象。

總結

以上是生活随笔為你收集整理的Q学习(Q-learning)入门小例子及python实现(Meaning)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。