• DQN(Deep Q-learning)入门教程(一)之强化学习介绍


    什么是强化学习?

    强化学习(Reinforcement learning,简称RL)是和监督学习,非监督学习并列的第三种机器学习方法,如下图示:

    首先让我们举一个小时候的例子:

    你现在在家,有两个动作选择:打游戏读书。如果选择打游戏的话,你就跑到了网吧,选择读书的话,就坐在了书桌面前。你爸妈下班回家,如果发现你在网吧,就会给你一套社会主义的铁拳,如果你在书桌面前的话,就会买根棒棒糖给你吃。

    首先,你在家的时候并不知道选择哪一个动作,因此你可能会选择study或者game。但是,当你接受了多次社会主义的毒打和奖励棒棒糖之后,你会发现选择game会得到惩罚,选择study你会得到奖励。因此当你再次处于”home“状态时,你就会偏向于选择“study”。(这便是强化学习!!)

    强化模型可以建模如下:

    以上面的为例子,对如下进行说明:

    • Agent:Agent也就是执行个体,我们可以操作执行个体做出不同的选择(也就是动作Action)。

      图中的“你”

    • Environment:我们研究的环境,它有一个一个的状态(State)。

      图中你所处的位置状态:网吧or书桌

    • Action:当Agent做出动作(action)的时候,环境会发生改变也就是State会发生改变。

      选择Study或者Game后你会处于书桌或者网吧的状态

    • Reward:当State发生改变时,环境会给予一定的奖励(奖励可为正负)。

      拳头or棒棒糖

    总的来说,就是Agent在(t)时刻处于(s_t)状态,它会做出某一个动作(a_i),导致(t+1)的状态为(s_{t+1}),同时在(t+1)时刻得到的奖励为(R_{t+1})

    接下来我们再介绍强化学习中稍微复杂一点的概念。这些概念是以后的基础,也比较简单,很容易理解。

    策略(Policy)(pi)

    当Agent处于某一个state的时候,它做的Action是不确定的,例如你可以选择study也可以选择game,也就是说你在某一个状态是以一定的概率去选择某一个action。也就是说,策略的选择是一个条件概率(pi(a|s)),这里的(pi)与数序中的(pi)没有任何关系,他只是代表一个函数而已(因此也可以写作(f(a|s)))。

    [pi(a|s) = P(A_t=a | S_t=s) ]

    此函数代表:在状态(s)时采取动作(a)的概率分布。

    价值(value)

    前面我们说到过奖励,当Agent在(t)时刻执行某个动作时,会得到一个(R_{t+1})。我们可以想一下蝴蝶效应,这个Action会影响(R_{t+1}),那么他会不会影响(R_{t+2},R_{t+3}……R_{t+n})呢?很可能会的,比如说在电游中,你所做的某个选择肯定会对接下来的游戏产生影响,这个影响可以深远,也可以没那么深渊(对,我说的就是隐形守护者,mmp),因此状态价值函数可以表示为:

    [v_{pi}(s) = mathbb{E}_{pi}(R_{t+1} + gamma R_{t+2} + gamma^2R_{t+3}+...|S_t=s) ]

    (v_{pi}(s))与策略函数(pi)有关,可以理解为当Agent以策略(pi)运行时,状态(s)的价值是多少。也就是在此状态下,我能够得到多少回报。

    在后面我们会详细的对这个函数进行分析。

    $ gamma$ 奖励衰减因子

    在上面的价值函数中,有一个变量(gamma) ,即奖励衰减因子,在[0,1]之间。如果为0,则是贪婪法,即价值只由当前的奖励决定,如果是1,则所有的后续状态奖励和当前奖励一视同仁。一般来说取0到1之间的数。

    环境的状态转化模型

    由于在某个状态下,执行一定的action,能够达到新的一个状态(state_{t+1}),但是(state_{t+1})不一定是唯一的。环境的状态转化模型,可以理解为一个概率状态机,它是一个概率模型,即在状态(t)下采取动作(a),转到下一个状态(s')的概率,表示为(P_{ss'}^a)

    探索率(epsilon)

    怎么说的探索率呢?它主要是为了防止陷入局部最优。比如说目前在(s_1)状态下有两个(a_1,a_2)。我们通过计算出,发现执行(a_1)的动作比较好,但是为了防止陷入局部最优,我们会选择以 (epsilon) 的概率来执行(a_2),以(1 - epsilon) 的概率来执行(a_1)。一般来说,(epsilon) 随着训练次数的增加而逐渐减小。

    马尔科夫决策过程(MDP)

    前面我们说过某个状态执行action可以转换成另外一个state,可以用概率表示为:(P_{ss'}^a)。那么这个概率与什么有关呢?认真的考虑下,毋庸置疑,与目前的状态(s_t和a)有关,但是同样,它可能也与上一个状态(s_{t-1}),上上个状态(s_{t-2})……有关,但是如果真的这样考虑,就复杂了。

    因此我们将问题进行一定的简化,简化的方法就是假设状态转化的马尔科夫性,也就是假设转化到下一个状态(s')的概率仅与当前状态(s)有关,与之前的状态无关(也就是说未来与当前有关,与过去无关)。用公式表示就是:

    [P_{ss'}^a = mathbb{P}(S_{t+1}=s'|S_t=s, A_t=a) ]

    同时对于针对于策略 (pi) 我们也做MDP假设,也就是说,当前Agent所作的策略仅仅与当前状态有关,与以前的状态都没有关系,因此:

    [pi(a|s) = P(A_t=a | S_t=s) ]

    同样针对于价值函数(v),有:

    [v_{pi}(s) = mathbb{E}_{pi}(R_{t+1} + gamma R_{t+2} + gamma^2R_{t+3}+...|S_t=s) ]

    价值函数与Bellman方程

    之所以我们来分析这个价值函数,是因为它是强化学习的核心,为什么Agent能够自动学习,自动选择某一个Action,其中一个量化标准就是它:

    [v_{pi}(s) = mathbb{E}_{pi}(R_{t+1} + gamma R_{t+2} + gamma^2R_{t+3}+...|S_t=s) ]

    令:

    [egin{equation}G_{t}=R_{t+1}+gamma R_{t+2}+ldots=sum_{k=0}^{infty} gamma^{k} R_{t+k+1}end{equation} ]

    (G_t)代表Return,代表Agent从某一个状态(S_t)开始直到终止状态时所有奖励的有衰减的之和。

    则有:

    [v_{pi}(s) = mathbb{E}_{pi}(G_t|S_t=s) ]

    So:

    [egin{equation}egin{aligned} v_{pi}(s) &=mathbb{E}_{pi}left(R_{t+1}+gamma R_{t+2}+gamma^{2} R_{t+3}+ldots | S_{t}=s ight) \ &=mathbb{E}_{pi}left(R_{t+1}+gammaleft(R_{t+2}+gamma R_{t+3}+ldots ight) | S_{t}=s ight) \ &=mathbb{E}_{pi}left(R_{t+1}+gamma G_{t+1} | S_{t}=s ight) \ &=mathbb{E}_{pi}left(R_{t+1}+gamma v_{pi}left(S_{t+1} ight) | S_{t}=s ight) end{aligned}end{equation} ]

    因此:

    [v_pi(s)=mathbb{E}left[R_{t+1}+gamma vleft(S_{t+1} ight) | S_{t}=s ight] ]

    上述方程便是Bellman方程的基本形态。因此我们可以知道,当前状态的价值与奖励(R_{t+1})和下一个状态的价值有关。

    动作价值函数

    这里再说一下动作价值函数,它代表着在当前state下,做某一个action的价值:

    [q_{pi}(s,a) = mathbb{E}_{pi}(G_t|S_t=s, A_t=a) = mathbb{E}_{pi}(R_{t+1} + gamma R_{t+2} + gamma^2R_{t+3}+...|S_t=s,A_t=a) ]

    同样,我们利用Bellman方程,可以将上式转化成:

    [q_{pi}(s,a) = mathbb{E}_{pi}(R_{t+1} + gamma q_{pi}(S_{t+1},A_{t+1}) | S_t=s, A_t=a) ]

    动作价值函数与状态价值函数之间可以相互进行转化:

    [v_{pi}(s) = sumlimits_{a in A} pi(a|s)q_{pi}(s,a) \ q_{pi}(s,a) = R_s^a + gamma sumlimits_{s' in S}P_{ss'}^av_{pi}(s') ]

    图示说明如下:图来自(强化学习(二)马尔科夫决策过程(MDP)

    综上可得:

    [egin{equation}egin{aligned} v_{pi}(s) &=sum_{a in A} pi(a | s)left(R_{s}^{a}+gamma sum_{s^{prime} in S} P_{s s^{prime}}^{a} v_{pi}left(s^{prime} ight) ight) \ q_{pi}(s, a) &=R_{s}^{a}+gamma sum_{s^{prime} in S} P_{s s^{prime}}^{a} sum_{a^{prime} in A} pileft(a^{prime} | s^{prime} ight) q_{pi}left(s^{prime}, a^{prime} ight) end{aligned}end{equation} ]

    总结

    OK,强化学习的入门介绍就到这里,通过这篇博客,我们知道了:

    • 策略 (pi) :表示在某一个状态下,action的概率分布函数(pi(a|s) = P(A_t=a | S_t=s))

    • (gamma) :奖励衰减因子,表示后续奖励的占比

    • 探索率(epsilon):表示Agent以 (epsilon) 的概率来随机选择action

    • 状态转化模型:表示执行某个action后,状态变化的概率函数(P_{ss'}^a = mathbb{P}(S_{t+1}=s'|S_t=s, A_t=a))

    • 状态价值函数:表示 (t) 时刻的状态 (s_{t}) 能获得的未来回报(return)的期望(v_pi(s)=mathbb{E}left[R_{t+1}+gamma left(S_{t+1} ight) | S_{t}=s ight])

    • 动作价值函数:表示 (t) 时刻的状态 (s),选择一个 action 后能获得的未来回报(return)的期望

      (q_{pi}(s,a) = mathbb{E}_{pi}(R_{t+1} + gamma q_{pi}(S_{t+1},A_{t+1}) | S_t=s, A_t=a))

    参考

  • 相关阅读:
    WSGI 简介
    past.deploy
    python中self和cls
    heat template例子
    cinder-api 启动过程学习
    ubuntu安装cloud-init制作成openstack镜像---cloud-init篇
    sus 11.3如何安装与配置cloud-init
    DHCP工作原理
    交换
    路由器
  • 原文地址:https://www.cnblogs.com/xiaohuiduan/p/12945449.html
Copyright © 2020-2023  润新知