Pytorch 了解强化学习(RL)

1 前言

先通过 3w原则 简单了解一下强化学习。

1.1 WHAT 什么是强化学习

下面是维基百科和百度百科上面的解释。

强化学习(英语:Reinforcement learning,简称RL) 是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。
强化学习是除了监督学习和非监督学习之外的第三种基本的机器学习方法。
与监督学习不同的是,强化学习不需要带标签的输入输出对,同时也无需对非最优解的精确地纠正。
其关注点在于寻找探索(对未知领域的)和利用(对已有知识的)的平衡,强化学习中的 “探索-利用” 的交换,在多臂老虎机问题和有限MDP中研究得最多。
— 维基百科

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题 [1] 。
— 百度百科

基本的强化学习被建模为马尔可夫决策过程(Markov decision processes,MDP):

  • 环境状态的集合 S
  • 动作的集合 A
  • 在状态之间转换的规则(转移概率矩阵)P
  • 规定转换后“即时奖励”的规则(奖励函数)R
  • 描述主体能够观察到什么的规则

1.2 WHY 为什么使用强化学习?应用场景?

强化学习对于包含长期反馈的问题比短期反馈的表现更好。它在许多问题上得到应用,包括机器人控制、电梯调度、电信通讯、双陆棋和西洋跳棋。
强化学习的强大能来源于两个方面:使用样本来优化行为,使用函数近似来描述复杂的环境。 —维基百科

它们使得强化学习可以使用在以下的复杂环境中:

  • 模型的环境已知,且解析解不存在;
  • 仅仅给出环境的模拟模型(模拟优化方法的问题)
  • 从环境中获取信息的唯一办法是和它互动。

前两个问题可以被考虑为规划问题,而最后一个问题可以被认为是genuine learning问题。使用强化学习的方法,这两种规划问题都可以被转化为机器学习问题。

强化学习主要是应用在 游戏、机器人、无人驾驶等领域。

1.3 HOW 怎么实现强化学习

Pytorch 官网是有两个 强化学习 教程的,或者说两个例子,可以参考下:

其实是基于两个小游戏的示例

  • 左右移动使小推车上的长棍保持直立
  • 超级马里奥游戏(只能在Linux上运行)

需要安装以下包

# Install requirements
!pip install gym pyglet nes_py gym_super_mario_bros

2 部分概念

2.1 环境

代理与之交互并从中学习的世界。

2.2 状态与观察

状态 s s s 是世界的状态的完整描述。没有关于世界的信息是对 状态 隐藏的。
观察 o o o 是一种可能忽略信息的状态的部分描述。

在深度强化学习中,我们几乎总是用实值向量、矩阵或高阶张量来表示状态和观察结果。例如,视觉观察可以由其像素值的 RGB 矩阵表示;机器人的状态可以用它的关节角度和速度来表示。

当代理能够观察到环境的完整状态时,我们说环境是 fully observed。当智能体只能看到部分观察时,我们说环境是 partially observed

You Should Know
强化学习符号有时会将状态 s, 放在技术上更适合编写观察 o 的地方。具体来说,在谈论代理如何决定一个动作时会发生这种情况:我们经常用符号表示动作以状态为条件,而实际上,动作以观察为条件,因为代理无法访问状态。

2.3 动作

代理如何响应环境。所有可能操作的集合称为action-space。

不同的环境允许不同种类的动作。
给定环境中所有有效动作的集合通常称为动作空间。
一些环境,如 Atari 和 Go,有离散的动作空间,其中只有有限数量的动作可供代理使用。其他环境,例如代理在物理世界中控制机器人的地方,具有连续的动作空间。在连续空间中,动作是实值向量。
这种区别对深度强化学习中的方法有一些非常深刻的影响。一些算法系列只能直接应用于一种情况,而必须为另一种情况进行大量返工。

2.4 策略

策略是代理用来决定采取何种行动的规则。它可以是确定性的,在这种情况下,它通常表示为 μ \mu μ
a t = μ ( s t ) , a_t = \mu(s_t), at=μ(st),

或者它可能是随机的,在这种情况下,它通常表示为 π \pi π
a t ∼ π ( ⋅ ∣ s t ) 。 a_t \sim \pi(\cdot | s_t)。 atπ(st)

因为策略本质上是代理的大脑,所以用“策略”代替“代理”这个词并不少见,例如说 “策略试图最大化奖励”。

在深度强化学习中,我们处理参数化策略:其输出是依赖于一组参数(例如神经网络的权重和偏差)的可计算函数的策略,我们可以通过一些优化算法调整这些参数以改变行为。

我们经常用 θ θ θ 或表示这种策略的参数 ϕ \phi ϕ,然后将其写为策略符号的下标以突出连接:
a t = μ θ ( s t ) a t ∼ π θ ( ⋅ ∣ s t ) a_t = \mu_{\theta}(s_t) \\ a_t \sim \pi_{\theta}(\cdot | s_t) at=μθ(st)atπθ(st)

2.5 轨迹

轨迹 τ \tau τ 是世界上的一系列状态和动作,
τ = ( s 0 , a 0 , s 1 , a 1 , . . . ) \tau = (s_0, a_0, s_1, a_1, ...) τ=(s0,a0,s1,a1,...)

世界的第一个状态 s 0 s_0 s0 是从起始状态分布 中随机采样的,有时表示为 ρ 0 \rho_0 ρ0
s 0 ∼ ρ 0 ( ⋅ ) s_0 \sim \rho_0(\cdot) s0ρ0()

状态转变(在 时间 t t t 的状态 s t s_t st 和 时间 t + 1 t+1 t+1的状态 s t + 1 s_{t+1} st+1 之间的变化),是由环境的自然法则支配,且只依赖于最近的动作 a t a_t at。它们可以是确定性的,
s t + 1 = f ( s t , a t ) s_{t+1} = f(s_t, a_t) st+1=f(st,at)
或随机,
s t + 1 ∼ P ( ⋅ ∣ s t , a t ) s_{t+1} \sim P(\cdot|s_t, a_t) st+1P(st,at)

动作来自代理根据其策略。

轨迹也经常被称为 episodes 或者 rollouts.

2.6 奖励与回报

Reward 是从环境到代理的关键反馈。它是驱动 Agent 学习和改变其未来行动的动力。多个时间步长的奖励聚合称为 Return。

奖励函数 R 在强化学习中至关重要。它取决于世界的当前状态、刚刚采取的行动以及世界的下一个状态: r t = R ( s t , a t , s t + 1 ) r_t = R(s_t, a_t, s_{t+1}) rt=R(st,at,st+1)
这经常被简化为仅依赖于当前状态 r t = R ( s t ) r_t = R(s_t) rt=R(st) 或状态-动作对 r t = R ( s t , a t ) r_t = R(s_t,a_t) rt=R(st,at)

2.7 最优动作值函数

Optimal Action-Value function Q ∗ ( s , a ) Q ∗ (s,a) Q(s,a)

如果您从 状态 s s s 开始,采取任意行动 a a a,然后对每个未来的时间步采取最大化回报的行动。 Q Q Q 可以说代表一种状态下动作的 “质量”
我们尝试近似这个函数。

3 参考

  1. TRAIN A MARIO-PLAYING RL AGENT
  2. REINFORCEMENT LEARNING (DQN) TUTORIAL
  3. 强化学习的10个现实应用
  4. OpenAI 强化学习简介
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值