1,q-learning與深度學習結合思路
q-table存在乙個問題,真實情況的state可能無窮多,這樣q-table就會無限大,解決這個問題的辦法是通過神經網路實現q-table。輸入state,輸出不同action的q-value。
q-learning與神經網路結合使用就是 deep q-network,簡稱 dqn。在現實中,狀態的數量極多,並且需要人工去設計特徵(狀態的特徵),而且一旦特徵設計不好,則得不到想要的結果。
神經網路正是能處理解決這個問題(狀態數量太多,且狀態特徵難以設計),取代原來 q 表的功能。
當神經網路與q-learning結合使用的時候,又會碰到幾個問題:
增強學習是試錯學習(trail-and-error),由於沒有直接的指導資訊,智慧型體要以不斷與環境進行互動,通過試錯的方式來獲得最佳策略。
q-learning正是其中的一種,所以q值表中表示的是當前已學習到的經驗。而根據公式計算出的 q 值是智慧型體通過與環境互動及自身的經驗總結得到的乙個分數(即:目標 q 值)。
最後使用目標 q 值(target_q)去更新原來舊的 q 值(q)。
而目標 q 值與舊的 q 值的對應關係,正好是監督學習神經網路中結果值與輸出值的對應關係。
所以,loss = (target_q - q)^2
即:整個訓練過程其實就是 q 值(q)向目標 q 值(target_q)逼近的過程。
在 dqn 中有 experience replay 的概念,就是經驗回放。
就是先讓智慧型體去探索環境,將經驗(記憶)池累積到一定程度,在隨機抽取出一批樣本進行訓練。
為什麼要隨機抽取?因為智慧型體去探索環境時採集到的樣本是乙個時間序列,樣本之間具有連續性,如果每次得到樣本就更新q值,受樣本分佈影響,會對收斂造成影響。
強化學習由於state之間的相關性存在穩定性的問題,解決的辦法是在訓練的時候儲存當前訓練的狀態到記憶體mm,更新引數的時候隨機從mm中抽樣mini-batch進行更新。
具體地,mm中儲存的資料型別為 ,mm有最大長度的限制,以保證更新採用的資料都是最近的資料。
exploitation:隨著訓練的加深,逐漸降低隨機性,也就是降低隨機action出現的概率。
2,模擬流程
1.隨機初始化乙個狀態 s,初始化記憶池,設定觀察值。
2.迴圈遍歷(是永久遍歷還是只遍歷一定次數這個自己設定):
(1)根據策略選擇乙個行為(a)。
(2)執行該行動(a),得到獎勵(r)、執行該行為後的狀態 s`和遊戲是否結束 done。
(3)儲存 s, a, r, s`, done 到記憶池裡。
(4)判斷記憶池裡的資料是否足夠(即:記憶池裡的資料數量是否超過設定的觀察值),如果不夠,則轉到(5)步。
① 在記憶池裡隨機抽取出一部分資料做為訓練樣本。
② 將所有訓練樣本的 s`做為神經網路的輸入值,進行批量處理,得到 s`狀態下每個行為的 q 值的表。
③ 根據公式計算出 q 值表對應的 target_q 值表。
公式:q(s, a) = r + gamma * max[q(s`, all actions)]
④ 使用 q 與 target_q 訓練神經網路。
(5)判斷遊戲是否結束。
① 遊戲結束,給 s 隨機設定乙個狀態,再執行(1),(2),(3),(4)。
① 未結束,則當前狀態 s 更新為 s`(意思就是當前的狀態變成 s`,以當前的 s`去action,得到r,得到執行該行為後的狀態 s`和遊戲是否結束 done)。
增強學習(強化學習)算例之Q learning
我認為本文是學習率為1的q learning。為什麼這麼講呢?根據q learning演算法 程式設計師們有些什麼好玩兒的程式分享?嶽大禹的回答 看到這道題題主希望用簡單的例子介紹q learning,於是就想通過小鳥的例子,介紹一下q learning的過程。提到q learning,我們需要先了...
q learning 學習總結
總結q learning 學習的位址 q learning 是一種行為計算的方法。首先,所有的行為和這行為的後果已經確定下來,向一般在網上舉的例子會用簡單的迷宮做過程的講解,現實中比較合適的例子是下棋,因為下棋的步驟行為比較多。方法是運用兩個矩陣做計算 第乙個是獎勵矩陣r,這個狀態矩陣y軸代表當前位...
Q learning例項二維
探索者學會走迷宮.黃色的是天堂 reward 1 黑色的地獄 reward 1 整個演算法就是一直不斷更新 q table 裡的值,然後再根據新的值來判斷要在某個 state 採取怎樣的 action.qlearning 是乙個 off policy 的演算法,因為裡面的 max action 讓 ...