1. 什么是強化學習
其他許多機器學習算法中學習器都是學得怎樣做癌椿,而強化學習(Reinforcement Learning, RL)是在嘗試的過程中學習到在特定的情境下選擇哪種行動可以得到最大的回報健蕊。在很多場景中,當前的行動不僅會影響當前的rewards踢俄,還會影響之后的狀態(tài)和一系列的rewards缩功。RL最重要的3個特定在于:
- 基本是以一種閉環(huán)的形式;
- 不會直接指示選擇哪種行動(actions)都办;
- 一系列的actions和獎勵信號(reward signals)都會影響之后較長的時間嫡锌。
強化學習(Reinforcement Learning, RL)虑稼,又稱再勵學習、評價學習或增強學習势木,是機器學習的范式和方法論之一蛛倦,用于描述和解決智能體(agent)在與環(huán)境的交互過程中通過學習策略以達成回報最大化或?qū)崿F(xiàn)特定目標的問題 [1] 。
上圖中agent代表自身啦桌,如果是自動駕駛溯壶,agent就是車;如果你玩游戲它就是你當前控制的游戲角色甫男,如馬里奧且改,馬里奧往前走時環(huán)境就一直在發(fā)生變化,有小怪物或者障礙物出現(xiàn)板驳,它需要通過跳躍來進行躲避又跛,就是要做action(如向前走和跳起的動作);無人駕駛的action就是車左轉(zhuǎn)笋庄、右轉(zhuǎn)或剎車等等效扫,它無時無刻都在與環(huán)境產(chǎn)生交互,action會反饋給環(huán)境直砂,進而改變環(huán)境菌仁,如果自動駕駛的車行駛目標是100米,它向前開了10米静暂,那環(huán)境就發(fā)生了變化济丘,所以每次產(chǎn)生action都會導致環(huán)境改變,環(huán)境的改變會反饋給自身(agent)洽蛀,就是這樣的一個循環(huán)摹迷;反饋又兩種方式:
- 做的好(reward)即正反饋,
- 做得不好(punishment懲罰)即負反饋郊供。
Agent可能做得好峡碉,也可能做的不好,環(huán)境始終都會給它反饋驮审,agent會盡量去做對自身有利的決策鲫寄,通過反反復復這樣的一個循環(huán),agent會越來越做的好疯淫,就像孩子在成長過程中會逐漸明辨是非地来,這就是強化學習。
2. 強化學習模型
如上圖左邊所示熙掺,一個agent(例如:玩家/智能體等)做出了一個action未斑,對environment造成了影響,也就是改變了state币绩,而environment為了反饋給agent蜡秽,agent就得到了一個獎勵(例如:積分/分數(shù))府阀,不斷的進行這樣的循環(huán),直到結(jié)束為止载城。
上述過程就相當于一個馬爾可夫決策過程肌似,為什么這樣叫呢?因為符合馬兒可夫假設:
- 當前狀態(tài) St 只由上一個狀態(tài) St-1 和行為所決定诉瓦,而和前序的更多的狀態(tài)是沒有關(guān)系的川队。
上圖右邊所示,S0 狀態(tài)經(jīng)過了 a0 的行為后睬澡,獲得了獎勵 r1 固额,變成了狀態(tài)S1,后又經(jīng)過了 a0 行為得到獎勵 r2煞聪,變成了狀態(tài) S2 斗躏,如此往復循環(huán),直到結(jié)束為止昔脯。
2.1 打折的未來獎勵
通過以上的描述啄糙,大家都已經(jīng)確定了一個概念,也就是agent(智能體)在當下做出的決定肯定使得未來收益最大化云稚,那么隧饼,一個馬兒可夫決策過程對應的獎勵總和為:
t 時刻(當下)的未來獎勵,只考慮后面的獎勵静陈,前面的改變不了:
接下來燕雁,當前的情況下做出的動作是能夠得到結(jié)果的,但對于未來的影響是一個不確定的鲸拥,這也符合我們的真實世界拐格,比如誰都不知道一只蝴蝶只是煽動了一次翅膀會造成颶風式的影響(蝴蝶效應)。所以刑赶,當前的行為對于未來是不確定性的捏浊,要打一個折扣,也就是加入一個系數(shù)gamma撞叨,是一個 0 到 1 的值:
離當前越遠的時間金踪,gamma的懲罰系數(shù)就會越大,也就是越不確定谒所。為的就是在當前和未來的決策中取得一個平衡。gamma取 0 沛申,相當于不考慮未來劣领,只考慮當下,是一種很短視的做法铁材;而gamma取 1 尖淘,則完全考慮了未來奕锌,又有點過慮了。所以一般gamma會取 0 到 1 之間的一個值村生。
Rt 可以用 Rt+1 來表示惊暴,寫成遞推式:
2.2 Q-Learning算法
Q(s, a)函數(shù)(Quality),質(zhì)量函數(shù)用來表示智能體在s狀態(tài)下采用a動作并在之后采取最優(yōu)動作條件下的打折的未來獎勵(先不管未來的動作如何選擇):
假設有了這個Q函數(shù)趁桃,那么我們就能夠求得在當前 t 時刻當中辽话,做出各個決策的最大收益值,通過對比這些收益值卫病,就能夠得到 t 時刻某個決策是這些決策當中收益最高油啤。
于是乎,根據(jù)Q函數(shù)的遞推公式可以得到:
這就是注明的貝爾曼公式蟀苛。貝爾曼公式實際非常合理益咬。對于某個狀態(tài)來講,最大化未來獎勵相當于
最大化即刻獎勵與下一狀態(tài)最大未來獎勵之和帜平。
Q-learning的核心思想是:我們能夠通過貝爾曼公式迭代地近似Q-函數(shù)幽告。
2.3 Deep Q Learning(DQN)
Deep Q Learning(DQN)是一種融合了神經(jīng)網(wǎng)絡和的Q-Learning方法。
2.3.1 神經(jīng)網(wǎng)絡的作用
使用表格來存儲每一個狀態(tài) state, 和在這個 state 每個行為 action 所擁有的 Q 值. 而當今問題是在太復雜, 狀態(tài)可以多到比天上的星星還多(比如下圍棋). 如果全用表格來存儲它們, 恐怕我們的計算機有再大的內(nèi)存都不夠, 而且每次在這么大的表格中搜索對應的狀態(tài)也是一件很耗時的事. 不過, 在機器學習中, 有一種方法對這種事情很在行, 那就是神經(jīng)網(wǎng)絡.
我們可以將狀態(tài)和動作當成神經(jīng)網(wǎng)絡的輸入, 然后經(jīng)過神經(jīng)網(wǎng)絡分析后得到動作的 Q 值, 這樣我們就沒必要在表格中記錄 Q 值, 而是直接使用神經(jīng)網(wǎng)絡生成 Q 值.
還有一種形式的是這樣, 我們也能只輸入狀態(tài)值, 輸出所有的動作值, 然后按照 Q learning 的原則, 直接選擇擁有最大值的動作當做下一步要做的動作.
我們可以想象, 神經(jīng)網(wǎng)絡接受外部的信息, 相當于眼睛鼻子耳朵收集信息, 然后通過大腦加工輸出每種動作的值, 最后通過強化學習的方式選擇動作.
2.3.2 神經(jīng)網(wǎng)絡計算Q值
這一部分就跟監(jiān)督學習的神經(jīng)網(wǎng)絡一樣了我裆甩,輸入狀態(tài)值冗锁,輸出為Q值,根據(jù)大量的數(shù)據(jù)去訓練神經(jīng)網(wǎng)絡的參數(shù)淑掌,最終得到Q-Learning的計算模型蒿讥,這時候我們就可以利用這個模型來進行強化學習了。
3. 強化學習和監(jiān)督學習抛腕、無監(jiān)督學習的區(qū)別
-
監(jiān)督式學習就好比你在學習的時候芋绸,有一個導師在旁邊指點,他知道怎么是對的怎么是錯的担敌。
強化學習會在沒有任何標簽的情況下摔敛,通過先嘗試做出一些行為得到一個結(jié)果,通過這個結(jié)果是對還是錯的反饋全封,調(diào)整之前的行為马昙,就這樣不斷的調(diào)整,算法能夠?qū)W習到在什么樣的情況下選擇什么樣的行為可以得到最好的結(jié)果刹悴。
-
監(jiān)督式學習出的是之間的關(guān)系行楞,可以告訴算法什么樣的輸入對應著什么樣的輸出。監(jiān)督學習做了比較壞的選擇會立刻反饋給算法土匀。
強化學習出的是給機器的反饋 reward function子房,即用來判斷這個行為是好是壞。 另外強化學習的結(jié)果反饋有延時,有時候可能需要走了很多步以后才知道以前的某一步的選擇是好還是壞证杭。
-
監(jiān)督學習的輸入是獨立同分布的田度。
強化學習面對的輸入總是在變化,每當算法做出一個行為解愤,它影響下一次決策的輸入镇饺。
-
監(jiān)督學習算法不考慮這種平衡,就只是 exploitative送讲。
強化學習奸笤,一個 agent 可以在探索和開發(fā)(exploration and exploitation)之間做權(quán)衡,并且選擇一個最大的回報李茫。
-
非監(jiān)督式不是學習輸入到輸出的映射揭保,而是模式(自動映射)。
對強化學習來說魄宏,它通過對沒有概念標記秸侣、但與一個延遲獎賞或效用(可視為延遲的概念標記)相關(guān)聯(lián)的訓練例進行學習,以獲得某種從狀態(tài)到行動的映射宠互。
強化學習和前二者的本質(zhì)區(qū)別:沒有前兩者具有的明確數(shù)據(jù)概念味榛,它不知道結(jié)果,只有目標予跌。數(shù)據(jù)概念就是大量的數(shù)據(jù)搏色,有監(jiān)督學習、無監(jiān)督學習需要大量數(shù)據(jù)去訓練優(yōu)化你建立的模型券册。
監(jiān)督學習 | 非監(jiān)督學習 | 強化學習 | |
---|---|---|---|
標簽 | 正確且嚴格的標簽 | 沒有標簽 | 沒有標簽频轿,通過結(jié)果反饋調(diào)整 |
輸入 | 獨立同分布 | 獨立同分布 | 輸入總是在變化,每當算法做出一個行為烁焙,它影響下一次決策的輸入航邢。 |
輸出 | 輸入對應輸出 | 自學習映射關(guān)系 | reward function,即結(jié)果用來判斷這個行為是好是壞 |
4. 什么是多任務學習
在機器學習中骄蝇,我們通常關(guān)心優(yōu)化某一特定指標膳殷,不管這個指標是一個標準值,還是企業(yè)KPI九火。為了達到這個目標赚窃,我們訓練單一模型或多個模型集合來完成指定得任務。然后岔激,我們通過精細調(diào)參勒极,來改進模型直至性能不再提升。盡管這樣做可以針對一個任務得到一個可接受得性能虑鼎,但是我們可能忽略了一些信息辱匿,這些信息有助于在我們關(guān)心的指標上做得更好。具體來說,這些信息就是相關(guān)任務的監(jiān)督數(shù)據(jù)掀鹅。通過在相關(guān)任務間共享表示信息,我們的模型在原始任務上泛化性能更好媒楼。這種方法稱為多任務學習(Multi-Task Learning)
在不同的任務中都會有一些共性乐尊,而這些共性就構(gòu)成了多任務學習的一個連接點,也就是任務都需要通過這個共性能得出結(jié)果來的划址。比如電商場景中的點擊率和轉(zhuǎn)化率扔嵌,都要依賴于同一份數(shù)據(jù)的輸入和神經(jīng)網(wǎng)絡層次。多語種語音識別等夺颤。
5. 參考文獻
作者:@mantchs
GitHub:https://github.com/NLP-LOVE/ML-NLP
歡迎大家加入討論痢缎!共同完善此項目!群號:【541954936】點擊加入