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

关于强化学习的一篇经典学习文章

基本概念:

Actor:策略函数,目标是最大化轨迹的期望累积奖励

Critic:价值函数,

Policy Gradient策略梯度:

(介绍逻辑)先让智能体用当前 “玩法” 和环境互动,记录每一步的 “状态、动作、得分”;再分析这些 “经验” 中哪些动作能带来高回报,朝着 “更可能选高回报动作” 的方向调整玩法;不断迭代,直到玩法足够好。

总结路线,初始化参数→与环境交互采样→计算奖励回报→估计策略梯度→更新参数→循环优化

环境:

负面奖励:

正面奖励:

以下是通过对话机器人的训练相关的奖励机制机制来控制结果

Outline(学习方法)

采取中间交叉的Actor+Critic:

Policy-based Approach——Learing an Actor(学习一个演员)

先是寻找相关的函数,然后进行观察学习,再采取行动

深度学习的三大步:

Step 1:神经网络作为演员


输入层:“观察”环境的动作,查看动作是在做什么

然后到隐藏层中提取观察的特征,转换和计算,学习“从观察到动作之间”的特征关系

输出层:每个神经元可能对应一个动作,输出采取的可能性最大的动作

那么思考一个问题,为什么要采用神经网络呢?

因为你可以想想,如果采取了其他固定的奖励机制(如table),比如我达到自己主观设定的阈值就一定选择去执行planA,局限性太大了,这些对于小场景可能适用且效果还不错,但是大场景呢?环境一直在变换,万一遇到之前没设想到的环境,那就不实用了

所以采取神经网络的优点就很明显了,分为以下几点:
1,压缩高维状态(比如游戏去“观察”行为,但是这个观察是连续且高维的,采用table会造成内存爆炸)

2,遇到没见过的状态,神经网络能举一反三,不会被限制

3,端到端的学习(无需人工去提取特征,比如传统的强化学习设计需要人工去表示状态,再表示决策,麻烦且容易出错,采用神经网络则不用,实现“观察”到“动作”的输入到输出)

Step 2:良好的功能性

判断Actor的好坏:


Actor 的本质是一个策略(比如 “左移概率 0.7、右移 0.2、开火 0.1” 的动作概率分布)。判断它 “好坏” 的核心标准是:用这个策略与环境交互时,长期累积奖励的数学期望(平均值)有多高

计算总损失

主要是由期望值来决定好坏:

1,简单场景:

在简单的场景下,我们只需要让Actor多测试几把,采平均分

2,复杂场景:

我们需要借助Critic来作辅助,用 Critic 估算 “每个动作的长期价值”,Actor 根据这个来调整策略,最终让 “平均分” 越来越高。

Step 3:衡量选出最好的function

采用添加基线(Baseline)来更加有效地“找到最好的策略函数”,我们从策略梯度和基线的作用来分析:

1,策略梯度的核心目标:最大化“期望累积奖励”:


通过公式来计算出最大化的累积奖励:Rˉθ=Eτ(τ)[R(τ)]

为了最大化 Rˉθ,需要计算它的梯度Rˉθ,并沿梯度方向更新策略参数 θ

注:

Rˉθ=Eτ(τ)[R(τ)] ,指的是每次的总奖励之和除以次数,相当于平均值

2,但是对于以上公式去计算累积奖励的话,会出现:奖励“无区分度”导致分差大:

因为会出现一种情况就是,R(τn) 总是正的,会导致一个问题:

所有的动作的概率梯度都会被正奖励放大,会出现即使某些动作不如“平均水平”但是也被错误地“鼓励(概率提高)”

这种问题出现就会导致梯度估计的方差极大(Actor更新方向错乱),导致策略效率低下

3,基线(Baseline)的作用:“中心化”奖励,精准区分动作好坏:

为了解决以上问题,我们引入了Baseline,将梯度纠正为:

RˉθN1∑n=1Nt=1Tn(R(τn)−b)∇logp(atnstn,θ)

用Baseline来区分 “好动作” 和 “一般动作”

  • R(τn)>b(当前轨迹奖励 “高于基准”),则 (R(τn)−b)>0,会鼓励该轨迹中动作(提高动作概率);
  • R(τn)<b(当前轨迹奖励 “低于基准”),则 (R(τn)−b)<0,会抑制该轨迹中动作(降低动作概率)。
    即使整体奖励都为正,也能通过 “与基线的比较”,精准区分动作的实际价值

总的来说:基线不改变梯度的 “期望方向”,但能大幅降低梯度的方差,让参数更新更稳定、高效。

做到:

  • 方差降低 → 每次更新的方向更可靠,不会因随机波动偏离最优路径;
  • 奖励区分度提升 → 能更准确地 “强化好动作,削弱差动作”。

Policy Gradient(策略梯度)

不断收集新的数据,进行带入优化,不断更新参数

几种变法与相关的使用场景:

(前面我们学习的都是Actor-Critic,接下来看其他文章去学习一下其他的方法)

http://www.dtcms.com/a/390967.html

相关文章:

  • 【JavaScript 性能优化实战】第四篇:webpack 与 vite 打包优化实战
  • maven-profile实现springboot多版本配置打包
  • OpenLayers地图交互 -- 章节二:绘制交互详解:从基础几何到复杂图形的完整绘制方案
  • Java 工厂模式 + 策略模式实战:工具管理器的设计与实现
  • 污水处理厂远程调试与智能化运维解决方案
  • 【提示工程】Ch2-提示技术(Prompt Technique)
  • vLLM - Worker
  • GitHub上面仓库名写错了,怎么改
  • 项目中的图形验证码是前端还是后端实现?
  • ✅ 基于Scrapy与朴素贝叶斯的校园舆情监测与预警系统 Django+B/S架构 可视化大屏 机器学习
  • Unity UI 插件 | Easy Popup System
  • AI证件照制作 API 快速生成证件照
  • @RequestParam和 @RequestBody能一起用吗
  • 构建高效的电商爬虫代理池:从架构设计到实战优化
  • 使用cJSON库实现JSON与C结构体的互转
  • Cursor :Python 运行路径设置自定义模块导入报错:No module named ‘xxx’ 的解决方案
  • 数图信息科技亮相唐山社区零售论坛,数字化赋能行业高质量发展
  • LLM大模型 - 实战篇 - Assistant API 原理与实战应用
  • python微博舆情分析系统 情感分析 爬虫 机器学习 新浪微博 数据采集 大数据技术(源码)✅
  • FreeRTOS消息队列剖析讲解(思路+源码)
  • Trillium Engineering-无人机万向节有效负载 - 用于战术 UAS 的 EO 和 EO/IR 无人机相机万向节
  • 【Linux网络】Socket编程预备
  • pyAutoGUI 模块主要功能介绍-(4)消息框功能
  • 自学嵌入式第四十三天:硬件方面-ARM体系架构
  • PDF清晰度提升的幕后英雄:ImprovePdf
  • 《中国垒球规则》快投垒球局面规则·垒球5号位
  • Spring Boot 快速入门:构建企业级微服务架构
  • 【论文阅读】 WebDancer: Towards Autonomous Information Seeking Agency
  • MySQL集群运维
  • 未来浏览器:重新定义信息获取与交互