一文帶你理解Q-Learning的搜索策略,掌握強化學習最常用算法

2021-01-07 騰訊網

王小新 編譯自 Medium

量子位 出品 | 公眾號 QbitAI

Q-Learning是強化學習中最常用的算法之一。

Medium上有篇文章,討論了這種算法的一個重要部分:搜索策略。

量子位搬運過來,以下為博客譯文:

我們先介紹下有關概念和符號。

強化學習

強化學習(Reinforcement Learning, RL)屬於機器學習的一個分支,利用智能體(agent)通過狀態感知、選擇動作和接收獎勵來與環境互動。每一步中,智能體都會通過觀察環境狀態,選擇並執行一個動作,來改變其狀態並獲得獎勵。

馬爾可夫決策過程

在傳統環境中,馬爾可夫決策過程(Markov Decision Processes, MDP)可以解決不少RL問題。這裡,我們不會深入討論MDP的理論,有關MDP算法的更多內容可參考:

https://en.wikipedia.org/wiki/Markov_decision_process

我們用森林火災來解釋下MDP算法,代碼實現可使用python MDP Toolbox:

http://pymdptoolbox.readthedocs.io/en/latest/api/example.html

森林管理包括兩個動作,等待和砍伐。每年要做出一個決定,一是為林中動物保持古老森林,二是砍伐木材來而賺錢。而且,每年有p概率發生森林火災,有1-p的概率為森林生長。

先定義MDP算法中一些參數S、A、P、R和γ,其中:

S是狀態空間(有限),包括3種不同年齡樹木,年齡級分別為0-20年、21-40年和40年以上;

A是動作空間(有限),即等待或砍伐;

P和R分別是轉移矩陣和獎勵矩陣,很容易寫出它的閉合形式;

γ是數值在0與1之間的貼現因子,用來平衡短時和未來獎勵的關係;

策略π是當前狀態下決策的靜態分布;

該模型的目標是在未給出MDP動態知識的情況下找到一個最優策略π*。

要注意,如果具有這個動態知識,直接用最優值迭代方法就能找到最優策略。

獎勵變化曲線

最優策略是等到森林處於古老且茂盛的狀態時進行砍伐,這容易理解,因為在森林處於最古老的狀態時砍伐的獎勵是等待讓森林生長的獎勵的5倍,有r1=10,r2=50。

Q-Learning算法

Q-Learning算法中的「Q」代表著策略π的質量函數(Quality function),該函數能在觀察狀態s確定動作a後,把每個狀態動作對 (s, a) 與總期望的折扣未來獎勵進行映射。

Q-Learning算法屬於model-free型,這意味著它不會對MDP動態知識進行建模,而是直接估計每個狀態下每個動作的Q值。然後,通過在每個狀態下選擇具有最高Q值的動作,來繪製相應的策略。

如果智能體不斷地訪問所有狀態動作對,則Q-Learning算法會收斂到最優Q函數[1]。

有關Q-Learning的其他細節,這裡不再介紹,更多內容可觀看Siraj Raval的解釋視頻。

視頻1

下面我們給出關於Q-Learning算法的Python實現。

要注意,這裡的學習率α是w=4/5時的多項式,這裡使用了引用[3]的結果。

這裡使用的ε-greedy搜索策略,後面會詳細介紹。

獎勵變化曲線

探索與利用的平衡

序列學習算法會涉及到一個基本選擇:

利用:根據當前信息做出最佳決策;

探索:做出其他決策來收集更多信息。

合理平衡好探索和利用的關係,對智能體的學習能力有重大影響。過多的探索會阻礙智能體最大限度地獲得短期獎勵,因為選擇繼續探索可能獲得較低的環境獎勵。另一方面,由於選擇的利用動作可能不是最優的,因此靠不完全知識來利用環境會阻礙長期獎勵的最大化。

ε-greedy搜索策略

該策略在每一步利用概率ε來選擇隨機動作。

這可能是最常用也是最簡單的搜索策略,即用ε調整探索動作。在許多實現中,ε會隨著時間不斷衰減,但也有不少情況,ε會被設置為常數。

不確定優先搜索策略

不確定優先(Optimism in Face of Uncertainty)搜索策略,最開始被用來解決隨機式多臂賭博機問題(Stochastic Multi-Armed Bandit),這是一個很經典的決策問題,賭徒要轉動一個擁有n個槽的老虎機,轉動每個槽都有固定回報概率,目標是找到回報概率最高的槽並且不斷地選擇它來獲取最高的回報。

賭徒面臨著利用還是探索的問題,利用機器獲得最高的平均獎勵或探索其他未玩過的機器,以期望獲得更高的獎勵。

這個問題與Q-Learning算法中的探索問題非常相似:

利用:在給定狀態下選擇具有最高Q值的動作;

探索:做出其他決策來探索更多信息,通過選擇不了解或不夠了解的環境。

不確定優先狀態:只要我們對某個槽的回報不確定時不確定手臂的結果,我們就會考慮當前環境來選擇最佳的手臂。

不確定優先算法有兩方面:

若當前處於最佳環境,那算法會直接選擇最佳的手臂;

若當前不處於最佳環境,則算法會儘量降低不確定性。

置信區間上界(Upper Confidence Bound, UCB)是一種常用的不確定優先算法[2],我們把它結合到Q-Learning方法中,有:

Q(s, a):狀態s下動作a縮放後的Q值;

N(t,s,a):在時刻t和狀態s下動作a被選擇的次數。

此時,智能體的目標為Argmax,這意味著在狀態s中選擇具有最高Q值的動作。但是在t時刻Q(s,a)值是未知的。

在t時刻,Q估計值為Q(t, s, a),則有Q(s,a) =+ (Q(s,a) −)。

(Q(s,a) −)為相應誤差項。

霍夫不等式(Hoeffding’s inequality)可用來處理這類誤差。事實上,當t變化時,有:

優先策略可寫成:Argmax,且有:

當β大於0時,執行探索動作;當β為0時,僅利用已有估計。

這種界限方法是目前最常用的,基於這種界限後面也有許多改進工作,包括UCB-V,UCB*,KL-UCB,Bayes-UCB和BESA[4]等。

下面給出經典UCB算法的Python實現,及其在Q-Learning上的應用效果。

獎勵變化曲線

UCB搜索算法應該能很快地獲得高額獎勵,但是前期搜索對訓練過程的影響較大,有希望用來解決更複雜的多臂賭博機問題,因為這種方法能幫助智能體跳出局部最優值。

下面是兩種策略的對比圖。

總結與展望

Q-Learning是強化學習中最常用的算法之一。在這篇文章中,我們討論了搜索策略的重要性和如何用UCB搜索策略來替代經典的ε-greedy搜索算法。

更多更細緻的優先策略可以被用到Q-Learning算法中,以平衡好利用和探索的關係。

參考文獻

[1]T. Jaakkola, M. I. Jordan, and S. P. Singh, 「On the convergence of stochastic iterative dynamic programming algorithms」 Neural computation, vol. 6, no. 6, pp. 1185–1201, 1994.

[2]P. Auer, 「Using Confidence Bounds for Exploitation-Exploration Trade-offs」, Journal of Machine Learning Research 3 397–422, 2002.

[3]E. Even-Dar, and Y. Mansour, 「Learning Rates for Q-learning」, Journal of Machine Learning Research 5 1–25, 2003.

[4]A. Baransi, O.-A. Maillard, and S. Mannor, 「Sub-sampling for multi-armed bandits」, Joint European Conference on Machine Learning and Knowledge Discovery in Databases, 115–131, 2014.

原文:https://medium.com/sequential-learning/optimistic-q-learning-b9304d079e11

加入社群

量子位AI社群17群開始招募啦,歡迎對AI感興趣的同學,加小助手微信qbitbot7入群;

此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。

進群請加小助手微信號qbitbot7,並務必備註相應群的關鍵詞~通過審核後我們將邀請進群。(專業群審核較嚴,敬請諒解)

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。

相關焦點

  • 入門 | 走近流行強化學習算法:最優Q-Learning
    我們將在本文中討論該算法的一個重要部分:探索策略。但是在開始具體討論之前,讓我們從一些入門概念開始吧。強化學習(RL)強化學習是機器學習的一個重要領域,其中智能體通過對狀態的感知、對行動的選擇以及接受獎勵和環境相連接。在每一步,智能體都要觀察狀態、選擇並執行一個行動,這會改變它的狀態並產生一個獎勵。
  • 入門 | 從Q學習到DDPG,一文簡述多種強化學習算法
    雖然已經有大量的強化學習算法,但似乎並沒有什麼文章對它們進行全面比較。每次需要決定將哪些算法應用於特定的任務時,都讓我很糾結。本文旨在通過簡要討論強化學習的設置來解決這個問題,並簡要介紹一些眾所周知的算法。1.
  • 入門 | 通過 Q-learning 深入理解強化學習
    選自Medium作者:Thomas Simonini機器之心編譯參與:Geek AI、劉曉坤本文將帶你學習經典強化學習算法在這篇文章中,你將學到:(1)Q-learning 的概念解釋和算法詳解;(2)通過 Numpy 實現 Q-learning。
  • 通過Q-learning 深入理解強化學習
    作者:Thomas Simonini   機器之心編譯   參與:Geek AI、劉曉坤   本文將帶你學習經典強化學習算法   為了學習到 Q-table 中的每個值,我們將使用 Q-learning 算法。   Q-learning 算法:學習動作值函數(action value function)   動作值函數(或稱「Q 函數」)有兩個輸入:「狀態」和「動作」。
  • 深度學習第56講:強化學習簡介與Q-Learning實例
    強化學習簡介     強化學習是一種關於序列決策的工具,在許多領域都有研究,例如博弈論、控制論、運籌學、資訊理論、仿真優化、多主體系統學習、群體智能、統計學以及遺傳算法等領域。具體而言就是描述決策主體如何基於環境而行動以獲取收益最大化的問題。強化學習一個最著名的例子就是此前擊敗李世石和柯潔的 ALPHAGo,其實現下棋並戰勝人類的背後原理技術就是深度強化學習。
  • 強化學習系列案例 | 利用Q-learning求解懸崖尋路問題
    快速獲取案例方式:數據酷客公眾號內發送「強化學習」。❞懸崖尋路問題(CliffWalking)是強化學習的經典問題之一,智能體最初在一個網格的左下角中,終點位於右下角的位置,通過上下左右移動到達終點,當智能體到達終點時遊戲結束,但是空間中存在「懸崖」,若智能體進入「懸崖」則返回起點,遊戲重新開始。
  • 通過Q-learning 深入理解強化學習 - 機器之心Pro
    本文將帶你學習經典強化學習算法 Q-learning 的相關知識。在這篇文章中,你將學到:(1)Q-learning 的概念解釋和算法詳解;(2)通過 Numpy 實現 Q-learning。為了學習到 Q-table 中的每個值,我們將使用 Q-learning 算法。Q-learning 算法:學習動作值函數(action value function)動作值函數(或稱「Q 函數」)有兩個輸入:「狀態」和「動作」。
  • Python手寫強化學習Q-learning算法玩井字棋
    Q-learning 是強化學習中的一種常見的算法,近年來由於深度學習革命而取得了很大的成功。本教程不會解釋什麼是深度 Q-learning,但我們將通過 Q-learning 算法來使得代理學習如何玩 tic-tac-toe 遊戲。儘管它很簡單,但我們將看到它能產生非常好的效果。
  • 強化學習開篇:Q-Learning原理詳解
    ,特開此篇進行強化學習系列算法介紹。目錄1.強化學習是什麼強化學習並不是某一種特定的算法,而是一類算法的統稱,與有監督學習、無監督學習共稱為機器學習的三大分支。針對強化學習最有名的應用應該是近幾年的Alpha go,機器虛擬棋手首次戰勝了棋界高手(下圖即為對戰截圖)。
  • 【強化學習實戰】基於gym和tensorflow的強化學習算法實現
    1新智元推薦【新智元導讀】知乎專欄強化學習大講堂作者郭憲博士開講《強化學習從入門到進階》,我們為您節選了其中的第二節《基於gym和tensorflow的強化學習算法實現》,希望對您有所幫助。同時,由郭憲博士等擔任授課教師的深度強化學習國慶集訓營也將於 10 月 2 日— 6 日在北京舉辦。
  • 5分鐘讀懂強化學習之Q-learning
    由於在當下,你並不知道下一時刻的估值函數,所以你要做的是對其有一個儘可能準確的估算,這個估算被稱為Q value,對應的算法稱為Q-learning。如果你是用神經網絡得出對未來value的估算的,那你使用的算法框架就從強化學習變為了深度強化學習。
  • 一文簡述多種強化學習算法,重要概念和術語一覽
    本文簡要介紹了強化學習及其重要概念和術語,並著重介紹了 Q-Learning 算法、SARSA、DQN 和 DDPG 算法。大多數強化學習算法遵循這一模式。下面我將簡要介紹強化學習中的一些術語,以方便下一節的討論。
  • 「人工智慧研學社· 強化學習組」第二期:超越職業玩家的算法 - Deep Q-network
    它介紹了 Deep Q-Networks (DQN) 算法,並且在 49 個 Atari 遊戲上取得了很好的性能:基本都超越了以前的算法,大部分比職業玩家要好。這一算法的突出貢獻是,在 Q-learning 中引入了深度神經網絡,並且通過 experience replay 和 target network 技術穩定學習過程。
  • 深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)
    本文是 Tensorflow 深度強化學習課程的一部分。?️點擊這裡查看教學大綱。今天我們將學習 Q-Learning。 Q-Learning 是一種基於數值的強化學習算法。假設你是一名騎士,你需要拯救被困在上面地圖上所示城堡中的公主。您可以一次移動一個圖塊。敵人不能移動,但是騎士和敵人落在同一塊地磚上就會死。目標是使騎士儘可能以最快的路線前往城堡。
  • 獨家 | 使用Python的OpenAI Gym對Deep Q-Learning的實操介紹(附學習資源)
    所以當我讀到DeepMind提出的不可思議的算法(如AlphaGo和AlphaStar)時,我被吸引了。我想學習如何在我自己的機器上製造這些系統。這讓我進入了深度強化學習(Deep RL)的世界。即使你不喜歡玩遊戲,深度強化學習也很重要。只用看當前使用深度強化學習進行研究的各種功能就知道了:
  • 開發者自述:我是這樣理解強化學習的
    Actor 更新策略, Critic 更新價值。Critic 就可以用之前介紹的 SARSA 或者 Q Learning 算法。5. Monte-carlo learning用當前策略探索產生一個完整的狀態-動作-獎勵序列: s1,a1,r1,....
  • 強化學習系列之四:模型無關的策略學習
    模型無關的策略學習主要有三種算法: MC Control, SARSA 和 Q learning。1. 一些前置話題      在模型相關強化學習中,我們的工作是找到最優策略的狀態價值MC Control       一聽到 Monte Carlo Control (MC Control) 這個名字,我們就知道,這個算法生成樣本然後根據樣本計算狀態-動作價值。對於每一個狀態-動作對,我們都要維持他們的價值
  • 澳門大學講座教授陳俊龍:從深度強化學習到寬度強化學習:結構,算法...
    四個要素:一、策略:做什麼?類似的給出了相應的最優值函數為最優值函數 V*(s) 是所有策略上的最大值函數:最優行為值函數 Q*(s,a) 是在所有策略上的最大行為值函數:陳教授進一步主要介紹了時間差分算法中兩種不同的方法: 異策略時間差分算法 Qlearning 和同策略時間差分算法 Sarsa, 兩者的主要區別在於 at+1 的選擇上的不同,普通的 Qlearning 是一種表格方法,適用於狀態空間和動作空間是離散且維數比較低的情況; 當狀態空間和動作空間是高維連續的或者出現一個從未出現過的狀態
  • ——《強化學習》從基礎概念、核心原理到應用案例(文末贈書)
    本書緊扣讀者需求,採用循序漸進的敘述方式,深入淺出地論述了強化學習的背景、算法原理、應用案例等; 此外,本書針對每一章節的算法均提供了對應的案例和程序原始碼,並附有詳細的注釋,有助於讀者加深對強化學習相關知識的理解。
  • 【深度強化學習】專業解讀「深度強化學習「:從AlphaGo到AlphaGoZero
    AlphaGoZero不需要人類專家知識,只使用純粹的深度強化學習技術和蒙特卡羅樹搜索,經過3天自我對弈以100:0擊敗上一版本AlphaGo。AlphaGoZero證明了深度強化學習的強大能力,這一成果也勢必將推動該領域的進一步發展。