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

1 强化学习

1、强化学习就是程序或智能体(agent)通过与环境不断地进行交互学习一个从环境到动作的映射,学习的目标就是使累计回报最大化。
2、强化学习是一种试错学习,因其在各种状态(环境)下需要尽量尝试所有可以选择的动作,通过环境给出的反馈(即奖励)来判断动作的优劣,最终获得环境和最优动作的映射关系(即策略)。

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

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

3 MDP基本元素

1、 sS :有限状态state集合,s表示某个特定状态;
2、 aA :有限动作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)+γsSp(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)+γsSp(s|s,π(s))Qπ(s,π(s))

5 最优值函数

V(s)=maxaA[R(s,a)+γsSp(s|s,a)V(s)]Q(s,a)=R(s,a)+γ(sSp(s|s,a))maxbAQ(s,a)

6 最优控制

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

π(s)=argmaxaA[R(s,a)+γsSp(s|s,a)V(s)]π(s)=argmaxaAQ(s,a)V(s)=maxaAQ(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)A1-ϵϵ

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

8 Q-learning算法

1、Q-learning算法结合了动态规划与蒙特卡洛方法的思想,使得学习更加高效。
2、假设对于状态动作对(s,a)基于t次采样估算出其值函数为:

Qπt(s,a)=1ti=1tri

在进行t+1次采样后,依据增量更新得到:
Qπt+1(s,a)=Qπt(s,a)+1t+1(rt+1Qπt(s,a))

然后,将 1t+1 替换成系数 α (步长),得到:
Qπt+1(s,a)=Qπt(s,a)+α(rt+1Qπ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+γmaxaQ(ϕj+1,a;θ)for terminal ϕj+1for non-terminal ϕj+1
            Perform a gradient descent step on (yiQ(ϕ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+γmaxaQ(ϕj+1,a;θ)for terminal ϕj+1for non-terminal ϕj+1 :使用Q-learning方法更新状态值函数的值(终止与非终止状态的更新不同)
9、Perform a gradient descent step on (yiQ(ϕj,aj;θ))2 according to equation 3:使用监督学习方法更新网络的参数

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python机器学习手册》是一本涵盖了Python机器学习相关知识的重要参考书。这本书主要包含了机器学习的基本概念、算法和应用实例。 首先,这本书对机器学习的基本概念进行了清晰的介绍。它从机器学习的定义、基本原理和分类开始,帮助读者全面了解机器学习的基础知识。同时,它还介绍了机器学习的一些核心概念,如监督学习、无监督学习、强化学习等,帮助读者建立起对机器学习的整体认识。 其次,这本书详细讲解了各种常见的机器学习算法。例如,它介绍了线性回归、逻辑回归、决策树、支持向量机、朴素贝叶斯等算法的原理和应用场景,帮助读者了解不同算法的优缺点及适用范围。同时,这本书还涵盖了深度学习相关内容,如神经网络、卷积神经网络和循环神经网络等,让读者能够全面掌握不同类型的机器学习算法。 此外,这本书还提供了大量的实战案例和代码示例,帮助读者深入理解机器学习应用。读者可以通过这些实例了解机器学习在图像识别、文本分类、推荐系统等领域的具体应用方法。同时,书中的代码示例也有助于读者在实际应用中快速上手,提升自己的实践能力。 总之,这本《Python机器学习手册》是一本全面介绍Python机器学习知识的好书。它不仅可以作为初学者入门的指南,还能作为资深开发者的参考手册。通过阅读这本书,读者可以系统地学习和掌握机器学习的基本概念、算法和实践技巧,提升自己在机器学习领域的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值