Press "Enter" to skip to content

深度强化学习从入门到大师:简介篇(第一部分)

深度强化学习从入门到大师:简介篇(第一部分)

 

 

您将使用的一些编程环境

 

本文是深度强化学习课程的一部分,使用 Tensorflow 进行实践。点击这里查看 教学大纲

 

强化学习是一种重要的机器学习类型,其中智能体通过执行操作和查看结果来了解如何在环境中执行操作。

 

近年来,我们在这个迷人的研究领域看到了很多改进。例如包括  2014年的DeepMind 的 Deep Q 学习架构,在2016 年 AlphaGo 击败李世石,2017年OpenAI 和 PPO 等。

 

 

DeepMind DQN

 

在本系列文章中,我们将重点学习目前用于解决强化学习问题的不同架构,包括 Q-learning, Deep Q-learning, Policy Gradients, Actor Critic, and PPO.

 

在这第一篇文章中,您将学到:

 

什幺是强化学习,以及奖励机制是如何成为核心理念的

 

强化学习的三种方法

 

深层强化学习的“深层”意味着什幺

 

在深入实现 Deep Reinforcement Learning 智能体之前掌握这些内容非常重要。

 

强化学习背后的理念是,智能体 Agent 将通过与环境互动并获得执行行动的奖励来学习环境。

 

 

从与环境的互动中学习来自人们的自然经验。想象一下,你是一个在起居室里的孩子。你看到一个壁炉,你接近它。

 

 

它很温暖,很积极,你感觉很好  (积极奖励+1)。 你感觉火是一件好事。

 

 

但是你试着触摸火焰。哎哟! 它会烧伤你的手  (负奖励-1)。你已经明白,当你离足够远时火是积极的,因为它会产生温暖。但是太靠近它会烧伤你。

 

这就是人类通过互动学习的方式。强化学习是一种从行动中学习的计算方法。

 

    强化学习过程

 

 

让我看一个智能体学习如何玩超级马里奥的一个例子。强化学习(RL)过程可以建模为一个循环,其具体工作方式如下:

 

Agent从环境 Environment  获取状态S0(在我们的例子中,从超级马里奥兄弟(环境)接收游戏(状态)的 first frame )

 

基于该状态S0, 智能体采取行动A0(我们的智能体将向右移动)

 

环境转换到新状态S1( new frame  )

 

环境给智能体带来一些奖励R1( not dead :+1)

 

强化学习循环输出state,action和reward的序列,agent的目的是最大化预计累计奖励(expected cumulative reward)

 

奖励假设函数的核心思想

 

为什幺 Agent  的目标是最大化预期的累积奖励?

 

实际上,强化学习是基于奖励假设的想法。所有目标都可以通过预期累积奖励的最大化来描述。

 

这就是为什幺在强化学习中,为了获得最佳行为,我们需要最大化预期的累积奖励。

 

每个时间步t的累积奖励可定义为:

 

 

这相当于

 

 

感谢  Pierre-Luc Bacon  的修正

 

但是,实际上,我们不能光添加这样的奖励。早期(在游戏开始时)提供的奖励更有用,因为它们比未来奖励更好预测。

 

 

假设你的 agent 是这只小老鼠而你的对手就是猫。目标是在 agent 被猫吃掉之前吃最多的奶酪。

 

正如我们在图中可以看到的那样, 老鼠在附近吃奶酪的可能性比接近猫的奶酪更可能( agent  越接近猫,就越危险)。

 

因此,猫附近的奖励,即使它更大(更多的奶酪),也应该被将打折扣。因为我们不确定 agent   能不能吃到。

 

为了给奖励打折,可以这样做:

 

我们定义了一个名为gamma的折扣率。它必须介于0和1之间。

 

伽玛越大,折扣越小。这意味着学习,agent 更关心长期奖励。

 

另一方面,伽玛越小,折扣越大。这意味着我们的 agent 更关心短期奖励(最近的奶酪)。

 

累积的折扣预期奖励是:

 

 

感谢  Pierre-Luc Bacon  的修正

 

简单来说,每个奖励将通过伽玛的时间步长指数倍进行折扣。随着时间步长的增加,猫越来越接近我们的 agent,因此未来的奖励的获得越来越不可能发生。

 

    情节性任务 或 连续性任务

 

任务是强化学习问题的一个实例,我们可以定义两种类型的任务:情节性 和 连续性。

 

情节性任务(episodic tasks)

 

这种情况下,强化学习任务会有一个起点和终点(一个最终状态)。这会创建一个剧情:一个状态 States, 行动 Actions, 奖励Rewards, 新状态 New States 的列表

 

例如,想想超级马里奥兄弟,一个剧情开始于新马里奥人物的出生点出来并到结束:当马里奥被杀或者达到了关卡的末尾。

 

 

新剧情的开始

 

持续性任务

 

这些是永远持续的任务(没有终点状态)。在这种情况下,agent必须学习如何选择最佳操作并同时与环境交互。

 

例如, agent 进行自动股票交易。对于此任务,没有起点和终点状态。agent 会持续执行,直到我们决定阻止他。

 

 

    蒙特卡洛与TD学习方法

 

我们有两种学习方式:

 

在剧集结束时收集奖励,然后计算最大预期未来奖励:  蒙特卡洛方法

 

估算每一步的奖励:  时序差分方法

 

蒙特卡洛

 

当剧集结束时(智能体达到“终端状态”),Agent 会查看总累积奖励,看看它的表现如何。在蒙特卡洛方法中,奖励仅在比赛结束时收到。

 

然后,我们运用学到知识开始一个新的游戏。 Agent 会在每次迭代时做出更好的决策。

 

 

我们来举个例子:

 

 

如果我们采取迷宫环境:

 

总是从同一个起点开始。

 

如果猫吃了老鼠或者老鼠移动超过20步,我们就会终止这一集剧情。

 

在剧集结束时,我们有一个 State, Actions,  Rewards, 和 New States的列表

 

奖励总额 Gt 被统计(看看老鼠的表现如何)。

 

根据上面的公式更新V( st )。

 

然后用这个新知识开始一个新游戏。

 

通过运行越来越多的剧集, Agent  将学会更好, 并更好地发挥。

 

时序差分方法:每一步的学习

 

TD学习不会等到剧集结束时更新最大预期未来奖励估计:它将更新其在该经历中发生的非最终状态St的价值估计V.

 

该方法称为TD(0) 或一步TD(在任何单个步骤之后更新值函数)。

 

 

TD方法只等到下一步更新值估计值。在时间 t + 1,它们使用观察到的奖励 Rt + 1和当前估计值V(St + 1)立即得到TD目标。

 

TD目标是一个估计值:事实上,可以通过将其更新为一步目标来更新先前估计V(St)。

 

    勘探/开发权衡

 

在研究解决强化学习问题的不同策略之前,我们必须涵盖另一个非常重要的主题:勘探/开发权衡。

 

勘探是寻找有关环境的更多信息。

 

开发是利用已知信息来最大化奖励。

 

请记住,我们的RL智能体的目标是最大化预期的累积奖励。但是,我们可能会陷入局部陷阱。

 

 

在这个游戏中,我们的鼠标可以有无限量的小奶酪(每个+1)。但在迷宫的顶端有一大片奶酪(+1000)。

 

但是,如果只专注于奖励,agent永远不会达到巨大的奶酪。它只会得到最近的奖励来源,即使这个来源很小(利用)。

 

但如果我们的经纪人进行了一些探索,那幺它就有可能获得巨大的回报。

 

这就是我们所说的勘探/开采权衡。我们必须定义一个有助于处理这种权衡的规则。我们将在以后的文章中看到处理它的不同方法。

 

    强化学习的三种方法

 

既然我们已经定义好了强化学习的主要元素,那幺让我们继续讨论解决强化学习问题的三种方法。这些是基于数值,策略,模型的的方法。

 

基于数值

 

在基于数值的RL中,目标是优化价值函数  V(s)。

 

价值函数是一个函数,表明agent在每个状态获得的最大预期未来奖励。

 

每个状态的数值是以该状态为起始点,agent在未来积累的奖励总额的期望。

 

 

Agent使用此函数在逐步地中选择的状态,使其获得期望最大。

 

 

在迷宫示例中,在每个步骤中我们将采用最大值:-7,然后是-6,然后是-5(依此类推)以达到目标。

 

基于策略

 

在基于策略的RL中,我们希望在不使用值函数的情况下直接优化策略函数  π(s)。

 

该策略定义了给定时间的智能体行为。

 

 

action = policy(state)

 

通过学习一种策略函数。这使我们得到每个状态到最佳的相应操作的映射。

 

我们有两种策略类型:

 

确定性:给定状态下的策略将始终返回相同的操作。

 

随机:输出行动上的分别概率。

 

 

 

正如我们在此处看到的,该策略直接指出了针对每个步骤采取的最佳操作。

 

基于模型

 

在基于模型的 RL 中,我们对环境进行建模。这意味着我们创建了一个环境行为的模型。

 

问题是每个环境都需要不同的模型表示。这就是为什幺我们不会在即将发表的文章中谈论这种类型的强化学习。

 

    介绍深度强化学习

 

深层强化学习引入深层神经网络来解决强化学习问题——因此得名“深层”。

 

例如,在下一篇文章中,我们将研究Q-Learning(经典强化学习)和深度Q-Learning。

 

你将看到两者的不同之处。在第一种方法中,我们使用传统的算法来创建一个Q表,它可以帮助我们找到针对每种状态的操作。

 

在第二种方法中,我们将使用神经网络(根据状态(q值)来估计奖励)。

 

 

Udacity的Q learning notebook激发了上图的灵感

 

恭喜!在这篇文章中有很多信息。在继续之前,一定要真正掌握上述内容。在进入有趣的部分之前,掌握这些元素是很重要的:创建可以玩电子游戏的人工智能。

本文为 AI 研习社编译的技术博客,原标题 :An introduction to Reinforcement Learning

作者 |  Thomas Simonini  翻译 | 斯蒂芬•二狗子、Disillusion  校对 | 斯蒂芬•二狗子       审核 | 就2         整理 | 菠萝妹

 

原文链接:https://medium.freecodecamp.org/an-introduction-to-reinforcement-learning-4339519de419

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注