当前位置: 首页 > news >正文

强化学习(RL)的学习笔记

1. 前言

(1)PPO的优点

PPO(Proximal Policy Optimization)算法相比其他强化学习方法有几个显著优点:

  1. 稳定性和鲁棒性:PPO通过限制策略更新的幅度来避免训练过程中的大幅波动,这增加了算法的稳定性和鲁棒性。这是通过引入一个被称为“信任区域”的概念来实现的,它限制了新策略与旧策略之间的偏离程度。
  2. 简单的实现:与其他需要复杂计算的强化学习算法(如TRPO)相比,PPO简化了这些计算,使得实现起来更为简单,同时保持了相似的性能,这使得它在实践中更受欢迎。
  3. 样本效率:PPO在使用每个数据样本方面比一些其他算法更有效,它可以在每次迭代中重复利用数据,从而提高样本的使用效率。
  4. 适用性广:PPO被证明在连续动作空间的多种环境中有效,这意味着它适用于各种任务,包括机器人控制和游戏等。
  5. 超参数调整容易:PPO相对于其他算法来说对超参数的选择不那么敏感,这降低了调整参数的难度。
  6. 高性能:PPO在多个基准测试和任务中显示出了优秀的性能,包括与其他先进的RL算法相比。

(2)策略梯度的优点

  1. 处理连续动作空间: 策略梯度非常适合于连续动作空间的问题。例如,如果你在控制一个机器人的臂,它的动作是连续的角度变化,策略梯度方法可以学习在任何给定状态下应该施加什么样的扭矩。
  2. 更好的探索机制:策略梯度方法通常会有更好的探索机制,因为它们可以在选择动作时采取随机性。这种随机性使智能体有可能探索到新的、可能更好的动作。
  3. 适合非马尔可夫决策过程:策略梯度方法可以在非马尔可夫(非完全可观测)的环境中工作得很好,因为它们不需要像值函数方法那样严格地依赖于状态的马尔可夫性质。

2. 学习资料

2.1 Hung-yi Lee(李宏毅)RL course

Machine Learning 2017 (Hung-yi Lee, NTU) 23-1~23-3

3. 常见术语

PPO:Proximal Policy Optimization,近端策略优化

Imitation Learning:模仿学习

GPT4-AllTools:模仿学习是一种让机器通过观察和复制专家行为来学习特定任务的技术。就像是当我们小时候学习骑自行车或做饭时观察父母的动作并尝试效仿他们一样。

行动者+评论家(Actor+Critic)

在机器学习的强化学习任务中,行动者负责做决定并采取行动,而评论家则评估这些行动,并指导行动者如何调整策略以做得更好。通过这种合作,行动者学会更好地完成任务。

4. RL面临的挑战

奖励延迟(Reward Delay)

Reward Delay 是指在行为和由该行为引起的奖励之间存在时间延迟。这种延迟使得学习过程复杂化,因为学习算法需要能够将行为与可能在很长一段时间后才出现的结果联系起来。

李宏毅老师用 Space Invader 讲解 Reward Delay:

  • 但是如果machine只知道開火以後就得到reward
  • 它最後learn出來的結果它只會瘋狂開火
  • 對它來說往左移、往右移沒有任何reward它不想做
  • Reward delay
    • In space invader, only “fire” obtains reward
    • Although the moving before “fire” is important
    • In Go playing, it may be better to sacrifice immediate reward to gain more long-term reward

5. 常见概念

5.1 基本流程

5.1.1 Sample函数:探索行动的策略

Sample函数在训练过程中对应着“样本增广”的作用;

5.1.2 Gradient Ascent

Note:如果比赛胜利的话,就从参数上提升此次动作序列(sequence)出现的概率 θ \theta θ

θ new ← θ old  + η ∇ R ˉ θ o l d \theta^{\text {new}} \leftarrow \theta^{\text {old }}+\eta \nabla \bar{R}_{\theta^{old}} θnewθold +ηRˉθold

∇ R ˉ θ ≈ 1 N ∑ n = 1 N R ( τ n ) ∇ log ⁡ P ( τ n ∣ θ ) = 1 N ∑ n = 1 N R ( τ n ) ∑ t = 1 T n ∇ log ⁡ p ( a t n ∣ s t n , θ ) = 1 N ∑ n = 1 N ∑ t = 1 T n R ( τ ∘ n ) ∇ log ⁡ p ( a t n ∣ s t n , θ ) \begin{aligned} \nabla \bar{R}_\theta & \approx \frac{1}{N} \sum_{n=1}^N R\left(\tau^n\right) \nabla \log P\left(\tau^n \mid \theta\right)=\frac{1}{N} \sum_{n=1}^N R\left(\tau^n\right) \sum_{t=1}^{T_n} \nabla \log p\left(a_t^n \mid s_t^n, \theta\right) \\ & =\frac{1}{N} \sum_{n=1}^N \sum_{t=1}^{T_n} R\left(\tau_{\circ}^n\right) \nabla \log p \left(a_t^n \mid s_t^n, \theta\right)\end{aligned} RˉθN1n=1NR(τn)logP(τnθ)=N1n=1NR(τn)t=1Tnlogp(atnstn,θ)=N1n=1Nt=1TnR(τn)logp(atnstn,θ)
∇ log ⁡ p ( a t n ∣ s t n , θ ) = ∇ p ( a t n ∣ s t n , θ ) p ( a t n ∣ s t n , θ ) \nabla \log p\left(a_t^n \mid s_t^n, \theta\right) = \frac{\nabla p\left(a_t^n \mid s_t^n, \theta\right)}{p\left(a_t^n \mid s_t^n, \theta\right)} logp(atnstn,θ)=p(atnstn,θ)p(atnstn,θ)

关于从直觉上理解这里为什么要除以 p ( a t n ∣ s t n , θ ) p\left(a_t^n \mid s_t^n, \theta\right) p(atnstn,θ)

Q:请问,可以从直觉上解释 why divided by p ( a t n ∣ s t n , θ ) p\left(a_t^n \mid s_t^n, \theta\right) p(atnstn,θ)吗?
ChatGPT4

  • 从直觉上来说, ∇ log ⁡ p ( a t n ∣ s t n , θ ) \nabla \log p\left(a_t^n \mid s_t^n, \theta\right) logp(atnstn,θ)中的除以 p ( a t n ∣ s t n , θ ) p\left(a_t^n \mid s_t^n, \theta\right) p(atnstn,θ)这一步出现在对数概率的梯度中,它可以被解释为一种“归一化(Normalization)”过程。
  • 在策略梯度方法中,我们希望调整参数 θ \theta θ以增加好动作的概率,并减少坏动作的概率。为了做到这一点,我们需要考虑动作的概率:如果一个好动作已经有很高的概率被选择,我们不需要太大幅度地增加它的概率;而如果一个好动作目前只有很小的概率被选择,我们可能希望更显著地增加其被选中的概率。
  • 通过计算概率的对数梯度,我们实际上是在计算“相对于动作概率的变化率”。这样,对于那些已经很可能发生的动作,我们只进行小幅度的调整;而对于不太可能发生但却是好动作的情况,我们会做出更大的调整。

4.2 Sarsa和Q-Learning——最初的强化学习算法

2.1 基于Q-Learning的强化学习——使用Q表进行动作选择

其实Q-Learning的思想很简单,就跟把大象放进冰箱是差不多的,
基本的步骤是:

  1. 观察环境,得到observation;
  2. 根据obs查询Q表格,选择Q值最大的action;
  3. 执行该动作。

3.2 Sarsa和Q-Learning的预期目标

其实这两种算法的目标不同,导致了结果不同:

Sarsa:使得sample()行为的reward的平均水平达到最大;

Q-Learning:使得maxQ()行为的reward的达到最大;

3 DQN——用神经网络取代Q表格

3.1 为什么要用神经网络取代Q表呢?

如果动作状态的空间是连续的,则使用Q表可能无法对这种空间进行表述,(连续状态的可能取值是无限多的),

于是我们将“状态-Q值”看作是一种映射,也就是说:使用函数映射的思想来描述“状态-Q值”的映射关系

既然是函数映射,于是我们的DNN就闪亮登场了~

4 Actor-Critic算法

在我看来Actor和Critic有着这样的特点:

Actor——本能者

Critic——经验者

具体的形式就是Q Function;

量化Q的方法我们采用TD,(这也是李教授讲授的方法),

我感觉Critic有着将reward规则进行可导化的作用;

感性认识:表达了模型对规则的理解,(同时将reward函数进行可导化);

http://www.lryc.cn/news/220720.html

相关文章:

  • 2023世界传感器大会开幕,汉威科技多领域创新产品引瞩目
  • 什么是机器学习中的正则化?
  • PostgreSQL JDBC连接详解(附DEMO)
  • 学习视频剪辑:巧妙运用中画、底画,制作画中画,提升视频效果
  • Android Studio代码无法自动补全
  • 从零开始搭建微服务
  • HF Hub 现已加入存储区域功能
  • linux下实现电脑开机后软件自启动
  • 【C/PTA】循环结构进阶练习(二)
  • Visual Studio 2010 软件安装教程(附下载链接)——计算机二级专用编程软件
  • 大促来袭 零点价格如何监测
  • python 之 正则表达式模块re
  • vue项目npm install报错解决
  • ubuntu挂载共享目录的方法
  • 累计概率分布、概率分布函数(概率质量函数、概率密度函数)、度量空间、负采样(Negative Sampling)
  • 〔001〕虚幻 UE5 安装教程
  • Crypto(8) BUUCTF-bbbbbbrsa1
  • 软件测试之随机测试详解
  • 【广州华锐互动】3D全景虚拟旅游在文旅行业的应用场景
  • 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉 计算机竞赛
  • 深入了解Jedis:Java操作Redis的常见类型数据存储
  • angular+ionic+npm项目运行
  • 【数据库】数据库模式 Schema
  • RPC 原理详解
  • 新版Helix QAC 100%覆盖MISRA C++:2023
  • maven 项目添加 git-hook 脚本,约束提交内容格式
  • 18、Flink的SQL 支持的操作和语法
  • 泛微OA_lang2sql 任意文件上传漏洞复现
  • Rust编程基础核心之所有权(上)
  • 优化改进YOLOv5算法之添加DCNv3模块,有效提升目标检测效果