RL
Agent->Env: Action a
Env-->Agent: State x
Env-->Agent: Reward r
強(qiáng)化學(xué)習(xí)任務(wù)通常用馬爾科夫決策過程(Markov Decision Process,簡稱 MDP)來描述:
機(jī)器處于環(huán)境$E$中,狀態(tài)空間為$X$,其中每個狀態(tài)$x \in X$是機(jī)器感知到的環(huán)境的描述,機(jī)器能采取的動作構(gòu)成了動作空間$A$,若某個動作$a\in A$作用在當(dāng)前狀態(tài)$x$上,則潛在的轉(zhuǎn)移函數(shù)$P$將使得環(huán)境從當(dāng)前狀態(tài)按某種概率轉(zhuǎn)移到一另個狀態(tài),在轉(zhuǎn)移到另一個狀態(tài)的同時,環(huán)境會根據(jù)潛在的獎賞(reward)函數(shù)$R$反饋給機(jī)器一個獎賞。綜合起來,強(qiáng)化學(xué)習(xí)任務(wù)對應(yīng)了四元組$E=<X,A,P,R>$,其中$P:X\times A\times X \mapsto \mathbb{R}$指定了狀態(tài)轉(zhuǎn)移概率,$R:X \times A \times X \mapsto \mathbb{R}$指定了獎賞,在有的應(yīng)用中,獎賞函數(shù)可能僅與狀態(tài)轉(zhuǎn)移有關(guān),即$R: X \times X \mapsto \mathbb{R}$.
在環(huán)境中狀態(tài)的轉(zhuǎn)移,獎賞的返回是不受機(jī)器控制的,機(jī)器只能通過選擇要執(zhí)行的動作來影響環(huán)境,也只能通過觀察轉(zhuǎn)移后的狀態(tài)和返回的獎賞來感知環(huán)境。
策略(policy)$\pi$的定義,根據(jù)這個策略,在狀態(tài)$x$下就能得知要執(zhí)行的動作$a=\pi(x)$,確定性動作表示為$\pi:X \mapsto A$,隨機(jī)性動作表示為$\pi:X\times A \mapsto \mathbb{R}$,$\pi(x,a)$為狀態(tài)$x$下選擇動作$a$的概率,則有$\sum_a\pi(x,a)=1$
累計獎賞####
T步累積獎賞$E(\frac{1}{T}\sum_{t=1}^Tr_t)$
$\gamma$折扣累積獎賞$E(\sum_{t=0}{+\infty}\gammatr_{t+1})$
$K$-搖臂賭博機(jī)
$K$-要比賭博機(jī)有$K$個搖臂,賭徒在投入一個硬幣后可選擇按下其中一個要比,每個要比以一定的概率突出硬幣,但這個概率賭徒并不知道,賭徒的目標(biāo)是通過一定的策略最大化自己的獎賞,即獲得醉倒的硬幣
exploration-only:很好的估計每個要比的獎賞,失去選擇最優(yōu)搖臂的機(jī)會
exploitation-only:沒有很好估計搖臂期望獎賞,很可能選不到最優(yōu)的搖臂
因?yàn)閲L試次數(shù)有限,加強(qiáng)了一方則會削弱另一方,面臨“探索-利用窘境”(Exploration-Exploitation dilemma)
$\epsilon$-貪心####
每次嘗試時,以$\epsilon$的概率進(jìn)行探索,即以均勻概率隨機(jī)選取一個搖臂,以$1-\epsilon$的概率進(jìn)行利用,集選擇當(dāng)前平均獎賞最高的搖臂(若有多個,則隨機(jī)選取一個)
class EpsilonGreedyPolicy(Policy):
"""
The Epsilon-Greedy policy will choose a random action with probability
epsilon and take the best apparent approach with probability 1-epsilon. If
multiple actions are tied for best choice, then a random action from that
subset is selected.
"""
def __init__(self, epsilon):
self.epsilon = epsilon
def __str__(self):
return '\u03B5-greedy (\u03B5={})'.format(self.epsilon)
def choose(self, agent):
if np.random.random() < self.epsilon:
return np.random.choice(len(agent.value_estimates))
else:
action = np.argmax(agent.value_estimates)
check = np.where(agent.value_estimates == action)[0]
if len(check) == 0:
return action
else:
return np.random.choice(check)
Softmax####
搖臂的概率的分配是基于Boltzmann分布
$$P(k)=\frac{e\frac{Q(k)}{\tau}}{\sum_{i=1}{K}e^\frac{Q(i)}{\tau}}$$
其中,Q(i)記錄當(dāng)前搖臂的平均獎賞;$\tau>0$成為“溫度”,$\tau$越小則平均獎賞高的搖臂被選取的概率越高。$\tau \rightarrow 0$則Softmax趨于“僅利用”,$\tau \rightarrow \infty$則Softmax趨于“僅探索”
class SoftmaxPolicy(Policy):
"""
The Softmax policy converts the estimated arm rewards into probabilities
then randomly samples from the resultant distribution. This policy is
primarily employed by the Gradient Agent for learning relative preferences.
"""
def __str__(self):
return 'SM'
def choose(self, agent):
a = agent.value_estimates
pi = np.exp(a) / np.sum(np.exp(a))
"""
>>> a = np.array([[1,2,3], [4,5,6]])
>>> np.cumsum(a)
array([ 1, 3, 6, 10, 15, 21])
"""
cdf = np.cumsum(pi)
s = np.random.random()
return np.where(s < cdf)[0][0]
def choose(self):
action = self.policy.choose(self)
self.last_action = action
return action
def observe(self, reward):
self.action_attempts[self.last_action] += 1
if self.gamma is None:
g = 1 / self.action_attempts[self.last_action]
else:
g = self.gamma
q = self._value_estimates[self.last_action]
self._value_estimates[self.last_action] += g*(reward - q)
self.t += 1
對于離散狀態(tài)空間,離散動作空間上的多不講話學(xué)習(xí)人物,一種直接的辦法是將每個狀態(tài)上動作的選擇看做一個$K$-搖臂賭博機(jī)問題,用強(qiáng)化學(xué)習(xí)任務(wù)的累計獎賞來代替$K$-搖臂賭博機(jī)算法中的獎賞函數(shù),即可將賭博計算法用于每個狀態(tài)
有模型學(xué)習(xí)###
$$E=<X,A,P,R>$$
機(jī)器已對模型進(jìn)行了建模,能在機(jī)器內(nèi)部模擬出與環(huán)境相同活近似的狀況,對于任意狀態(tài)$x,x'$和動作$a$,在$x$狀態(tài)下執(zhí)行動作$a$轉(zhuǎn)移到$x'$狀態(tài)的概率$P_{x \rightarrow x'}^a$是已知的,改轉(zhuǎn)移所帶來的獎賞$R_{x \rightarrow x'}^a$也是已知的
$V^\pi(x)$表示從$x$出發(fā),使用策略$\pi$所帶來的累積獎賞."狀態(tài)值函數(shù)"(state value function)
$Q^\pi(x,a)$表示從$x$出發(fā),執(zhí)行動作$a$后再使用策略$\pi$帶來的累積獎賞."狀態(tài)-動作值函數(shù)"(state-action value function)
$$\left{\begin{array}{ll}V_T\pi(x)=E_\pi[\frac{1}{T}\sum_{t=1}Tr_t|x_0=x], & \text{T步累積獎賞}\
V_\gamma\pi(x)=E_\pi[\sum_{t=0}{+\infty}\gamma^tr_{t+1}|x_0=x], & \gamma\text{折扣累計獎賞}
\end{array}
\right.$$
$$\left{\begin{array}{ll}Q_T\pi(x,a)=E_\pi[\frac{1}{T}\sum_{t=1}Tr_t|x_0=x,a_0=a], & \text{T步累積獎賞}\
Q_\gamma\pi(x,a)=E_\pi[\sum_{t=0}{+\infty}\gamma^tr_{t+1}|x_0=x,a_0=a], & \gamma\text{折扣累計獎賞}
\end{array}
\right.$$
Bellman等式
$$
\begin{align}
V_T\pi(x)&=E_\pi[\frac{1}{T}\sum_{t=1}Tr_t|x_0=x]\
&=E_\pi[\frac{1}{T}r_1+\frac{T-1}{T}\frac{1}{T-1}\sum_{t=2}^Tr_t|x_0=x]\
&=\sum_{a\in A}\pi(x,a)\sum_{x'\in X}P_{x \rightarrow x'}^a(\frac{1}{T}R_{x \rightarrow x'}^a + \frac{T-1}{T}E_\pi[\frac{1}{T-1}\sum_{t=1}^{T-1}r_t|x_0=x'])\
&=\sum_{a\in A}\pi(x,a)\sum_{x'\in X}P_{x \rightarrow x'}^a(\frac{1}{T}R_{x \rightarrow x'}^a + \frac{T-1}{T}V_{T-1}^\pi(x')) \tag{1.1} \
V_{\gamma}^\pi(x)&=\sum_{a\in A}\pi(x,a)\sum_{x'\in X}P_{x \rightarrow x'}^a(R_{x \rightarrow x'}^a + \gamma V_{\gamma}^\pi(x')) \tag{1.2}
\end{align}
$$
P和R已知,才能進(jìn)行全概率展開,類似于動態(tài)規(guī)劃
停止準(zhǔn)則,設(shè)置一個閾值$\theta$滿足值函數(shù)的改變在一次迭代后改變小于$\theta$則停止$\max_{x\in X}|V(x)-V'(x)|<\theta$
通過狀態(tài)值函數(shù)V,就能直接計算出狀態(tài)-動作值函數(shù)
$$\left{\begin{array}{ll}Q_T^\pi(x,a)=\sum_{x'\in X}P_{x \rightarrow x'}^a(\frac{1}{T}R_{x \rightarrow x'}^a + \frac{T-1}{T}V_{T-1}^\pi(x'))\
Q_\gamma^\pi(x,a)=\sum_{x'\in X}P_{x \rightarrow x'}^a(R_{x \rightarrow x'}^a + \gamma V_{\gamma}^\pi(x'))\tag{1.3}
\end{array}
\right.$$
策略改進(jìn)####
對某個策略的累計獎賞進(jìn)行評估后,若發(fā)現(xiàn)它并非最有策略,則希望改進(jìn)。理想的策略應(yīng)能最大化累積獎賞
$$\pi^=\mathop{argmax}\pi\sum{x\in X}V^\pi(x)$$
一個強(qiáng)化學(xué)習(xí)任務(wù)可能有多個最優(yōu)策略,最有策略所對應(yīng)的值函數(shù)$V^$稱為最優(yōu)值函數(shù),即
$$\forall x \in X:V*(x)=V{\pi^}(x)$$
策略空間是所有狀態(tài)上所有動作的組合,共有$|A|^{|X|}$種不同的策略
將動作的求和改為取最優(yōu),公式(1.1)(1.2)
$$\left{\begin{array}{ll}V_T^(x)=\mathop{max}{a \in A}\sum{x'\in X}P_{x \rightarrow x'}^a(\frac{1}{T}R_{x \rightarrow x'}^a + \frac{T-1}{T}V_{T-1}^(x'))\
V_\gamma^(x)=\mathop{max}{a \in A}\sum{x'\in X}P_{x \rightarrow x'}^a(R_{x \rightarrow x'}^a + \gamma V_{\gamma}^(x')) \tag{1.4}
\end{array}
\right.$$
$$V^(x)=\mathop{max}{a \in A}Q{\pi}(x,a)$$
帶入公式(1.3)得到最優(yōu)Bellmann等式,其唯一解是最優(yōu)值函數(shù)
$$\left{\begin{array}{ll}Q_T^(x,a)=\sum{x'\in X}P_{x \rightarrow x'}^a(\frac{1}{T}R_{x \rightarrow x'}^a + \frac{T-1}{T}\mathop{max}{a' \in A}Q{T-1}^(x',a'))\
Q_\gamma^(x,a)=\sum_{x'\in X}P_{x \rightarrow x'}^a(R_{x \rightarrow x'}^a + \gamma \mathop{max}{a' \in A}Q{\gamma}^*(x',a'))\tag{1.5}
\end{array}
\right.$$
$$
\begin{equation}
\begin{array} {l}
V^\pi(x)&\leq Q^\pi(x,\pi'(x))\
&=\sum_{x'\in X}P_{x \rightarrow x'}^{\pi'(x)}(R_{x \rightarrow x'}^{\pi'(x)} + \gamma V^\pi(x'))\
&\leq\sum_{a\in A}\pi(x,a)\sum_{x'\in X}P_{x \rightarrow x'}^a(\frac{1}{T}R_{x \rightarrow x'}^a + \frac{T-1}{T}E_\pi[\frac{1}{T-1}\sum_{t=1}^{T-1}r_t|x_0=x'])\
&=\sum_{a\in A}\pi(x,a)\sum_{x'\in X}P_{x \rightarrow x'}^a(\frac{1}{T}R_{x \rightarrow x'}^a + \frac{T-1}{T}V_{T-1}^\pi(x')) \
V_{\gamma}^\pi(x)&=\sum_{a\in A}\pi(x,a)\sum_{x'\in X}P_{x \rightarrow x'}^a(R_{x \rightarrow x'}^a + \gamma V_{\gamma}^\pi(x')) \tag{1.2}
\end{array}
\end{equation}$$