强化学习(Reinforcement Learning)中的Q-Learning、DQN,面试看这篇就够了!
文章目錄
- 1. 什么是強化學習
- 2. 強化學習模型
- 2.1 打折的未來獎勵
- 2.2 Q-Learning算法
- 2.3 Deep Q Learning(DQN)
- 2.3.1 神經網絡的作用
- 2.3.2 神經網絡計算Q值
- 3. 強化學習和監督學習、無監督學習的區別
- 4. 什么是多任務學習
- 5. 參考文獻
1. 什么是強化學習
其他許多機器學習算法中學習器都是學得怎樣做,而強化學習(Reinforcement Learning, RL)是在嘗試的過程中學習到在特定的情境下選擇哪種行動可以得到最大的回報。在很多場景中,當前的行動不僅會影響當前的rewards,還會影響之后的狀態和一系列的rewards。RL最重要的3個特定在于:
強化學習(Reinforcement Learning, RL),又稱再勵學習、評價學習或增強學習,是機器學習的范式和方法論之一,用于描述和解決智能體(agent)在與環境的交互過程中通過學習策略以達成回報最大化或實現特定目標的問題 [1] 。
上圖中agent代表自身,如果是自動駕駛,agent就是車;如果你玩游戲它就是你當前控制的游戲角色,如馬里奧,馬里奧往前走時環境就一直在發生變化,有小怪物或者障礙物出現,它需要通過跳躍來進行躲避,就是要做action(如向前走和跳起的動作);無人駕駛的action就是車左轉、右轉或剎車等等,它無時無刻都在與環境產生交互,action會反饋給環境,進而改變環境,如果自動駕駛的車行駛目標是100米,它向前開了10米,那環境就發生了變化,所以每次產生action都會導致環境改變,環境的改變會反饋給自身(agent),就是這樣的一個循環;反饋又兩種方式:
Agent可能做得好,也可能做的不好,環境始終都會給它反饋,agent會盡量去做對自身有利的決策,通過反反復復這樣的一個循環,agent會越來越做的好,就像孩子在成長過程中會逐漸明辨是非,這就是強化學習。
2. 強化學習模型
如上圖左邊所示,一個agent(例如:玩家/智能體等)做出了一個action,對environment造成了影響,也就是改變了state,而environment為了反饋給agent,agent就得到了一個獎勵(例如:積分/分數),不斷的進行這樣的循環,直到結束為止。
上述過程就相當于一個馬爾可夫決策過程,為什么這樣叫呢?因為符合馬兒可夫假設:
- 當前狀態 St 只由上一個狀態 St-1 和行為所決定,而和前序的更多的狀態是沒有關系的。
上圖右邊所示,S0 狀態經過了 a0 的行為后,獲得了獎勵 r1 ,變成了狀態S1,后又經過了 a0 行為得到獎勵 r2,變成了狀態 S2 ,如此往復循環,直到結束為止。
2.1 打折的未來獎勵
通過以上的描述,大家都已經確定了一個概念,也就是agent(智能體)在當下做出的決定肯定使得未來收益最大化,那么,一個馬兒可夫決策過程對應的獎勵總和為:
R=r1+r2+r3+...+rnR=r_1+r_2+r_3+...+r_nR=r1?+r2?+r3?+...+rn?
t 時刻(當下)的未來獎勵,只考慮后面的獎勵,前面的改變不了:
Rt=rt+rt+1+rt+2+...+rnR_t=r_t+r_{t+1}+r_{t+2}+...+r_nRt?=rt?+rt+1?+rt+2?+...+rn?
接下來,**當前的情況下做出的動作是能夠得到結果的,但對于未來的影響是一個不確定的,**這也符合我們的真實世界,比如誰都不知道一只蝴蝶只是煽動了一次翅膀會造成颶風式的影響(蝴蝶效應)。所以,當前的行為對于未來是不確定性的,要打一個折扣,也就是加入一個系數gamma,是一個 0 到 1 的值:
Rt=r1+γrt+1+γ2rt+2+...+γn?1rnR_t=r_1+\gamma_{}r_{t+1}+\gamma^2r_{t+2}+...+\gamma^{n-1}r_nRt?=r1?+γ?rt+1?+γ2rt+2?+...+γn?1rn?
離當前越遠的時間,gamma的懲罰系數就會越大,也就是越不確定。為的就是在當前和未來的決策中取得一個平衡。gamma取 0 ,相當于不考慮未來,只考慮當下,是一種很短視的做法;而gamma取 1 ,則完全考慮了未來,又有點過慮了。所以一般gamma會取 0 到 1 之間的一個值。
Rt 可以用 Rt+1 來表示,寫成遞推式:
Rt=rt+γ(rt+1+γ(rt+2+...))=rt+γRt+1R_t=r_t+\gamma(r_{t+1}+\gamma(r_{t+2}+...))=r_t+\gamma_{}R_{t+1}Rt?=rt?+γ(rt+1?+γ(rt+2?+...))=rt?+γ?Rt+1?
2.2 Q-Learning算法
Q(s, a)函數(Quality),質量函數用來表示智能體在s狀態下采用a動作并在之后采取最優動作條件下的打折的未來獎勵(先不管未來的動作如何選擇):
Q(st,at)=maxRt+1Q(s_t,a_t)=maxR_{t+1}Q(st?,at?)=maxRt+1?
假設有了這個Q函數,那么我們就能夠求得在當前 t 時刻當中,做出各個決策的最大收益值,通過對比這些收益值,就能夠得到 t 時刻某個決策是這些決策當中收益最高。
π(s)=argmaxaQ(s,a)\pi(s)=argmax_aQ(s,a)π(s)=argmaxa?Q(s,a)
于是乎,根據Q函數的遞推公式可以得到:
Q(st,at)=r+γmaxaQ(st+1,at+1)Q(s_t,a_t)=r+\gamma_{}max_aQ(s_{t+1},a_{t+1})Q(st?,at?)=r+γ?maxa?Q(st+1?,at+1?)
**這就是注明的貝爾曼公式。**貝爾曼公式實際非常合理。對于某個狀態來講,最大化未來獎勵相當于
最大化即刻獎勵與下一狀態最大未來獎勵之和。
**Q-learning的核心思想是:**我們能夠通過貝爾曼公式迭代地近似Q-函數。
2.3 Deep Q Learning(DQN)
Deep Q Learning(DQN)是一種融合了神經網絡和的Q-Learning方法。
2.3.1 神經網絡的作用
[外鏈圖片轉存失敗(img-PbSUPLoh-1566121098540)(https://morvanzhou.github.io/static/results/ML-intro/DQN2.png)]
使用表格來存儲每一個狀態 state, 和在這個 state 每個行為 action 所擁有的 Q 值. 而當今問題是在太復雜, 狀態可以多到比天上的星星還多(比如下圍棋). 如果全用表格來存儲它們, 恐怕我們的計算機有再大的內存都不夠, 而且每次在這么大的表格中搜索對應的狀態也是一件很耗時的事. 不過, 在機器學習中, 有一種方法對這種事情很在行, 那就是神經網絡.
我們可以將狀態和動作當成神經網絡的輸入, 然后經過神經網絡分析后得到動作的 Q 值, 這樣我們就沒必要在表格中記錄 Q 值, 而是直接使用神經網絡生成 Q 值.
還有一種形式的是這樣, 我們也能只輸入狀態值, 輸出所有的動作值, 然后按照 Q learning 的原則, 直接選擇擁有最大值的動作當做下一步要做的動作.
我們可以想象, 神經網絡接受外部的信息, 相當于眼睛鼻子耳朵收集信息, 然后通過大腦加工輸出每種動作的值, 最后通過強化學習的方式選擇動作.
2.3.2 神經網絡計算Q值
這一部分就跟監督學習的神經網絡一樣了我,輸入狀態值,輸出為Q值,根據大量的數據去訓練神經網絡的參數,最終得到Q-Learning的計算模型,這時候我們就可以利用這個模型來進行強化學習了。
[外鏈圖片轉存失敗(img-ncnopDQ4-1566121098540)(https://morvanzhou.github.io/static/results/ML-intro/DQN4.png)]
3. 強化學習和監督學習、無監督學習的區別
監督式學習就好比你在學習的時候,有一個導師在旁邊指點,他知道怎么是對的怎么是錯的。
強化學習會在沒有任何標簽的情況下,通過先嘗試做出一些行為得到一個結果,通過這個結果是對還是錯的反饋,調整之前的行為,就這樣不斷的調整,算法能夠學習到在什么樣的情況下選擇什么樣的行為可以得到最好的結果。
監督式學習出的是之間的關系,可以告訴算法什么樣的輸入對應著什么樣的輸出。監督學習做了比較壞的選擇會立刻反饋給算法。
強化學習出的是給機器的反饋 reward function,即用來判斷這個行為是好是壞。 另外強化學習的結果反饋有延時,有時候可能需要走了很多步以后才知道以前的某一步的選擇是好還是壞。
監督學習的輸入是獨立同分布的。
強化學習面對的輸入總是在變化,每當算法做出一個行為,它影響下一次決策的輸入。
監督學習算法不考慮這種平衡,就只是 exploitative。
強化學習,一個 agent 可以在探索和開發(exploration and exploitation)之間做權衡,并且選擇一個最大的回報。
非監督式不是學習輸入到輸出的映射,而是模式(自動映射)。
對強化學習來說,它通過對沒有概念標記、但與一個延遲獎賞或效用(可視為延遲的概念標記)相關聯的訓練例進行學習,以獲得某種從狀態到行動的映射。
強化學習和前二者的本質區別:沒有前兩者具有的明確數據概念,它不知道結果,只有目標。數據概念就是大量的數據,有監督學習、無監督學習需要大量數據去訓練優化你建立的模型。
| 標簽 | 正確且嚴格的標簽 | 沒有標簽 | 沒有標簽,通過結果反饋調整 |
| 輸入 | 獨立同分布 | 獨立同分布 | 輸入總是在變化,每當算法做出一個行為,它影響下一次決策的輸入。 |
| 輸出 | 輸入對應輸出 | 自學習映射關系 | reward function,即結果用來判斷這個行為是好是壞 |
4. 什么是多任務學習
在機器學習中,我們通常關心優化某一特定指標,不管這個指標是一個標準值,還是企業KPI。為了達到這個目標,我們訓練單一模型或多個模型集合來完成指定得任務。然后,我們通過精細調參,來改進模型直至性能不再提升。盡管這樣做可以針對一個任務得到一個可接受得性能,但是我們可能忽略了一些信息,這些信息有助于在我們關心的指標上做得更好。具體來說,這些信息就是相關任務的監督數據。通過在相關任務間共享表示信息,我們的模型在原始任務上泛化性能更好。這種方法稱為多任務學習(Multi-Task Learning)
在不同的任務中都會有一些共性,而這些共性就構成了多任務學習的一個連接點,也就是任務都需要通過這個共性能得出結果來的。比如電商場景中的點擊率和轉化率,都要依賴于同一份數據的輸入和神經網絡層次。多語種語音識別等。
5. 參考文獻
- GitHub
- 強化學習
【機器學習通俗易懂系列文章】
作者:@mantchs
GitHub:https://github.com/NLP-LOVE/ML-NLP
歡迎大家加入討論!共同完善此項目!群號:【541954936】
總結
以上是生活随笔為你收集整理的强化学习(Reinforcement Learning)中的Q-Learning、DQN,面试看这篇就够了!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018 考研数学(二)考试大纲
- 下一篇: diy金丝楠木嵌宝耳机