您的位置:首页 > 编程语言 > Python开发

Python机器学习应用 | 强化学习

2017-07-02 17:56 330 查看

1 强化学习

1、强化学习就是程序或智能体(agent)通过与环境不断地进行交互学习一个从环境到动作的映射,学习的目标就是使累计回报最大化。

2、强化学习是一种试错学习,因其在各种状态(环境)下需要尽量尝试所有可以选择的动作,通过环境给出的反馈(即奖励)来判断动作的优劣,最终获得环境和最优动作的映射关系(即策略)。

2 马尔可夫决策过程(MDP)

马尔可夫决策过程(Markov Decision Process)通常用来描述一个强化学习问题,智能体agent根据当前环境的观察采取动作获得环境的反馈,并使环境发生改变的循环过程。



3 MDP基本元素

1、s∈S:有限状态state集合,s表示某个特定状态;

2、a∈A:有限动作action集合,a表示某个特定动作;

3、T(S,a,S′) Pr(s′|s,a):状态转移模型,根据当前状态s和动作a预测下一个状态s,这里的Pr表示从s采取行动a转移到s′的概率;

4、R(s,a):表示agent采取某个动作后的即时奖励,它还有R(s,a,s′),R(s)等表现形式;

5、Policy π(s)→a:根据当前state来产生action,可表现为a=π(s)或π(a|s)=P(a|s),后者表示某种状态下执行某个动作的概率。

4 值函数

状态值函数V表示执行策略π能得到的累计折扣奖励:

Vπ(s)=E[R(s0,a0)+γR(s1,a1)+γ2R(s2,a2)+...|s=s0]

即:

Vπ(s)=R(s,a)+γ∑s′∈Sp(s′|s,π(s))Vπ(s′)

状态动作值函数Q(s,a)表示在状态s下执行动作a能得到的累计折扣奖励:

Qπ(s,a)=E[R(s0,a0)+γR(s1,a1)+γ2R(s2,a2)+...|s=s0,a=a0]

即:

Qπ(s,a)=R(s,a)+γ∑s′∈Sp(s′|s,π(s))Qπ(s′,π(s′))

5 最优值函数

V∗(s)=maxa∈A[R(s,a)+γ∑s′∈Sp(s′|s,a)V∗(s′)]Q∗(s,a)=R(s,a)+γ(∑s′∈Sp(s′|s,a))maxb∈AQ∗(s′,a)

6 最优控制

在得到最优值函数之后,可以通过值函数的值得到状态s时应该采取的动作a:

π(s)=argmaxa∈A[R(s,a)+γ∑s′∈Sp(s′|s,a)V∗(s′)]π(s)=argmaxa∈AQ∗(s,a)V∗(s)=maxa∈AQ∗(s,a)

7 蒙特卡洛强化学习

1、在现实的强化学习任务中,环境的转移概率、奖励函数往往很难得知,甚至很难得知环境中有多少状态。若学习算法不再依赖于环境建模,则称为免模型学习,蒙特卡洛强化学习就是其中的一种。

2、蒙特卡洛强化学习使用多次采样,然后求取平均累计奖赏作为期望累计奖赏的近似。

3、蒙特卡洛强化学习:直接对状态动作值函数Q(s,a)进行估计,每采样一条轨迹,就根据轨迹中的所有“状态-动作”利用下面的公式对来对值函数进行更新。

Q(s,a)=Q(s,a)∗count(s,a)+Rcount(s,a)+1

4、每次采样更新完所有的“状态-动作”对所对应的Q(s,a),就需要更新采样策略π。但由于策略可能是确定性的,即一个状态对应一个动作,多次采样可能获得相同的采样轨迹,因此需要借助ϵ贪心策略:

π(s,a)={argmaxaQ(s,a)随机从A中选取动作以概率1-ϵ以概率ϵ

5、蒙特卡洛强化学习算法需要采样一个完整的轨迹来更新值函数,效率较低,此外该算法没有充分利用强化学习任务的序贯决策结构。

8 Q-learning算法

1、Q-learning算法结合了动态规划与蒙特卡洛方法的思想,使得学习更加高效。

2、假设对于状态动作对(s,a)基于t次采样估算出其值函数为:

Qπt(s,a)=1t∑i=1tri

在进行t+1次采样后,依据增量更新得到:

Qπt+1(s,a)=Qπt(s,a)+1t+1(rt+1−Qπt(s,a))

然后,将1t+1替换成系数α(步长),得到:

Qπt+1(s,a)=Qπt(s,a)+α(rt+1−Qπt(s,a))

3、以γ折扣累计奖赏为例:

rt+1=Ras+γQπt(s′,a′)

则值函数的更新方式如下:

Qπt+1(s,a)=Qπt(s,a)+α(Ras+γQπt(s′,a′)−Qπt(s,a))

9 Q-learning算法流程

输入:环境E;动作空间A;起始状态s0;奖励折扣γ;更新步长α;

过程:

1:Q(s,a)=0,π(s,a)=1|A|;

2:s=s0;

3:fort=1,2,...do

4: r,s′=在E中执行动作πϵ(s)产生的奖赏和转移的状态;

5: a=π(s′);

6: Q(s,a)=Q(s,a)+α(r+γQ(s′,a′)−Q(s,a));

7: π(s)=argmaxa"Q(s,a");

8: s=s′,a=a′;

9:end for

输出:策略π

10 Deep Q Network(DQN)

1、Deep Q Network(DQN):是将神经网络(neural network) 和Qlearning结合,利用神经网络近似模拟函数Q(s,a),输入是问题的状态(e.g.,图形),输出是每个动作a对应的Q值,然后依据Q值大小选择对应状态执行的动作,以完成控制。

2、神经网络的参数:应用监督学习完成

11 DQN学习过程



1.状态s输入,获得所有动作对应的Q值Q(s,a);

2.选择对应Q值最大的动作a'并执行;

3.执行后环境发生改变,并能够获得环境的奖励γ;

4.利用奖励γ更新Q(s,a')–强化学习利用新的Q(s,a')更新网络参数—监督学习

12 DQN算法流程

Algorithm 1 Deep Q-learning with Experience Replay

Initialilze replay memory D to capacity N

Initialize action-value function Q with random weights

for episode = 1,M do

Initialise sequence s1={x1} and preporcessed sequeced ϕ1=ϕ(s1)

for t=1,T do

With probability ϵ select a random action at

otherwise select at=maxaQ∗(ϕ(st),a;θ)

Execute action at in emulator and observe reward rt and image xt+1

Set st+1=st,at,xt+1 and preprocess ϕt+1=ϕ(st+1)

Store transition (ϕt,at,rt,ϕt+1) in D

Sample random minibatch of transitions (ϕj,aj,rj,ϕj+1) from D

Set yj={rjrj+γmaxa′Q(ϕj+1,a′;θ)for terminal ϕj+1for non-terminal ϕj+1

Perform a gradient descent step on (yi−Q(ϕj,aj;θ))2 according to equation 3

end for

end for

部分流程解释:

1、Initialilze replay memory D to capacity N:初始化D:用于存放采集(St,at,rt,St+1)的状态转移过程,用于网络参数的训练

2、Initialize action-value function Q with random weights:随机初始化神经网络的参数

3、Initialise sequence s1={x1} and preporcessed sequeced ϕ1=ϕ(s1):获取环境的初始状态(x是采集的图像,使用图像作为agent的状态;预处理过程是说,使用4张图像代表当前状态,这里可以先忽略掉)

4、otherwise select at=maxaQ∗(ϕ(st),a;θ):epsilon贪心策略:使用epsilon概率随机选取动作或1- epsilon的概率根据神经网络的输出选择动作

5、Execute action at in emulator and observe reward rt and image xt+1:在模拟器中执行选定的动作,获得奖励γt和一个观察xt+1

6、Store transition (ϕt,at,rt,ϕt+1) in D:设置St+1,并将状态(St,at,rt,St+1)转移过程存放在D中

7、Sample random minibatch of transitions (ϕj,aj,rj,ϕj+1) from D:从D中进行随机采样,获得一部分状态转移过程历史信息

8、Set yj={rjrj+γmaxa′Q(ϕj+1,a′;θ)for terminal ϕj+1for non-terminal ϕj+1:使用Q-learning方法更新状态值函数的值(终止与非终止状态的更新不同)

9、Perform a gradient descent step on (yi−Q(ϕj,aj;θ))2 according to equation 3:使用监督学习方法更新网络的参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: