Q-Learning演算法:學習動作值函式(Action Value Function)
學習動作值函式(也稱Q函式)有兩個輸入值,分別為“state”和“action”。它將返回在該狀態下(state)執行該動作(action)後的預期未來獎勵。
我們可以認為,Q函式即是一個在Q-table上滾動的讀取器,我們可以用它來尋找與當前狀態(state)關聯的行,以及與我們的動作(action)相關聯的列。它會從相匹配的單元格中返回Q值,該值便是“預期未來獎勵”。
在我們探索這個環境(environment)之前,Q-table會給出同一個任意固定值(多數為0)。隨著我們對環境的探索,Q-table將會利用貝爾曼方程迭代更新Q(s,a)以給出一個更好的近似值(見下文!)。
Q-Learning演算法流程
Step 1:初始化Q值
建立一個Q-table,橫軸為m(動作值),縱軸為n(狀態值)。初始值為0。
Step 2: 終身學習
重複步驟3-5,直到達到episode的最大值(由使用者指定),或者手動停止訓練。
Step 3:選擇一個動作(action)
基於當前Q值估計得出的狀態s下選擇一個動作a。
但是……如果每個Q值都等於0,那麼我們一開始應該選擇什麼動作呢?
在這裡,我們就可以瞭解年前那篇文章裡所提及的exploration/exploitation tradeoff的重要性了。
思路就是,在一開始,我們就採取epsilon貪婪策略。
1)指定探索速率epsilon,從1設定起,作為我們隨機採取的步長。一開始,這個速率應該處於最大值,因為我們並不知道Q-table中的任何一個值。這也就意味著,我們要透過隨機選擇動作做出更多的exploration(探索)。
2)生成隨機數。如果該數大於epsilon值,那麼我們就開始“exploitation”(這也就意味著,我們利用的已知資訊來選擇每一步的最佳動作)。否則,我們就開始“exploration”。
Step-4-5: 評估(Evaluate)
實施動作a,觀察結果狀態s’和獎勵r。現在,更新函式Q(s,a)。
實施步驟3中選擇的動作a,得到一個新的狀態 s’和獎勵r(正如我們在強化學習流程中看到的)。
然後,利用貝爾曼方程式更新Q(s,a),
如下方程式碼所示,更新 Q(state,action)
舉個例子:
一個芝士=+1
兩個芝士=+2
大堆芝士=+10(本輪結束)
老鼠藥=-10(本輪結束)
Step 1:啟動Q-table
初始化Q-table
Step 2: 選擇一個動作(action)
在起點時,你可以選擇向右或是向上。因為epsilon速率比較大(即使我們對環境並不瞭解),所以選擇隨機。比如說……向右走。
隨機移動(比如說,向右)
我們發現了一塊芝士(+1),那麼現在我們可以更新最初的Q值並且向右移動。如何實現這一行徑呢?貝爾曼方程式可以做到。
Step 4-5:更新Q函式
1)首先,計算Q值ΔQ的變化(開始,向右)
2)然後,將初始化Q值與ΔQ(開始,向右)和學習率的積相加。
透過學習率,我們可以知道,網路在生成新值時,是有多麼快地遺棄舊值。如果學習率是1,那麼新的預估值就是新的Q值。
更新後的Q-table
至此,我們已經完成更新了初始Q值,現在,我們需要反覆操作,直到停止學習
實施Q-Learning演算法
詳見影片:
https://www。zhihu。com/video/1079019492809629696
影片來源:
https://
youtu。be/q2ZOEFAaaI0
大家好,我是AI搬運工
致力於將國外的AI好文,翻譯成大家都懂的中國話!
本文屬於AI搬運工自行翻譯,如有錯誤,歡迎指正!
原文來源:Diving Deeper into Reinforcement Learning with Q-learning
喜歡就點個贊哦~
我會持續更新噠
近期文章回顧:
透過 Q-learning 深入理解強化學習(下)
用有趣的文字,教你強化學習入門知識(下)
用有趣的文字,教你強化學習入門知識(上)
如何辨別哪些是人工智慧生成的虛假影象?
機器學習之透過開發集和評價指標加速迭代
機器學習之最佳化指標和滿意度指標