精华内容
下载资源
问答
  • 2020-08-16 20:14:34

    强化学习的特点

    在这里插入图片描述
    强化学习中必备的三个要素是策略、收益信号和价值函数。

    1. 策略定义了智能体Agent在特定时间的行为方式(action);
    2. 收益信号定义了强化学习问题中的目标,主要根据环境(Environment)向智能体Agent返回的收益(reward)对策略进行调整;
    3. 不同于表示即时收益的收益信号,价值函数表示未来可以累积的总收益的期望

    强化学习中并非必须的要素是环境模型,即给定一个状态 s t s_t st和动作 r t r_t rt就能够预测外部环境的下一个状态 s t + 1 s_{t+1} st+1和下一个收益 r t + 1 r_{t+1} rt+1的模型。根据是否具有环境模型这一要素,可以将强化学习划分为无模型方法和有模型方法。

    根据大佬的定义,强化学习就是学习“做什么(即如何把当前的情境映射成动作)才能使得数值化的收益信号最大化”。简单来说,强化学习通过与环境的交互/试错不断学习、更新模型从而达到长期目标。

    综上,强化学习试图解决的是决策优化问题,即在特定状态(state)下,采取何种⾏动⽅案(action),才能使收益最⼤(reward)。

    强化学习 vs. 动态规划

    序贯决策问题中的经典优化算法如动态规划,也可以用于根据当前的状态决定下一步的行动,例如经典的最短路问题。动态规划中需要输入整个过程中完整、明确的信息(最短路问题中包括哪些路径以及每一条路径的成本),即需要很多先验知识。然而,强化学习中则不需要这些先验知识

    强化学习 vs. 博弈论

    博弈论也是一个和强化学习类似的研究领域,例如,在一些棋类游戏中,我们可以通过博弈论计算出当前的最优动作。然而,经典的博弈论使用了“极大极小”的假设,即假设了对手会按照某种特定的方式来下棋,这一假设与现实情况并不相同,即使是高手也存在出错的可能性。强化学习中则没有使用类似的假设,更加符合真实的应用场景。

    强化学习 vs. 有监督学习

    有监督学习是当前机器学习领域中的常用模型,从外部监督者提供的带标注训练集中进行学习。每一个样本都是关于情境和标注的描述,标注中给出了针对当前情境,系统应该做出的正确动作,也可以看作是对当前情境进行分类的所属类别标签,从而能够让系统具备推断或者泛化能力,已经取得了成功。

    有监督学习所要解决的是智能感知的问题,而强化学习所要解决的则是智能决策的问题。例如,在数字手写体识别中,有监督学习根据输入的大量带有标签的图片来识别数字,即学习”输⼊“长得像什么(特征),以及与该长相一一对应的是什么(标签)。然而,在atari游戏中,强化学习则不关心当前状态的图片是什么,而是只关心在当前状态下选择何种行动能够使得总收益最大。

    强化学习和有监督学习的共同点是两者都需要⼤量的数据进⾏训练,但是两者所需要的数据类型不同。有监督学习需要的是多样化的标签数据,强化学习需要的是带有回报的交互数据

    虽然强化学习和有监督学习之间存在差异,但是两种范式也可以融合。当状态空间是连续值,即状态空间的取值范围非常大时,例如在西洋双陆棋中大约有 1 0 20 10^{20} 1020种状态,我们便不可能再通过遍历这些状态,哪怕是遍历其中很小的一部分来对模型进行训练。考虑到神经网络能够为程序提供从经验中进行归纳的能力,因此在新的状态中,根据保存的过去遇到的相似状态的信息来选择动作,并由神经网络来做出最终决策便成为了解决这类问题的一种方案。在这一思路下,在强化学习中引入深度学习(有监督学习)便成为了一大研究的方向。

    强化学习 vs. 无监督学习

    既然强化学习不属于有监督学习,那么是否属于无监督学习呢?

    无监督学习是一类典型的寻找未标注数据中隐含结构的过程,在这一过程中不依赖于每个样本对应的标注。例如,在聚类问题中,根据样本所具有的特征,可以将样本分为K个类,而在这一过程中并不涉及样本所对应的标注。

    尽管强化学习也不依赖于每个样本的标注,但是强化学习的目的是最大化收益信号,而不是找出数据的隐含结构,即两种学习范式的学习目标不同。

    强化学习 vs. 进化算法

    在解决智能决策问题的方法,还存在着许多进化算法,如遗传算法、模拟退火等。这些算法采取大量静态策略,每个策略在扩展过的较长时间内与环境的一个独立实例进行交互,选择获取了最多收益的策略及其变种来产生下一代策略,然后继续循环更新。

    和强化学习相比,进化算法中没有显示地计算价值函数,即忽略了智能体Agent与环境之间的交互细节。因此,进化算法只考虑这个策略的最终结果,例如在下棋情境下,只要这句比赛获胜就认为比赛中所有动作都有功劳,而与每一步具体动作的关键程度无关,而强化学习则可以评估策略对单个状态的回报,即考虑了交互过程中的诸多细节,会更加高效。

    更多相关内容
  • 为什么研究Dyna类型强化学习呢? 主要是因为这个类型强化学习是融合了model-based和model free两个类型强化学习。 Dyna 由于不可能精确和完美的拟合真正环境,纯基于模型的强化学习效果往往很差。那有没有什么...

    为什么研究Dyna类型的强化学习呢?
    主要是因为这个类型的强化学习是融合了model-based和model free两个类型的强化学习。
    主要参考的博客是这个。说实话,我也是时隔三天后,第三次看了这个博客才彻底明白的。至于为什么名师,是因为我中间分析了一下周莫凡的代码,同时我把这个博客最后的部分给看了,之前两次看这个博客之所以没看懂,第一是没有看代码,脑袋里没有具体的实现形式,第二个就是没仔细看文章。
    下面为了方便自己以后能随时过来看文章,我决定把他的博客直接搬到我这里。

    Dyna

    由于不可能精确和完美的拟合真正环境,纯基于模型的强化学习效果往往很差。那有没有什么办法可以在一定程度上避免这一点呢?
    那就把基于模型 + 不基于模型的强化学习结合起来吧!也就是Dyna算法框架了。

    它既在模型中学习,也在交互中学习。即Dyna框架在每个迭代轮中,会先和环境交互,并更新价值函数、策略函数,接着进行n次模型的模拟预测,同样更新价值函数、策略函数。这样同时利用上了和环境交互的经历以及模型的预测。

    根据描述,就需要有两个相互独立的模型,一个根据状态 s s s和动作 a a a得到下一个状态 s ’ s’ s策略函数),另一个根据当前状态 s s s和动作 a a a预测环境的奖励 r r r价值函数)。其中

    • s s s, a a a 学习 r r r 的预测过程是一个回归问题(regression problem)。
    • s s s, a a a 学习 s ’ s’ s 的选择过程是一个密度估计问题(density estimation problem)。

    Dyna-Q

    先看Dyna算法步骤:
    在这里插入图片描述
    具体解析步骤:

    • 先初始化状态 s s s和其任意动作 a a a所对应的状态价值 Q ( s , a ) Q(s,a) Q(s,a)
    • 初始化尝试要理解得到的模型 M o d e l ( s , a ) Model(s,a) Model(s,a)
      上 面 两 步 就 是 第 一 行 的 初 始 化 上面两步就是第一行的初始化
    • a)对于每一轮迭代,直接使用当前状态 S S S,
    • b)使用 ϵ-贪婪策略获取动作A, A < − e − g r e d d y ( S , Q ) A<-e-greddy(S,Q) A<egreddy(S,Q)
    • c)执行动作 A A A,得到新状态 S ’ S’ S和奖励 R R R
    • d)然后用Q-Learning更新价值函数 Q ( S , A ) Q(S,A) Q(S,A) Q ( S , A ) = Q ( S , A ) + α [ R + γ m a x a Q ( S ′ , a ) − Q ( S , A ) ] Q(S,A)=Q(S,A)+α[R+γmaxaQ(S′,a)−Q(S,A)] Q(S,A)=Q(S,A)+α[R+γmaxaQ(S,a)Q(S,A)]
    • e)用 R , S ’ R,S’ RS更新模型 M o d e l ( s , a ) Model(s,a) Model(sa)----
    • (与真实环境交互完毕后,进行n次模拟)
      • 每次模拟都随机选择一个之前出现过的状态 S S S, 并在此基础上随机选择一个动作 A A A
      • 基于模型 M o d e l ( S , A ) Model(S,A) Model(S,A)得到$S′ 和 和 R$
      • 再使用Q-Learning更新价值函数: Q ( S , A ) = Q ( S , A ) + α [ R + γ m a x a Q ( S ′ , a ) − Q ( S , A ) ] Q(S,A)=Q(S,A)+α[R+γmaxaQ(S′,a)−Q(S,A)] Q(S,A)=Q(S,A)+α[R+γmaxaQ(S,a)Q(S,A)]
        def learn(self):
            self.steps_per_episode = []
            for ep in range(self.episodes):
                while not self.maze.end:
                    action_index = self.choose_action()
                    self.state_actions.append((self.state, action_index))
                    nxtState, reward = self.maze.step(action_index)
                    # update Q-value
                    self.Q_values[self.state][action_index] += self.lr * (reward + np.max(list(self.Q_values[nxtState].values())) - self.Q_values[self.state][action])
                    # update model
                    if self.state not in self.model.keys():
                        self.model[self.state] = {}
                    self.model[self.state][action_index] = (reward, nxtState)
                    self.state = nxtState
                    # loop n times to randomly update Q-value
                    for _ in range(self.steps):
                        # randomly choose an state
                        rand_idx = np.random.choice(range(len(self.model.keys())))
                        _state = list(self.model)[rand_idx]
                        # randomly choose an action
                        rand_idx = np.random.choice(range(len(self.model[_state].keys())))
                        _action = list(self.model[_state])[rand_idx]
                        _reward, _nxtState = self.model[_state][_action]
                        self.Q_values[_state][_action] += self.lr * (_reward + np.max(list(self.Q_values[_nxtState].values())) - self.Q_values[_state][_action])
                        # end of game
                if ep % 10 == 0:
                    print("episode", ep)
                self.steps_per_episode.append(len(self.state_actions))
                self.reset()
    

    下面开始我的搬运工作,一字不差的搬运

    在前面我们讨论了基于价值的强化学习(Value Based RL)和基于策略的强化学习模型(Policy Based RL),本篇我们讨论最后一种强化学习流派,基于模型的强化学习(Model Based RL),以及基于模型的强化学习算法框架Dyna。
    本篇主要参考了UCL强化学习课程的第8讲和Dyna-2的论文。

    1 基于模型的强化学习简介

    基于价值的强化学习模型和基于策略的强化学习模型都不是基于模型的,它们从价值函数,策略函数中直接去学习,不用学习环境的状态转移概率模型,即在状态 s s s下采取动作 a a a,转到下一个状态 s ′ s′ s的概率 P s s ′ a P^{a}_{ss′} Pssa
    而基于模型的强化学习则会尝试从环境的模型去学习,一般是下面两个相互独立的模型:一个是状态转移概率预测模型P,输入当前状态 s s s和动作 a a a,预测下一个状态 s ′ s′ s。另一个是奖励预测模型R,输入当前状态 s s s和动作 a a a,预测环境的奖励 r r r。即模型可以描述为下面两个式子:
    ------------------------------------------ S t + 1 ∼ P ( S t + 1 ∣ S t , A t ) S_{t+1}\sim P(S_{t+1}|S_{t},A_{t}) St+1P(St+1St,At)
    ------------------------------------------ R t + 1 ∼ R ( R t + 1 ∣ R t , A t ) R_{t+1}\sim R(R_{t+1}|R_{t},A_{t}) Rt+1R(Rt+1Rt,At)
    如果模型 P P P, R R R可以准确的描述真正的环境的转移模型,那么我们就可以基于模型来预测,当有一个新的状态 S S S和动作 A A A到来时,我们可以直接基于模型预测得到新的状态和动作奖励,不需要和环境交互。当然如果我们的模型不好,那么基于模型预测的新状态和动作奖励可能错的离谱。

    从上面的描述我们可以看出基于模型的强化学习和不基于模型的强化学习的主要区别:即基于模型的强化学习是从模型中学习,而不基于模型的强化学习是通过环境交互的经历去学习。
    下面这张图描述了基于模型的强化学习的思路:
    在这里插入图片描述

    2. 基于模型的强化学习算法训练流程

    这里我们看看基于模型的强化学习算法训练流程,其流程和我们监督学习算法是非常类似的。
    假设训练数据是若干组这样的经历:
    S 1 , A 1 , R 2 , S 2 , A 2 , R 2 , . . . , S T S_1,A_1,R_2,S_2,A_2,R_2,...,S_T S1,A1,R2,S2,A2,R2,...,ST
    对于每组经历,我们可以将其转化为 T − 1 T−1 T1组训练样本,即:
    S 1 , A 1 → S 2 ; S 1 , A 1 → R 2 S_1,A_1→S_2;S_1,A_1→R_2 S1,A1S2S1,A1R2
    S 2 , A 2 → S 3 ; S 2 , A 2 → R 3 S_2,A_2→S_3;S_2,A_2→R_3 S2,A2S3S2,A2R3

    S T − 1 , A T − 1 → S T , S T − 1 , A T − 1 → R T S_{T−1},A_{T−1}→S_T,S_{T-1},A_{T−1}→R_T ST1,AT1ST,ST1,AT1RT
    右边的训练样本一起组成了一个分类模型或密度估计模型,输入状态和动作,输出下一个状态。 右边的训练样本一起组成了一个回归模型训练集,输入状态和动作,输出动作奖励值。
    Note:基于模型的强化学习在这边可以体现出来。搭建模型的方式有两种:

    1. 第一种是使用表格的形式将这些数据保存下来,以后使用这些模型致谢一查表的方式提取数据。
    2. 第二种方式是使用监督学习的方式训练一个对应的神经网络,然后使用神经网络预测这些模型。

    至此我们的强化学习求解过程和传统的监督学习算法没有太多区别了,可以使用传统的监督学习算法来求解这两个模型。

    当然还可以更简单,即通过对训练样本进行查表法进行统计,直接得到 P ( S t + 1 ∣ S t , A t ) P(S_{t+1}|S_t,A_t) P(St+1St,At)的概率和 R ( R t + 1 ∣ S t , A t ) R(R_{t+1}|S_t,A_t) R(Rt+1St,At)的平均值,这样就可以直接预测。比使用模型更简单。

    此外,还有其他的方法可以用来得到 P ( S t + 1 ∣ S t , A t ) P(S_{t+1}|S_t,A_t) P(St+1St,At) R ( R t + 1 ∣ S t , A t ) R(R_{t+1}|S_t,A_t) R(Rt+1St,At),这个我们后面再讲。

    虽然基于模型的强化学习思路很清晰,而且还有不要和环境持续交互优化的优点,但是用于实际产品还是有很多差距的。主要是我们的模型绝大多数时候不能准确的描述真正的环境的转化模型,那么使用基于模型的强化学习算法得到的解大多数时候也不是很实用。那么是不是基于模型的强化学习就不能用了呢?也不是,我们可以将基于模型的强化学习和不基于模型的强化学习集合起来,取长补短,这样做最常见的就是Dyna算法框架

    3. Dyna算法框架

    Dyna算法框架并不是一个具体的强化学习算法,而是一类算法框架的总称Dyna将基于模型的强化学习和不基于模型的强化学习集合起来,既从模型中学习,也从和环境交互的经历去学习,从而更新价值函数和(或)策略函数。如果用和第一节类似的图,可以表示如下图,和第一节的图相比,多了一个“Direct RL“的箭头,这正是不基于模型的强化学习的思路。
    在这里插入图片描述
    Dyna算法框架和不同的具体的不基于模型的强化学习一起,可以得到具体的不同算法。如果我们使用基于价值函数的Q-Learning,那么我们就得到了Dyna-Q算法。我们基于Dyna-Q来看看Dyna算法框架的一般流程.

    4. Dyna-Q算法流程

    这里我们给出基于价值函数的Dyna-Q算法的概要流程。假设模型使用的是查表法。

    1. 初始化任意一个状态 s s s,和任意一个动作 a a a对应的状态价值 Q ( s , a ) Q(s,a) Q(s,a), 初始化奖励模型 R ( s , a ) R(s,a) R(s,a)和状态模型 P ( s , a ) P(s,a) P(s,a)
    2. for i=1 to 最大迭代次数T:
      . a) S ← current state
      . b) A ← ϵ − g r e e d y ( S , Q ) ϵ−greedy(S,Q) ϵgreedy(S,Q)
      . c) 执行动作A,得到新状态 S ′ S^′ S和奖励R
      . d) 使用Q-Learning更新价值函数:(公式在下一行)
      Q ( S , A ) = Q ( S , A ) + α [ R + γ m a x a Q ( S ′ , a ) − Q ( S , A ) Q(S,A)=Q(S,A)+α[R+γmax_{a}Q(S^′,a)−Q(S,A) Q(S,A)=Q(S,A)+α[R+γmaxaQ(S,a)Q(S,A)
      . e) 使用 S , A , S ′ S,A,S^′ S,A,S更新状态模型 P ( s , a ) P(s,a) P(s,a),使用 S , A , R S,A,R S,A,R更新奖励模型 R ( s , a ) R(s,a) R(s,a)
      . f) for j=1 to 最大次数n:
           i) 随机选择一个之前出现过的状态S, 在状态S上出现过的动作中随机选择一个动作A
          ii) 基于模型 P ( S , A ) P(S,A) P(S,A)得到 S ′ S^′ S, 基于模型R(S,A)得到R
          iii) 使用Q-Learning更新价值函数:(公式在下一行)
           Q ( S , A ) = Q ( S , A ) + α [ R + γ m a x a Q ( S ′ , a ) − Q ( S , A ) ] Q(S,A)=Q(S,A)+α[R+γmax_{a}Q(S^′,a)−Q(S,A)] Q(S,A)=Q(S,A)+α[R+γmaxaQ(S,a)Q(S,A)]

    从上面的流程可以看出,Dyna框架在每个迭代轮中,会先和环境交互,并更新价值函数和(或)策略函数,接着进行n次模型的预测,同样更新价值函数和(或)策略函数。这样同时利用上了和环境交互的经历以及模型的预测。

    5. Dyna-2算法框架

    在Dyna算法框架的基础上后来又发展出了Dyna-2算法框架。和Dyna相比,Dyna-2将和和环境交互的经历以及模型的预测这两部分使用进行了分离。还是以Q函数为例,Dyna-2将记忆分为永久性记忆(permanent memory)和瞬时记忆(transient memory), 其中永久性记忆利用实际的经验来更新,瞬时记忆利用模型模拟经验来更新。
    永久性记忆的Q函数定义为:
    Q ( S , A ) = ϕ ( S , A ) T θ Q(S,A)=ϕ(S,A)^Tθ Q(S,A)=ϕ(S,A)Tθ
    瞬时记忆的Q函数定义为:
    Q ′ ( S , A ) = ϕ ˉ ( S , A ) T θ ˉ Q^′(S,A)=\bar{ϕ}(S,A)^T\bar{θ} Q(S,A)=ϕˉ(S,A)Tθˉ
    组合起来后记忆的Q函数定义为:
    Q ˉ ( S , A ) = ϕ ( S , A ) T θ + ϕ ˉ ( S , A ) T θ ˉ \bar{Q}(S,A)=ϕ(S,A)^Tθ+\bar{ϕ}(S,A)^T\bar{θ} Qˉ(S,A)=ϕ(S,A)Tθ+ϕˉ(S,A)Tθˉ
    Dyna-2的基本思想是在选择实际的执行动作前,智能体先执行一遍从当前状态开始的基于模型的模拟,该模拟将仿真完整的轨迹,以便评估当前的动作值函数。智能体会根据模拟得到的动作值函数加上实际经验得到的值函数共同选择实际要执行的动作。价值函数的更新方式类似于SARSA(λ).

    Dyna-2是将环境交互的经历以及模型的预测进行了分离。即不是像Dyna一样交互完了就拿来模模拟,而是对于Q函数将被分为永久性记忆 Q ( S , A ) Q(S,A) Q(S,A)和瞬时记忆 Q ′ ( S , A ) Q^{'}(S,A) Q(S,A)。其中永久性记忆利用与实际环境的交互经验来更新瞬时记忆利用与模型的模拟交互来更新。然后两者结合起来共同 对作用起选择。

    以下是Dyna-2的算法流程:

    6. 基于模型的强化学习总结

    基于模型的强化学习一般不单独使用,而是和不基于模型的强化学习结合起来,因此使用Dyna算法框架是常用的做法对于模型部分,我们可以用查表法和监督学习法等方法,预测或者采样得到模拟的经历。而对于非模型部分,使用前面的Q-Learning系列的价值函数近似,或者基于Actor-Critic的策略函数的近似都是可以的。

    除了Dyna算法框架,我们还可以使用基于模拟的搜索(simulation-based search)来结合基于模型的强化学习和不基于模型的强化学习,并求解问题。这部分我们在后面再讨论。

    展开全文
  • 强化学习和监督学习的区别:1)强化学习的样本通过不断环境进行交互产生,即试错学习,而监督学习的样本由人工收集并标注;2)强化学习的反馈信息只有奖励,并且是延迟的,而监督学习需要明确的指导信息(每一个...

    机器学习主要类型(四):强化学习 Reinforcement Learning

    强化学习和监督学习的不同在于,强化学习问题不需要给出“正确”策略作为监督信息,只需要给出策略的(延迟)回报,并通过调整策略来取得最大化的期望回报

    强化学习和监督学习的区别:1)强化学习的样本通过不断与环境进行交互产生,即试错学习,而监督学习的样本人工收集并标注;2)强化学习的反馈信息只有奖励,并且是延迟的,而监督学习需要明确的指导信息(每一个状态对应的动作)

    4.1马尔可夫决策过程 Markov Decision Process,MDP

    在这里插入图片描述
    总回报:给定策略 π(a|s),智能体和环境一次交互过程的轨迹 τ 所收到的累积奖励

    折扣回报在这里插入图片描述
    其中γ∈[0, 1]是折扣率,当γ接近于0时,智能体更在意短期回报;而当γ接近于1时,长期回报变得更重要

    强化学习的目标是学习到一个策略来最大化期望回报(Expected Return),即希望智能体执行一系列的动作来获得尽可能多的平均回报
    → 目标函数:
    在这里插入图片描述
    在这里插入图片描述

    4.2 K- 摇臂赌博机(老虎机)

    单步强化学习任务对应的理论模型
    在这里插入图片描述
    探索:将所有尝试机会平均分配给每个摇臂(轮流按下),最后以每个摇臂各自的平均吐币概率作为其奖赏期望的近似估计,即估计摇臂的优劣

    利用:按下目前最优的(平均奖赏最大)的摇臂,若有多个摇臂同为最优,则从中随机选取一个,即选择当前最优摇臂

    →存在探索-利用窘境,欲累计奖赏最大,则必须在探索与利用之间达成较好的折中

    4.2.1 ε-贪心

    基于一个概率来对探索和利用进行折中:每次尝试时,以ε的概率进行探索,以1-ε的概率进行利用
    在这里插入图片描述
    通常令ε取一个较小的常数,如0.1、0.01,然而,若尝试次数非常大,那么在一段时间后,摇臂的奖赏都能很好地近似出来,不再需要探索,这种情形下可让ε随着尝试次数的增加而逐渐减小,例如令ε=1/√t

    4.2.2 Softmax

    基于当前已知的摇臂平均奖赏来对探索和利用进行折中,若某些摇臂的平均奖赏明显高于其他摇臂,则它们被选取的概率也明显更高
    在这里插入图片描述

    4.3有模型学习

    多步强化学习任务,假定任务对应的马尔科夫决策过程四元组E=<X,A,P,R>均为已知,这样的情形称“模型已知”,即机器已对环境进行了建模,能在机器内部模拟出与环境相同或近似的状况,在己知模型的环境中学习称为"有模型学习"
    在这里插入图片描述

    4.3.1策略评估

    状态值函数V(·)在这里插入图片描述表示从状态x出发,使用策略π所带来的累积奖赏

    在这里插入图片描述
    状态-动作值函数Q(·)在这里插入图片描述表示从状态x出发,执行动作a后再使用策略π所带来的累积奖赏

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    4.3.2策略改进

    理想的策略应能最大化累积奖赏:在这里插入图片描述

    最优值函数:最优策略对应的值函数,在这里插入图片描述(策略空间无约束时)
    在这里插入图片描述

    4.3.3策略迭代与值迭代

    归结为基于动态规划的寻优问题

    基于模型的强化学习,要求模型已知,且当状态数量较多时算法效率较低

    策略迭代:从一个初始策略(通常是随机策略)出发,不断迭代进行策略评估和策略改进,直到策略收敛、不再改变为止
    在这里插入图片描述
    值迭代:策略改进与值函数的改进其实是一致的,策略迭代算法在每次改进策略后都要重新进行策略评估,通常比较耗时,故可将策略改进视为值函数的改善
    在这里插入图片描述

    4.4免模型学习

    学习算法不依赖于环境建模(较困难)

    4.4.1蒙特卡罗方法(基于采样的学习算法|模型无关的强化学习)

    从起始状态出发、使用某种策略进行采样,执行该策略T步并获得轨迹<x0,a0,r0,x1,a1,r2,…,xT-1,aT-1,rT,xT>, 然后,对轨迹中出现的每一对状态-动作,记录其后的奖赏之和,作为该状态-动作对的一次累积奖赏采样值。多次采样得到多条轨迹后,将每个状态-动作对的累积奖赏采样值进行平均,即得到状态-动作值函数的估计
    在这里插入图片描述
    在这里插入图片描述
    一般需要拿到完整的轨迹,才能对策略进行评估并更新模型,因此效率也比较低

    4.4.2时序差分学习方法(强化学习的主要学习方法)

    结合了动态规划与蒙特卡罗方法更高效

    时序差分学习方法是模拟一段轨迹,每行动一步 (或者几步),就利用贝尔曼方程来评估行动前状态的价值(当时序差分学习方法中每次更新的动作数为最大步数,就等价于蒙特卡罗方法)。其关键步骤就是在每次迭代中优化Q函数来减少现实在这里插入图片描述和预期在这里插入图片描述的差距。

    SARSA算法(属于同策略算法_采样与改进策略相同):
    在这里插入图片描述
    在这里插入图片描述
    Q学习算法(属于异策略的时序差分学习方法_采样与改进分别使用不同策略):
    在这里插入图片描述
    在这里插入图片描述

    4.5深度Q网络

    值函数近似:为了在连续的状态和动作空间中计算值函数在这里插入图片描述我们可以用一个函数在这里插入图片描述来表示近似计算:在这里插入图片描述在这里插入图片描述
    在这里插入图片描述通常是一个参数为φ的函数(如神经网络),输出为一个实数,称为Q网络
    在这里插入图片描述
    深度Q网络目标网络冻结(一个时间段内固定目标中的参数,来稳定学习目标),经验回放(可理解为在回忆中学习)

    4.6 REINFORCE算法

    结合随机梯度上升算法,每次采集一条轨迹,计算每个时刻的梯度并更新参数
    在这里插入图片描述
    带基准线的REINFORCE算法:引入一个控制变量来减少方差

    4.7演员-评论员算法Actor-Critic Algorithm

    是一种结合策略梯度和时序差分学习的强化学习方法,其中演员(Actor)是指策略函数在这里插入图片描述,即学习一个策略来得到尽量高的回报,评论员(Critic)是指值函数在这里插入图片描述对当前策略的值函数进行估计,即评估演员的好坏。

    借助于值函数,演员-评论员算法可以进行单步更新参数,不需要等到回合结束才进行更新。策略函数和值函数都是待学习的函数,需要在训练过程中同时学习。
    在这里插入图片描述

    4.8更加泛化的强化学习问题

    4.8.1部分可观测马尔可夫决策过程(Partially Observable Markov Decision Processes,POMDP)

    一个马尔可夫决策过程的泛化。POMDP依然具有马尔可夫性质,但是假设智能体无法感知环境的状态s,只能知道部分观测值o。比如在自动驾驶中,智能体只能感知传感器采集的有限的环境信息
    在这里插入图片描述

    4.8.2模仿学习imitation learning

    1)直接模仿学习
    2)逆向强化学习(Inverse Reinforcement Learning,IRL)
    指一个不带奖励的马尔可夫决策过程,通过给定的一组专家(或教师)的行为轨迹示例来逆向估计出奖励函数r(s,a,s’)来解释专家的行为(使得这个范例数据是最优的),然后再进行强化学习
    在这里插入图片描述

    4.8.3分层强化学习(Hierarchical Reinforcement Learning,HRL)

    将一个复杂的强化学习问题分解成多个小的、简单的子问题,每个子问题都可以单独用马尔可夫决策过程来建模。这样,我们可以将智能体的策略分为高层次策略和低层次策略,高层次策略根据当前状态决定如何执行低层次策略。这样,智能体就可以解决一些非常复杂的任务。

    _ _ _ _ _ _ 未完待续,喜欢的朋友可以关注后续文章 _ _ _ _ _ _

    《机器学习主要类型》系列文章往期回顾:
    机器学习主要类型(一):监督学习
    机器学习主要类型(二):无监督学习
    机器学习主要类型(三):半监督学习

    参考书目:
    周志华.《机器学习》
    邱锡鹏.《神经网络与深度学习》

    展开全文
  • 以下将对两者相关研究内容进行简述以显看出两者的区别。 1 多智能体强化学习 根据具体应用中智能体之间的关系,将多智能体问题分为完全合作式、完全竞争式、混合关系式三种类型。 相比单智能体系统,强化学习应用...

    个人以为,从研究内容来看,多智能体强化学习更多研究的是智能体之间的交互和关联,寻求在多智能体强化学习中所有智能体之间达到均衡状态;分布式强化学习的研究则侧重于强化学习低采样效率的问题,嵌入并行计算以高效加速模型训练过程并提高学习效果。以下将对两者相关研究内容进行简述以显看出两者的区别。

    1 多智能体强化学习

    根据具体应用中智能体之间的关系,将多智能体问题分为完全合作式、完全竞争式、混合关系式三种类型。

    相比单智能体系统,强化学习应用于多智能体系统会遇到哪些挑战和问题?

    (1)环境的不稳定性:智能体在做决策的同时,其他智能体也在采取动作;环境状态的变化与所有智能体的联合动作相关;

    (2)智能体获取信息的局限性:不一定能够获得全局的信息,智能体仅能获取局部的观测信息,但无法得知其他智能体的观测信息、动作和奖励等信息;

    (3)个体的目标一致性:各智能体的目标可能是最优的全局回报;也可能是各自局部回报的最优;

    (4)可拓展性:在大规模的多智能体系统中,就会涉及到高维度的状态空间和动作空间,对于模型表达能力和真实场景中的硬件算力有一定的要求。

    1.1 多智能体问题的求解

    对于多智能体强化学习问题,一种直接的解决思路:将单智能体强化学习方法直接套用在多智能体系统中,即每个智能体把其他智能体都当做环境中的因素,仍然按照单智能体学习的方式、通过与环境的交互来更新策略;这是 independent Q-learning 方法的思想。这种学习方式固然简单也很容易实现,但忽略了其他智能体也具备决策的能力、所有个体的动作共同影响环境的状态,使得它很难稳定地学习并达到良好的效果。

    在一般情况下,智能体之间可能存在的是竞争关系(非合作关系)、半竞争半合作关系(混合式)或者是完全合作关系,在这些关系模式下,个体需要考虑其他智能体决策行为的影响也是不一样的。

    1.2 完全竞争关系——minimax Q-learning

    minimax Q-learning 算法用于两个智能体之间是完全竞争关系的零和随机博弈。首先是最优值函数的定义:对于智能体 i,它需要考虑在其他智能体(i-)采取的动作(a-)令自己(i)回报最差(min)的情况下,能够获得的最大(max)期望回报。该回报可以表示为:

    在式子中,V 和 Q 省略了智能体 i 的下标,是因为在零和博弈中设定了 Q1=-Q2,所以上式对于另一个智能体来说是对称等价的。这个值函数表明,当前智能体在考虑了对手策略的情况下使用贪心选择。这种方式使得智能体容易收敛到纳什均衡策略。

    在学习过程中,基于强化学习中的 Q-learning 方法,minimax Q-learning 利用上述 minimax 思想定义的值函数、通过迭代更新 Q 值;动作的选择,则是通过线性规划来求解当前阶段状态 s 对应的纳什均衡策略。

    1.3 半合作半竞争(混合)关系

    双人零和博弈的更一般形式为多人一般和博弈(general-sum game),此时 minimax Q-learning 方法可扩展为 Nash Q-learning 方法。当每个智能体采用普通的 Q 学习方法,并且都采取贪心的方式、即最大化各自的 Q 值时,这样的方法容易收敛到纳什均衡策略。Nash Q-learning 方法可用于处理以纳什均衡为解的多智能体学习问题。它的目标是通过寻找每一个状态的纳什均衡点,从而在学习过程中基于纳什均衡策略来更新 Q 值。

    具体地,对于一个智能体 i 来说,它的 Nash Q 值定义为:

    此时,假设了所有智能体从下一时刻开始都采取纳什均衡策略,纳什策略可以通过二次规划(仅考虑离散的动作空间,π是各动作的概率分布)来求解。

    在 Q 值的迭代更新过程中,使用 Nash Q 值来更新:

    可以看到,对于单个智能体 i,在使用 Nash Q 值进行更新时,它除了需要知道全局状态 s 和其他智能体的动作 a 以外,还需要知道其他所有智能体在下一状态对应的纳什均衡策略π。进一步地,当前智能体就需要知道其他智能体的 Q(s')值,这通常是根据观察到的其他智能体的奖励和动作来猜想和计算。所以,Nash Q-learning 方法对智能体能够获取的其他智能体的信息(包括动作、奖励等)具有较强的假设,在复杂的真实问题中一般不满足这样严格的条件,方法的适用范围受限。

    1.4 完全合作关系

    “合作”意味着多个智能体要共同完成一个目标任务,即这个目标的达成与各个体行为组合得到的联合行为相关;如果个体“一意孤行”,那么它很难配合其他队友来共同获得好的回报。所以,智能体的策略学习仍然需要考虑联合动作效应,要考虑其他具有决策能力的智能体的影响。

    怎样实现在智能体策略学习过程中考虑其他协作智能体的影响呢?这个问题我们可以分类讨论,分类的依据是具体问题对于智能体协作的条件要求,即智能体通过协作获得最优回报时,是否需要协调机制:

    1.4.1 不需要协作机制

    Team Q-learning 是一种适用于不需要协作机制的问题的学习方法,它提出对于单个智能体 i,可以通过下面这个式子来求出它的最优动作 hi:

    Distributed Q-learning 也是一种适用于不需要协作机制的问题的学习方法,不同于 Team Q-learning 在选取个体最优动作的时候需要知道其他智能体的动作,在该方法中智能体维护的是只依据自身动作所对应的 Q 值,从而得到个体最优动作。

    1.4.2 隐式的协作机制

    1.4.3 显式的协作机制

    2 分布式强化学习

    在分析分布式强化学习前,首先分析一下强化学习的训练过程。

    在强化学习的训练中,主要分成两个部分,一个是样本采集过程,即用行为策略(Behavior Policy)跟环境进行交互,产生训练样本;另一个是训练过程,使用收集到的训练样本进行策略的更新。强化学习训练不断重复上诉两个过程,先采集样本,采集到一定数量的训练样本后,进行梯度更新,生成新的策略,但收到资源的限制,样本收集效率很低,于是考虑扩展为分布式版本。

    以下将简述部分分布式强化学习相关算法来讲述与多智能体强化学习之间的区别。

    2.1 A3C

    这里我们将样本采集和模型训练交给不同的模块,引入Actor和Learner的概念,其中Actor负责跟环境交互,产生训练样本,而Learner负责模型训练。在该架构中,会有多个Actor进程,每个Actor都拥有一个模型的副本,用来跟环境进行交互,产生训练样本。

    Actor根据这些样本计算梯度,并把梯度发送给Learner。这里面异步(asynchronous)主要体现在Learner使用梯度的方式上,即Learner在收到某个Actor发过来的梯度之后,不会等待其他Actor的梯度,而是会直接更新模型,并把最新的模型发送给该Actor。

    在A3C架构中,每个Actor都独自计算梯度,Learner只负责使用梯度,所以Learner的计算量并不大。在作者的原始实现中,A3C不需要GPU资源,只需要CPU即可在Atari等游戏上达到很好的效果。当然,A3C本身存在着一些问题:

    1. 当模型变得复杂时,在CPU上计算梯度的耗时会变得非常大,而如果迁移到GPU上,由于每个Actor都需要一个模型的副本,又会需要大量的GPU资源
    2. 当模型变大时,传输梯度和模型参数的网络开销也会变得巨大
    3. Learner使用异步方式更新梯度,这意味着在训练过程中,部分梯度的方向并不正确,从而可能影响最终的训练效果。举个例子,一开始Actor1、Actor2和Learner都使用初始模型参数P1,Actor1率先计算了梯度G1_1,Learner收到G1_1之后更新了模型,变成了新模型P2,此时Actor2计算好了梯度G1_2,并请求Learner更新梯度,但是由于G1_2来自于模型参数P1,而Learner现在的参数是P2,这样本次梯度更新其实已经产生了偏差。这个现象会随着Actor的数量增多变得越来越严重,这也一定程度上限制了A3C的横向扩展能力

    2.2 GA3C

    为了更好地利用GPU的计算资源从而提高整体计算效率,A3C进一步优化提升为GA3C.与A3C不同,GA3C中的Actor并没有模型参数,整个架构中只有一个模型,保存在Learner中。当Actor需要采样时,将状态放入预测队列,Learner的采样线程将队列中的所有状态拿出来进行一次采样),将得到的结果返回给相应的Actors。Actor收到对应的动作之后,在环境中进行step,并得到对应的reward信号。Actor收集到一定的样本之后,会将这些样本放入训练队列,Learner的训练线程使用这些样本进行模型更新。下图展示了A3C和GA3C架构的差别:

    采用这个架构之后,随着模型变得越来越复杂,GA3C带来的加速比也变得越来越大。

    展开全文
  • 我相信,从某种意义上讲,强化学习是人工智能的未来。——强化学习之父,Richard Sutton Google收购DeepMind后,DeepMind取得的成绩在人机大战的历史中留下了浓重的一笔。有人说机器让围棋失去了“性感”的一面,也...
  • C++动态类型与静态类型

    千次阅读 2020-03-17 15:11:58
    静态类型 编译时的类型,运行前就确定了,是变量声明时的类型或表达式生成的类型 动态类型 运行时才确定的类型,是变量或表达式表示的内存中的对象的类型 Quote* p = new b_Quote; // Quote 是基类,b_Quote 是子类 ...
  • 我们都知道,人工智能是一个十分重要的...强化学习是机器学习中一个十分重要的方法,那强化学习其他机器学习方法究竟有什么不同呢?下面我们就给大家解答一下这个问题。 首先我们给大家介绍一下什么是强化学习,其...
  • **机器学习按学习形式主要包括监督学习、半监督学习、无监督学习...深度学习是根据模型的结构差异形成机器学习的一个分支,它们最大的区别是机器学习需要人工定义特征或规则,而深度学习是机器自动“学习”特征。 ...
  • 强化学习过程中,智能体环境一直在交互。智能体在环境里面获取某个状态后,它会利用该状态输出一个动作(action),这个动作也称为决策(decision)。然后这个动作会在环境之中被执行,环境会根据智能体采取的...
  • 强化学习(一):简介——什么是强化学习?

    万次阅读 多人点赞 2021-01-22 23:59:35
    本文将介绍强化学习的基本含义,了解什么是强化学习、强化学习的概念基本框架以及强化学习中常见的问题类型。 什么是强化学习? 强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是...
  • 强化学习之原理应用

    千次阅读 2019-05-23 15:10:32
    PaddlePaddle原创2019/02/20 17:23强化学习之原理应用强化学习特别是深度强化学习近年来取得了令人瞩目的成就,除了应用于模拟器和游戏领域,在工业领域也正取得长足的进步。百度是较早布局强化学习的公司之一。这...
  • 强化学习(Regulation Learning,RL)是人工智能领域的一个重要方面,有着从金融到机器人等众多应用,并提出了大量的方法。机器人技术对于RL来说是一个非常具有挑战性的应用,因为它涉及机械系统与其环境之间的交互...
  • 文献题目:用于临床决策支持的深度强化学习:简要综述 文献时间:2019 文献链接:https://arxiv.org/abs/1907.09475 摘要 由于人工智能尤其是深度学习的最新进展,许多数据驱动的决策支持系统已被实施,以促进医生...
  • 读书笔记–《强化学习在阿里的技术演进业务创新》 强化学习和其他学习⽅法不同之处在于强化学习是智能系统从环境到⾏为映射的学习,以使奖励信号函数值最⼤。如果智能体(agent)的某个⾏为策略(action)导致...
  • 强化学习分类

    千次阅读 2020-10-11 16:25:51
    强化学习】强化学习分类 在学习强化学习的过程中我们经常会遇到一些陌生的名词分类,什么model-free,offpolicy之类的,学习的时候不明觉厉可能就一眼带过了,但是其实这些分类的名词其实十分有趣,掌握他们十分有...
  • 强化学习

    千次阅读 2019-10-17 14:13:37
    《机器学习及其应用》汪荣贵等编著 机械工业出版社 2019 年第 1 版1 第六章 强化学习 我们知道,机器学习是一种从经验数据中构造和改善模型...一种名为强化学习的机器学习类型强化学习又称为再励学习或评价学习,...
  • 强化学习导论 阅读过我以前的著作—— Introduction to Deep Learning Using R(Apress,2018)和Applied Natural Learning Using Python (Apress,2017)的读者,很荣幸你们能够再次成为我的读者。新读者,欢迎你们!...
  • 强化学习五大方面-奖励策略结构

    千次阅读 2021-01-22 22:56:05
      在本篇文章中将介绍奖励策略结构相关的知识,这一部分是强化学习的极重要一部分,因此会有较长篇幅介绍。 奖励   奖励是代理不断完善自己,使自己能够自主实现目标的直接经验来源。代理通过接受来自环境奖励...
  • 深度强化学习是一种机器学习,其中智能体(Agent,也翻译作代理)通过执行操作(Action)和查看结果(Reward)来学习如何在环境中采取最佳的动作或策略。自 2013 年Deep Q...
  • 计算:目前都有封装好的函数,学习训练期间采用fit训练函数,实盘采用predict预测函数,只是不同模型的API接口有所差别。 算法模型:这个需要经验和数据测试,根据不同的项目挑选不同的模型。 根据机器学习算法模型...
  • 强化学习(Reinforcement Learning)和遗传算法(Genetic Algorithm)都是受...它被构造为环境交互的代理。 在强化学习中,人工智能 (AI) 面临类似游戏的情况(即模拟)。人工智能通过反复试验来提出问题的解决方案。智
  • 深度强化学习的简要概述 作者: Kai Arulkumaran, Marc Peter Deisenroth, Miles Brundage, Anil Anthony Bharath 文章目录摘要 Abstract1. 引言 Introduction2. 奖励驱动行为 Reward-Driven Behavior2.1. ...
  • 强化学习通过环境的交互来学习如何最大化奖励。 强化学习系统的两个关键要素: 奖励:强化学习系统的目标,包括正奖励和负奖励。 策略:强化学习的学习对象就是策略。决策者根据不同的观测采用不同的动
  • 网络结构搜索之强化学习

    千次阅读 2019-07-30 14:36:26
    算力和需求的增长使得神经架构搜索( Neural Architecture Search,NAS)重回人们的视线...强化学习(RL)可谓 NAS 中的核武器,谷歌开启并引领该方向的工作。由初期燃烧的显卡到专用硬件,对效率的追求犹如挖矿一般。
  • 强化学习入门级实践教学

    千次阅读 2022-03-20 21:02:40
    可以先阅读我的文章强化学习纲要,本文针对强化学习的入门级讲解。代码主要参考强化学习算法框架库:PARL 资料推荐 书籍:《Reinforcement Learning: An Introduction》 视频:David Silver经典强化学习公开课、...
  • 主要是按动作空间的类型进行分类,包括离散动作空间、连续动作空间和混合动作空间,并按照时间发展脉络进行梳理,方便了解整个深度强化学习领域大致的发展方向和趋势,以及各个算法之间的递进关系。 图片转自...
  • 强化学习的并行加速

    千次阅读 多人点赞 2021-02-12 19:53:52
    强化学习还涉及环境交互带来的随机性,情况更加严重。可能类似的环境配置,跑上几遍结果还不太一样。2017年McGill University和Microsoft的论文《Deep Reinforcement Learning that Matters》中研究了强化学习的...
  • 强化学习 - 简介

    2020-07-15 15:37:42
    强化学习中出现而在其他类型学习中未出现的挑战之一,是如何权衡探索(Exploration)利用(Exploitation)之间的关系。 强化学习的另一个关键特征是它明确地考虑了目标导向的个体不确定环境相互作用的 整个...
  • python机器学习四(强化学习)

    千次阅读 2021-01-29 17:54:01
    1.强化学习就是程序或智能体(agent)通过环境不断地进行交互学习一个从环境到动作的映射,学习的目标就是使累计回报最大化。2.强化学习是一种试错学习,因其在各种状态(环境)下需要尽量尝试所有可以选择的动作,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,061
精华内容 9,624
关键字:

强化的类型与区别