眾所周知,當AlphaGO戰(zhàn)勝了世界圍棋冠軍李世石之后,整個工業(yè)界都為之振奮,越來越多的學者意識到強化學習在人工智能領域是一個非常令人exciting的。在此我就分享一下本人的強化學習學習筆記。
強化學習基本概念
機器學習可以分為三類,分別是 supervised learning,unsupervised learning 和reinforcement learning。而強化學習與其他機器學習不同之處為:
- 沒有教師信號,也沒有l(wèi)abel。只有reward,其實reward就相當于label。
- 反饋有延時,不是能立即返回。
- 相當于輸入數(shù)據(jù)是序列數(shù)據(jù)。
agent執(zhí)行的動作會影響之后的數(shù)據(jù)。
強化學習的關鍵要素有:environment,reward,action 和 state。有了這些要素我們就能建立一個強化學習模型。強化學習解決的問題是,針對一個具體問題得到一個最優(yōu)的policy,使得在該策略下獲得的reward最大。所謂的policy其實就是一系列action。也就是sequential data。
強化學習可用下圖來刻畫,都是要先從要完成的任務提取一個環(huán)境,從中抽象出狀態(tài)(state) 、動作(action)、以及執(zhí)行該動作所接受的瞬時獎賞(reward)。
reward
reward通常都被記作Rt,表示第t個time step的返回獎賞值。所有強化學習都是基于reward假設的。reward是一個scalar。
action
action是來自于動作空間,agent對每次所處的state用以及上一狀態(tài)的reward確定當前要執(zhí)行什么action。執(zhí)行action要達到最大化期望reward,直到最終算法收斂,所得的policy就是一系列action的sequential data。
state
就是指當前agent所處的狀態(tài)。具體來講,例如玩pong游戲,該游戲的狀態(tài)就是當前time step下小球的位置。而Flappy bird狀態(tài)就是當前小鳥在平面上的位置。
policy
policy就是只agent的行為,是從state到action的映射,分為確定策略和與隨機策略,確定策略就是某一狀態(tài)下的確定動作a=π(s), 隨機策略以概率來描述,即某一狀態(tài)下執(zhí)行這一動作的概率:π(a|s)=P[At=a|St=s]。
value function
因為強化學習今本上可以總結(jié)為通過最大化reward來得到一個最優(yōu)策略。但是如果只是瞬時reward最大會導致每次都只會從動作空間選擇reward最大的那個動作,這顯然不是我們想要的,所以為了很好地刻畫是包括未來的當前reward值最大(即使從當前時刻開始一直到狀態(tài)達到目標的總reward最大)。因此就夠早了值函數(shù)(value function)來描述這一變量。表達式如下:
γ是一個取值在[0,1]的數(shù),就是為了減少未來的reward對當前動作的影響。然后就通過選取合適的policy使value function最大,稍后會為大家推導著名的bellman方程,bellman方程才是強化學習各大算法(e.g. 值迭代,策略迭代,Q-learning)的源頭。
model
model就是用來預測環(huán)境接下來會干什么,即在這一狀態(tài)的情況下執(zhí)行某一動作會達到什么樣的狀態(tài),這一個動作會得到什么reward。所以描述一個模型就是用動作轉(zhuǎn)移概率與動作狀態(tài)reward。具體公式如下:
馬爾可夫決策過程(MDP)
大家應該都很熟悉馬爾科夫過程,其實就是狀態(tài)以及某狀態(tài)的轉(zhuǎn)移,最重要的就是一步轉(zhuǎn)移概率矩陣,只要有了這個一步轉(zhuǎn)移概率矩陣就能刻畫整個馬爾科夫過程。
下面就來介紹一下馬爾可夫決策過程(MDP)它主要由以下幾個變量來刻畫,狀態(tài)幾何S(是一個有限集合),動作空間A(一個有限動作集合),狀態(tài)轉(zhuǎn)移概率矩陣P,獎賞函數(shù)R 以及折扣因子γ(γ∈[0,1])。
下面介紹一個MDP常用的用來刻畫獎賞的函數(shù)。
1.return Gt
t時刻之后未來執(zhí)行一組action后能夠獲得的reward,即t+1,t+2…所有時刻的reward之和。(未來時刻的reward在當前時刻體現(xiàn)),后面的reward要乘以discountγ 系數(shù)。表達式如下:
2.狀態(tài)值函數(shù)v(s)
定義為t時刻狀態(tài)S能獲得的return的期望,表達式如下:
3.動作值函數(shù)qπ(s,a)
t時刻狀態(tài)S下選擇特定action后能獲得的return的期望,表達式如下:
下面來講解一下最著名的bellman方程的推導,首先推導如何迭代值函數(shù),即更新值函數(shù):
1.value function
v(s)=E[Gt|St=s]=E[Rt+1+γ(Rt+2+γRt+3+...)|St=s]=E[Rt+1|St=s]+γE[Gt+1|St=s]=ERs+γ∑Gt+1P[Gt+1|St=s]=ERs+γ∑Gt+1∑s′P[Gt+1|St+1=s′,St=s]?P[St+1=s′|St=s]=ERs+γ∑s′∈Sv(s′)Pss′
2.Q-value function
∵v(s)=E[Gt|St=s]=∑a∈AP[At=a|St=s]?E[Gt|St=s,At=a]=π(a|s)qπ(s,a)qπ(s,a)=Ras+γE[Gt+1|St=s,At=a]=Ras+γ∑s′∈SE[Gt+1|St+1=s′,St=s,At=a]P[St+1=s′|St=s,At=a]=Ras+γ∑s′∈SPass′E[Gt+1|St+1=s′]=Ras+γ∑s′∈SPass′vπ(s′)
有1與2的推導就可以得到著名的bellman方程,強化學習的算法迭代都是基于此方程的。如下:
這就是bellman方程,通??梢杂靡幌路椒ㄇ蠼鈈ellman方程,如:值迭代、策略迭代、Q-learning、Sarsa等。
下面舉一個例子:(狀態(tài)圖如下)
可通過bellman具體求得一個最佳策略。本人用matlab實現(xiàn)了以下,代碼如下:
主函數(shù):
clear
close all
clc
P = [0.9 0.1 0 0 0 0 0;
0.5 0 0.5 0 0 0 0;
0 0 0 0.8 0 0.2 0;
0 0 0 0 0.6 0 0.4;
0 0 0 0 0 1 0;
0 0 0 0 0 1 0;
0 0.2 0.4 0.4 0 0 0];
gamma = 1;
R = [-1 -2 -2 -2 10 0 1];
%% update iteration
maxiteration = 200;
V = zeros(size(P,2), maxiteration);
i = 1;
while i <= maxiteration
v = zeros(size(P,1),1);
for j = 1:7
v(j) = bellman_equ(gamma,P(j,:),R(j),V(:,i));
end
V(:,i+1) = v;
i = i+1;
end
plot(V'), title('MRP');
legend('Facebook','class1','class2','class3','pass','sleep','pub');
axis([0,210,-25,12])
grid on;
V(:,size(V,2))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
bellman equation:
function v = bellman_equ(gamma,P,R,v_old)
v = R + gamma*P*v_old;
end
本次課程就更新到這里,希望能幫助到大家。
|