1. 程式人生 > >1 強化學習(Reinforcement Learning, RL)初步介紹

1 強化學習(Reinforcement Learning, RL)初步介紹

當前的機器學習演算法可以分為3種:有監督的學習(Supervised Learning)、無監督的學習(Unsupervised Learning)和強化學習(Reinforcement Learning),結構圖如下所示:

其他許多機器學習演算法中學習器都是學習怎樣做,而RL是在嘗試的過程中學習在特定的情境下選擇哪種行動可以得到最大的回報。在很多場景中,當前的行動不僅會影響當前的rewards,還會影響之後的狀態和一系列的rewards。RL最重要的3個特性在於:(1)通常是一種閉環的形式;(2)不會直接指示選擇哪種行動(actions);(3)一系列的 actions 和獎勵訊號(reward signals)都會影響之後較長的時間。

RL與有監督學習、無監督學習的比較:
  (1)有監督的學習是從一個已經標記的訓練集中進行學習,訓練集中每一個樣本的特徵可以視為是對該situation的描述,而其 label 可以視為是應該執行的正確的action,但是有監督的學習不能學習互動的情景,因為在互動的問題中獲得期望行為的樣例是非常不實際的,agent只能從自己的經歷(experience)中進行學習,而experience中採取的行為並一定是最優的。這時利用RL就非常合適,因為RL不是利用正確的行為來指導,而是利用已有的訓練資訊來對行為進行評價。
  (2)因為RL利用的並不是採取正確行動的experience,從這一點來看和無監督的學習確實有點像,但是還是不一樣的,無監督的學習的目的可以說是從一堆未標記樣本中發現隱藏的結構,而RL的目的是最大化 reward signal。
  (3)總的來說,RL與其他機器學習演算法不同的地方在於:其中沒有監督者,只有一個reward訊號;反饋是延遲的,不是立即生成的;時間在RL中具有重要的意義;agent的行為會影響之後一系列的data。
  
RL採用的是邊獲得樣例邊學習的方式,在獲得樣例之後更新自己的模型,利用當前的模型來指導下一步的行動,下一步的行動獲得reward之後再更新模型,不斷迭代重複直到模型收斂。在這個過程中,非常重要的一點在於“在已有當前模型的情況下,如果選擇下一步的行動才對完善當前的模型最有利”,這就涉及到了RL中的兩個非常重要的概念:探索(exploration)和開發(exploitation),exploration是指選擇之前未執行過的actions,從而探索更多的可能性;exploitation是指選擇已執行過的actions,從而對已知的actions的模型進行完善。RL非常像是“trial-and-error learning”,在嘗試和試驗中發現好的policy。就比如下圖中的曲線代表函式f

(x)f(x),它是一個未知的[a,b][a,b]的連續函式,現在讓你選擇一個xx使得f(x)f(x)取的最大值,規則是你可以通過自己給定xx來檢視其所對應的f(x)f(x),假如通過在 [a,0][a,0] 之間的幾次嘗試你發現在接近 x1x_1 的時候的值較大,於是你想通過在x1x_1附近不斷的嘗試和逼近來尋找這個可能的“最大值”,這個就稱為是exploitation,但是[0,b][0,b]之間就是個未探索過的未知的領域,這時選擇若選擇這一部分的點就稱為是exploration,如果不進行exploration也許找到的只是個區域性的極值。“exploration”與“exploitation”在RL中同樣重要,如何在“exploration”與“exploitation”之間權衡是RL中的一個重要的問題和挑戰。

在RL中,agents是具有明確的目標的,所有的agents都能感知自己的環境,並根據目標來指導自己的行為,因此RL的另一個特點是它將agents和與其互動的不確定的環境視為是一個完整的問題。在RL問題中,有四個非常重要的概念:

(1)規則(policy)
Policy定義了agents在特定的時間特定的環境下的行為方式,可以視為是從環境狀態到行為的對映,常用 π\pi來表示。policy可以分為兩類:
確定性的policy(Deterministic policy): a=π(s)a=\pi(s)
隨機性的policy(Stochastic policy): π(as)=P[At=aSt=t]\pi(a|s)=P[A_t=a|S_t=t]
其中,tt是時間點,t=0,1,2,3,t=0,1,2,3,……
StSS_t\in\mathcal{S}S\mathcal{S}是環境狀態的集合,StS_t代表時刻tt的狀態,ss代表其中某個特定的狀態;
AtA(St)A_t\in\mathcal{A}(S_t)A(St)\mathcal{A}(S_t)是在狀態StS_t下的actions的集合,AtA_t代表時刻tt的行為,aa代表其中某個特定的行為。

(2)獎勵訊號(a reward signal)
Reward就是一個標量值,是每個time step中環境根據agent的行為返回給agent的訊號,reward定義了在該情景下執行該行為的好壞,agent可以根據reward來調整自己的policy。常用RR來表示。

(3)值函式(value function)
Reward定義的是立即的收益,而value function定義的是長期的收益,它可以看作是累計的reward,常用vv來表示。

(4)環境模型(a model of the environment)
整個Agent和Environment互動的過程可以用下圖來表示:

其中,tt是時間點,t=0,1,2,3,t=0,1,2,3,……
StSS_t\in \mathcal{S}S\mathcal{S}是環境狀態的集合;
AtA(St)A_t\in\mathcal{A}(S_t)A(St)\mathcal{A}(S_t)是在狀態StS_t下的actions的集合;
RtRRR_t\in\mathcal{R}\in{\Bbb R} 是數值型的reward。

參考文獻
[1] Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto
[2] UCL Course on RL