強化學習——Q Learning 簡介

2021-02-13 Tensorflow機器學習

繼續接著上一篇,這篇文章介紹強化學習中的一個經典算法——Q Learning.

在之前的文章中已經介紹過了,強化學習就是讓智能體(Agent),在與環境的互動過程學習解決問題的最佳路徑的過程。

強化學習通常包括這麼幾個重要概念:

狀態(State (S))

動作(Action(A))

獎勵(Reward(R))

下面以一個格子世界的例子來解釋這幾個概念,並介紹一下Q Learning是什麼:


上圖紅色方框就是我們的智能體,任務是要在4x4的迷宮中找到黃色圓圈的寶藏,並學習到達寶藏的最佳路徑。如果以左上角的初始狀態為S0,那麼整個迷宮一共有16個狀態(State)(從左到右從上到下分別是S0到S15)。智能體的行動(Action)有四個: 分別是向左(A1)向右(A2)向上(A3)和向下(A4)移動。如果找到黃色圓圈(寶藏)獎勵(Reward)為1,掉入黑色陷阱獎勵(Reward)為-1,其他地方為0。

1. Q表(Q table)

Q Learning 就是創造一個Q表,來指導智能體的行動,Q表對應Action的數值越大,智能體就越大概率地採取這個Action.

這個Q表是經過學習之後的結果,學習並不斷更新這個表的過程就是Q Learning。比如Q表在S0最大概率會向右移動,在S1最大概率還是向右移動,因為A2在兩個狀態的Q表數值都是最大的。

2. 探索-利用困境(Explore-Exploit dilemma)

Q Learning 是如何學習並更新Q表呢?正如多臂老虎機(Multi-armed bandit)問題一樣,如果智能體僅僅按照表中最大概率指導行動的話,是學不到任何東西的,它還需要不停地在未知地圖上進行探索,這就是是探索-利用困境(Explore-Exploit dilemma)。同樣的,我們也可以用ε貪婪方法(ε -Greedy method)的方法來解決這個困境。

也就是設定一個ε(比如0.9),90%的機率按照Q表數值最大Action行動,10%隨機行動。每行動一次就要更新一下Q表。

3. 如何更新Q表

Q learning的算法就是如何更新Q表的方法。還是以表下為例:

Q(S0,A2) = Q(S0,A2) + α[R(S1) + γ*maxaQ(S1,a)-Q(S0,A2)]

當智能體處於S0的狀態時,如果剛好選擇了A2,那麼下一個狀態就是S1(注意有10%的概率會選擇其他的Action, 而到達其他的狀態)。行動之後,我們就需要更新Q(S0,A2)的數值, 先給結果吧:

解釋一下

R(S1)是智能體在S1能活的的獎勵(Reward)(該遊戲除了陷阱的地方為-1,寶藏的地方為1,其他地方均為0)。

γ為衰減值。

maxaQ(S1,a)是S1狀態下,Q表數值最大的一個(這裡是2)。

α是學習速率(Learning Rate)。

R(S1) + γ*maxa Q(S1,a)是Q(S0,A2) 的目標數值。

那我們再把公式重寫一遍就清楚了吧:

Q(S0,A2)新=Q(S0,A2) 舊 + α* [Q(S0,A2)目標 - Q(S0,A2)舊]

上面的公式像極了在線性回歸中的梯度下降法(Gradient Descent)。只不過在線性回歸我們更新權重W的方法,在這裡我們更新Q表而已。

完整的公式如下:

4. 衰減值

這裡再解釋一下為什麼要用衰減值 γ,從上面的公式可以看出,St 和 St+1是一個遞歸的關係。當智能體走到第n步的時候,會受到0到n-1每一步狀態的影響。如果衰減值γ=1,那麼每一步的影響都是一樣的。γ在0到1之間,就可以讓越靠近n的狀態對第n步影響越大,之前的狀態隨著行動的增加,影響力會越來越小。

相關文章

強化學習與Open AI 入門
End-to-End(端到端)的深度學習
免費使用Google的GPU和TPU來訓練你的模型

長按或掃描二維碼關注公眾號,獲取原始碼,你的支持是作者創作的動力。

相關焦點

  • 深度學習第56講:強化學習簡介與Q-Learning實例
    從整個機器學習的任務劃分上來看,機器學習可以分為有監督學習、有監督和半監督學習以及強化學習,而我們之前一直談論的圖像、文本等深度學習的應用都屬於監督學習範疇。自編碼器和生成式對抗網絡可以算在無監督深度學習範疇內。最後就只剩下強化學習了。但是我們這是深度學習的筆記,為什麼要把強化學習單獨拎出來講一下呢?
  • 入門 | 通過 Q-learning 深入理解強化學習
    選自Medium作者:Thomas Simonini機器之心編譯參與:Geek AI、劉曉坤本文將帶你學習經典強化學習算法為了學習到 Q-table 中的每個值,我們將使用 Q-learning 算法。Q-learning 算法:學習動作值函數(action value function)動作值函數(或稱「Q 函數」)有兩個輸入:「狀態」和「動作」。
  • 增強學習之Q-Learning入門
    基於tensorflow的最簡單的強化學習入門-part0:Q-learning和神經網絡https://zhuanlan.zhihu.com/p/257103272. Simple Reinforcement Learning with Tensorflow Part 0: Q-Learning with Tables and Neural Networkshttps://medium.com/emergent-future/simple-reinforcement-learning-with-tensorflow-part-0-q-learning-with-tables-and-neural-networks-d195264329d0
  • 5分鐘讀懂強化學習之Q-learning
    強化學習的難點,在於其引入了時間這個維度,不管是有監督還是無監督學習,都是能獲得即使反饋,但到了強化學習中,反饋來的沒那麼及時。
  • 通過代碼學Sutton強化學習:從Q-Learning 演化到 DQN
    學習本文的最佳姿勢為點擊文末在看,發送本文連結到桌面版瀏覽器,打開文末閱讀原文,敲入代碼運行。對於Q-learning來說,完全可以使用隨機策略,理論上已經證明,只要保證每個action以後依然有機率會被探索下去,Q-learning 最終會收斂到最優策略。
  • 獨家 | 使用Python的OpenAI Gym對Deep Q-Learning的實操介紹(附學習資源)
    我建議按以下順序瀏覽這些指南:強化學習的基礎學習:使用動態編程的基於模型的規劃https://www.analyticsvidhya.com/blog/2018/09/reinforcement-learning-model-based-planning-dynamic-programming/ 強化學習指南:從零開始用Python解決多臂抽獎問題
  • 強化學習筆記之Q-learning/SARSA
    Q-learning和SARSA算法都屬於TD算法下的控制類算法,是強化學習中非常重要的兩個算法,接下來用gym中的FrozenLake為例來介紹這兩個算法
  • 通過代碼學 Sutton 強化學習:SARSA、Q-Learning 時序差分算法訓練 CartPole
    s: State, a: Action, r, s_next: State, a_next: Action):        self.q[s][a] += self.lr * (r + self.discount * (self.q[s_next][a_next]) - self.q[s][a])SARSA 在執行policy 後的Q值更新是對於針對於同一個policy的
  • 深度強化學習(Deep Reinforcement Learning)的資源
    還是2011年,Abtahi等人[3]用DBN替代傳統的強化學習中的逼近器(做RL的人是不是很親切,和Deep mind就差一點兒額!有木有覺得很可惜,幾乎都摸到Nature的門上了)。2012年的時候,Lange[4]這人更進一步開始做應用了,提出Deep Fitted Q學習做車輛控制,不過效果不咋地。
  • 入門必看 | 深度Q-learning簡介【RL系列】
    在這篇文章中,你將學到:在Q-learning中加入「Deep」我們基於Q-learning方法構建了一個可以玩Frozen Lake遊戲的agent。當時實現了Q-learing方法並可以更新Q-table。以此表作為「備忘錄」來幫助我們找到當給定環境狀態時,在未來獲得最佳獎勵的行為。這是一個好策略,但卻擴展性很低。
  • 一文帶你理解Q-Learning的搜索策略,掌握強化學習最常用算法
    王小新 編譯自 Medium量子位 出品 | 公眾號 QbitAIQ-Learning是強化學習中最常用的算法之一。
  • SARSA和Q-Learning
    給狀態估值的最終目的其實是利用這些估值來提升我們的policy,這也是我們做強化學習的目標,在已有的經驗(樣本)上找到更好的策略。所以我們在估計value-funtion的過程中會對policy進行提升。提升時,policy就會發生調整了。
  • 入門 | 從Q學習到DDPG,一文簡述多種強化學習算法
    雖然已經有大量的強化學習算法,但似乎並沒有什麼文章對它們進行全面比較。每次需要決定將哪些算法應用於特定的任務時,都讓我很糾結。本文旨在通過簡要討論強化學習的設置來解決這個問題,並簡要介紹一些眾所周知的算法。1.
  • 強化學習教程(一):Q-Learning原理與應用
    強化學習是基於一種無監督學習思想。pip install -q 'gym==0.10.11'3!pip install -q 'imageio==2.4.0'4!pip install -q PILLOW5!pip install -q 'pyglet==1.3.2'6!pip install -q pyvirtualdisplay7!
  • 「人工智慧研學社· 強化學習組」第二期:超越職業玩家的算法 - Deep Q-network
    然而,為了在接近現實複雜性的情況下成功地使用強化學習,主體面臨著一個艱巨的任務:他們必須從高維的感官輸入的環境中獲得有效的表徵,並使用這些表徵來將過去的經驗應用到新的情境中。值得注意的是,人類和其他動物看起來已經通過結合強化學習和等級知覺處理系統解決了這個問題。人類身上體現出的強化學習理論被豐富的神經數據證實,這些神經數據揭示了多巴胺能神經元釋放的相位信號與時域差分強化學習算法之間的顯著相似之處。
  • 強化學習教程(二):Deep Q Network(DQN)原理與應用
    【這裡需要注意的幾點 & DQN的改進】:網絡延遲參數更新:Q網絡與Target Q網絡的初始化參數w與w-是相同的,episode的C步內只更新Q網絡,episode的C步時,更新參數w- = w 更改Target Q = Q估計經驗回放技術:這裡我們看到初始化了Memory D,這是由於在強化學習中
  • NeurIPS 2020 | 近期必讀Q-learning精選論文
    Q-learning是強化學習的一種方法。Q-learning就是要記錄下學習過的政策,因而告訴智能體什麼情況下採取什麼行動會有最大的獎勵值。conf=neurips2020簡介:有效地利用強化學習(RL)中以前收集的大型數據集是大規模實際應用程式的主要挑戰。離線RL算法承諾無需進一步交互即可從先前收集的靜態數據集中學習有效的策略。
  • Github項目推薦 | 中文整理的強化學習資料(Reinforcement Learning)
    來源:AI研習社來源:https://mp.weixin.qq.com/s/Fi904VUeUAQURSZrUQCarw強化學習從入門到放棄的資料by wwxFromTju  項目地址:https://github.com/wwxFromTju/awesome-reinforcement-learning-zh
  • 入門必看 | 強化學習簡介 【RL系列】
    在這個系列文章中,我們將關注於深度學習問題中各類不同的求解方法。包括Q-learning,Deep Q-learning,策略梯度,Actor Critic,以及PPO。 在第一篇文章中,你將會學到:強化學習是什麼,為什麼說「獎勵」是最重要的思想。強化學習的三個方法。深度強化學習中的「深度」是什麼意思?在進入深度學習實現的主題之前,一定要把這些元素弄清楚。
  • 上手使用 DeepMind 分布式強化學習框架 Acme ,對開發者超友好
    學習者使用參與者收集的數據來學習或改進策略,通常用的是在線迭代的方式。例如,學習內容可能包括對神經網絡參數的更新。新參數被傳遞給參與者,然後參與者根據更新的策略行事。代理就是行動和學習組件的簡單結合,但通常不需要實現額外的強化學習邏輯。下圖包括所有三個組件。