核心目标: 教会一个智能体(比如机器人、游戏AI、推荐系统)通过试错奖励,学会在某个环境中完成特定任务的最佳策略。

核心角色:

  1. 智能体 (Agent): 学习者,比如玩游戏的小人、控制温度的空调系统。
  2. 环境 (Environment): 智能体所处的世界,比如游戏关卡、房间、股票市场。
  3. 状态 (State): 环境在某个时刻的快照,比如游戏画面、房间的温度湿度、股票的价格成交量。
  4. 动作 (Action): 智能体能做的事情,比如上下左右移动、调高温度、买入卖出股票。
  5. 奖励 (Reward): 环境给智能体动作的即时反馈,比如吃到金币+1分、撞到墙-1分、房间达到舒适温度+0.1、亏钱-10。

目标: 智能体要找到一个策略 (Policy),这个策略告诉它在每个状态下该做什么动作,使得长期累积的奖励总和最大化。就像玩游戏要通关得分最高,投资要长期收益最大。

强化学习三大分类:

当你在教一只狗狗学新动作(比如坐下)。

基于值的方法 (Value-Based Methods) - “算盘派”

在这里插入图片描述

  • 核心思想: 不直接学“做什么动作”,而是学每个状态或者每个“状态-动作对”值多少钱(值)。值越高,说明这个状态(或在这个状态做这个动作)未来能拿到的总奖励越多。
    • 状态值函数 V(s): 在这个状态s下,按当前策略走下去,预期能拿到多少总奖励。比如在游戏某个位置,V值高说明这是个好位置。
    • 动作值函数 Q(s, a):状态s下,做了动作a,然后按当前策略走下去,预期能拿到多少总奖励。比如在游戏某个位置,Q(跳跃)值高说明这时跳起来很划算。
  • 怎么学?
    • 智能体不断尝试(探索),观察奖励和状态变化。
    • 用观察到的结果(实际奖励 + 下一个状态的价值估计)来更新当前状态/动作的价值估计。这个更新规则基于贝尔曼方程,本质是说“当前位置的价值 ≈ 当前奖励 + 打折后的下一个位置价值”。
  • 最终策略: 学好了Q值表,最优策略就很简单了:在状态s下,选Q值最大的那个动作a! (贪婪策略)。
  • 经典算法:
    • Q-Learning: 最基础也最重要!学Q表。特点是“离线学习”:更新Q值时,用“假设下一步选最优动作”的价值 (max Q),而不管自己实际下一步会做什么(可能探索时做了随机动作)。
    • SARSA: 也是学Q表。特点是“在线学习”:更新Q值时,用实际采取的下一步动作对应的Q值。更保守,跟着当前策略走。
    • DQN (Deep Q-Network): 革命性算法! 当状态太复杂(比如游戏画面像素)无法用表格存Q值时,用一个神经网络代替Q表!输入状态(如图像),输出每个动作的Q值。解决了高维状态问题。关键技巧:经验回放(记住过去的经验随机抽着学,打破相关性)、目标网络(稳定学习目标)。
    • DQN变种:
      • Double DQN: 解决DQN容易高估Q值的问题(觉得啥动作都值钱),让动作选择(用主网络)和价值评估(用目标网络)分开。
      • Dueling DQN: 把Q值拆成状态值V(s)(这位置好不好)和动作优势A(s,a)(在这个位置做这动作比平均水平好多少)。让网络更聚焦学状态的好坏。
  • 适合场景: 动作空间是离散的、有限的(比如游戏手柄的按键)。像下棋(动作有限)、经典游戏(上下左右开火)。
  • 优点: 相对稳定。
  • 缺点: 只能处理离散动作;找到最优策略依赖于价值函数估计得准不准。

基于策略的方法 (Policy-Based Methods) - “直觉派”

在这里插入图片描述

  • 核心思想: 绕开“值”,直接学习策略本身! 用一个函数(比如神经网络)表示策略,输入状态s,直接输出动作a(确定性策略)或者输出每个动作的概率(随机性策略)。
  • 怎么学?
    • 目标就是让策略函数输出的动作序列能最大化长期累积奖励的期望
    • 核心是策略梯度定理:它告诉你怎么调整策略函数的参数,才能让期望累积奖励增加。简单说就是:如果某个动作(或动作方向)带来了好结果(高奖励),就增加以后选这个动作(或类似动作)的概率;反之减少。
  • 经典算法:
    • REINFORCE: 最基础的策略梯度算法。跑完一整局游戏(一条完整轨迹),计算总奖励,然后根据这个总奖励来调整策略。缺点: 奖励波动大(方差高),学得慢。
    • Actor-Critic (演员-评论家): 结合了值和策略! 是主流方法。
      • Actor (演员): 负责执行策略,输出动作。
      • Critic (评论家): 负责评价状态或动作的价值(学一个值函数V(s)或Q(s,a))。
      • 怎么协作? Critic 给 Actor 反馈:在状态s下,Actor选择的动作a到底有多好?这个反馈通常用优势函数 A(s, a) = Q(s, a) - V(s) 表示(动作a比在s状态下的平均动作好多少)。Actor就用这个优势值来更新策略(增大带来正优势的动作概率,减小带来负优势的动作概率)。Critic则通过TD误差等方法来学习更准的价值估计。
      • A3C (Asynchronous Advantage Actor-Critic): 利用多线程异步更新,效率高。
    • PPO (Proximal Policy Optimization): 目前最流行最实用的策略优化算法之一! 核心思想:更新策略时,步子别迈太大,避免新策略一下子变得和旧策略差太多导致性能崩盘。通过一个“裁剪”机制限制更新的幅度。优点: 稳定、效果好、相对容易调参。
    • DDPG (Deep Deterministic Policy Gradient): 针对连续动作空间(比如方向盘转多少度、电机输出多少扭矩)设计的Actor-Critic算法。Actor输出一个确定的连续动作值(不是概率)。需要加一些噪声来探索。
    • SAC (Soft Actor-Critic): 也是处理连续动作的先进算法。特色是引入了最大熵目标,不仅追求高奖励,还鼓励策略有一定的随机性(熵高),这样探索更充分,更容易找到全局最优解,也更鲁棒。
  • 适合场景: 动作空间是连续的(机器人控制、自动驾驶)或者即使是离散但策略本身很复杂需要直接建模。也常与Actor-Critic结合处理各种场景。
  • 优点: 能直接处理连续动作;可以学习随机策略(有时随机探索很重要,比如石头剪刀布)。
  • 缺点: 训练可能不太稳定;样本效率有时相对较低(需要更多试错);容易陷入局部最优。

基于模型的方法 (Model-Based Methods) - “预言家派”

在这里插入图片描述

  • 核心思想: 智能体不光学怎么动,还要学环境是怎么运作的! 它试图建立一个环境模型,这个模型能预测:在状态s做动作a后,下一个状态s’会是什么?能拿到多少奖励r?
  • 怎么用?
    • 有了这个“世界模拟器”,智能体就可以在脑子里做计划(Planning)!不用每次都去真实环境里撞墙试错,可以在模型里模拟各种动作序列,看哪个序列预测的累积奖励最高,然后去执行第一个动作。执行完,用真实结果更新模型,再继续计划。大大减少真实交互次数!
  • 经典思路/算法:
    • 动态规划 (DP): 最理想情况,环境模型(状态转移和奖励函数)完全已知且精确。直接用数学方法(迭代贝尔曼方程)就能算出最优策略和最优价值。现实问题很少这么完美。
    • Dyna: 结合模型和无模型学习(如Q-Learning)。 智能体一边在真实环境交互学习(更新Q值),一边用这些交互数据学习环境模型。然后用学到的模型生成大量模拟数据,也用这些模拟数据来更新Q值。提高了样本效率。
    • MBPO (Model-Based Policy Optimization): 先用数据学环境模型,然后在学到的模型上跑基于策略的方法(如PPO) 来优化策略。模型会不断用新数据更新。
    • MPC (Model Predictive Control): 工业界常用! 每一步都做:
      1. 观察当前状态。
      2. 用模型预测未来有限几步内不同动作序列的结果。
      3. 选择预测累积奖励最高的动作序列。
      4. 只执行这个序列的第一个动作。
      5. 下一步重复1-4。边走边看,灵活调整。
  • 适合场景: 真实环境交互代价高昂、危险或缓慢(比如操控真实机器人、化学实验、金融交易);或者环境本身是可精确建模/仿真的(比如一些棋类游戏、物理仿真器)。
  • 优点: 样本效率极高(省试错次数);能进行前瞻性规划;在仿真中训练安全。
  • 缺点: 模型很难学得准! 模型预测有误差,基于错误模型学的策略在真实环境会失效(“基于幻觉做决策”);构建和利用模型本身有计算开销。

对比:

特点基于值 (Value-Based)基于策略 (Policy-Based)基于模型 (Model-Based)
核心 (V/Q值)直接学策略 (Policy)环境模型 (预测 s’ 和 r)
输出策略间接 (选值最大的动作)直接 (输出动作或概率)直接或间接 (在模型上规划)
动作空间适合离散动作离散和连续动作都行离散和连续动作都行
稳定性相对稳定可能不稳定 (策略梯度)依赖模型精度 (模型不准策略就崩)
样本效率中等通常较低 (尤其REINFORCE)非常高 (能用模型模拟)
规划能力无显式规划无显式规划有显式规划 (在模型里模拟未来)
经典算法Q-Learning, SARSA, DQN及其变种REINFORCE, Actor-Critic, PPO, DDPG, SACDyna, MBPO, MPC
比喻算盘派 (精打细算每个位置/动作值不值钱)直觉派 (凭感觉和经验直接出招)预言家派 (先搞懂世界规则,再推演最优解)

简单选择指南:

  • 如果你的问题动作是离散的(按键选择),状态不太复杂,试试Q-Learning/DQN
  • 如果你的问题动作是连续的(控制机械臂、开车),或者需要随机策略,首选PPO、SAC这类策略梯度/Actor-Critic方法。
  • 如果你有精确的环境模型或者交互代价极高(真机器人、高风险),或者能在好的仿真器里训练,基于模型的方法 (MBPO, MPC) 是首选,效率极高。
  • Actor-Critic (PPO, SAC) 是当前非常通用和强大的主流选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85080.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85080.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/85080.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

城市排水生命线安全运行监测项目

近年来,城市内涝、污水溢流等问题频发,让排水管网这一"城市生命线"的安全运行备受关注。如何让地下的"毛细血管"更智能、更可靠?本文将带您深入解析城市排水生命线安全运行监测项目的建设逻辑与技术内核,看科…

LeetCode - 34. 在排序数组中查找元素的第一个和最后一个位置

题目 34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣&#xff08;LeetCode&#xff09; 思路 查找左边界 初始化 left 0, right nums.size() - 1 当 left < right 时循环&#xff1a; 计算中点 mid left (right - left) / 2 如果 nums[mid] < target…

Tesollo四指灵巧手DG-4F:18自由度与多种抓取模式结合实现高精度操作

Tesollo四指灵巧手 DG-4F 是一款具备 18 自由度的多模态末端执行器&#xff0c;采用模块化结构设计&#xff0c;融合人手灵活性与夹爪高效性特点。该产品兼容 Universal Robots、Techman、Doosan Robotics、Rainbow Robotics 等主流机器人平台&#xff0c;适用于工业自动化、科…

深入浅出JavaScript 原型链:对象继承的“隐形链条”

深入浅出JavaScript 原型链&#xff1a;对象继承的“隐形链条” 在 JavaScript 的世界里&#xff0c;原型链&#xff08;Prototype Chain&#xff09;是一个核心概念。它如同一条隐形的链条&#xff0c;连接着所有对象&#xff0c;使得代码能够高效地共享属性和方法。理解原型…

LINUX中MYSQL的使用

LINUX中MYSQL的使用 MYSQL的数据类型 bool&#xff1a; 布尔类型 0 或者 1 CHAR&#xff1a; 单字符的字符 CHAR&#xff08;n&#xff09;:多字节字符 VARCHAR&#xff08;n&#xff09;&#xff1a;可变长度的字符型 TINYINT &#xff1a; 单字节整型 SMALLINT&#x…

打卡第48天:随机函数与广播机制

知识点回顾&#xff1a; 随机张量的生成&#xff1a;torch.randn函数卷积和池化的计算公式&#xff08;可以不掌握&#xff0c;会自动计算的&#xff09;pytorch的广播机制&#xff1a;加法和乘法的广播机制 ps&#xff1a;numpy运算也有类似的广播机制&#xff0c;基本一致 …

学习昇腾开发的第四天--基本指令

1、查看npu当前状态信息 npu-smi info 2、查看NPU的ID npu-smi info -l3、调用python python3 4、修改用户名 su - HwHiAiUser 5、查看cann版本 cat /usr/local/Ascend/ascend-toolkit/latest/compiler/version.info 6、删除文件夹 sudo rm -rf HelloWorld7、在本地环…

vue3 - 自定义hook

自定义hook 简单点来说就是将人物或者订单的所有数据和方法放在一个ts文件里面 这样便于维护 假如一个人只需要管 人物的模块 那他只需要操作usePerson.ts文件就可以了 //useDog.ts import { ref,reactive} from vue; import axios from axios;export default function(){…

【python】bash: !‘: event not found

报错 # 2. 测试smplx是否工作&#xff08;可能不需要chumpy&#xff09; python -c "import smplx; print(✅ smplx works!)"bash: !: event not found 分析 这是bash的历史扩展问题&#xff0c;感叹号被解释为历史命令。用这些方法解决&#xff1a; &#x1f680…

【Python打卡Day47】注意力热力图可视化@浙大疏锦行

可视化空间注意力热力图的意义&#xff1a; 提升模型可解释性 热力图能直观展示模型决策的依据区域&#xff0c;破除深度学习"黑箱"困境。例如在图像识别中&#xff0c;可以看到模型识别"猫"是因为关注了猫耳和胡须区域&#xff0c;识别"禁止通行&qu…

树状数组 2

L - 树状数组 2 洛谷 - P3368 Description 如题&#xff0c;已知一个数列&#xff0c;你需要进行下面两种操作&#xff1a; 将某区间每一个数加上 x&#xff1b; 求出某一个数的值。 Input 第一行包含两个整数 N、M&#xff0c;分别表示该数列数字的个数和操作的总个数。…

YOLOv2 技术详解:目标检测的又一次飞跃

&#x1f9e0; YOLOv2 技术详解&#xff1a;目标检测的又一次飞跃 一、前言 在 YOLOv1 提出后&#xff0c;虽然实现了“实时性 单阶段”的突破&#xff0c;但其在精度和小物体检测方面仍有明显不足。为了弥补这些缺陷&#xff0c;Joseph Redmon 等人在 2017 年提出了 YOLOv2…

JAFAR Jack up Any Feature at Any Resolution

GitHub PaPer JAFAR: Jack up Any Feature at Any Resolution 摘要 基础视觉编码器已成为各种密集视觉任务的核心组件。然而&#xff0c;它们的低分辨率空间特征输出需要特征上采样以产生下游任务所需的高分辨率模式。在这项工作中&#xff0c;我们介绍了 JAFAR——一种轻量级…

SamWaf 开源轻量级网站防火墙源码(源码下载)

SamWaf网站防火墙是一款适用于小公司、工作室和个人网站的开源轻量级网站防火墙&#xff0c;完全私有化部署&#xff0c;数据加密且仅保存本地&#xff0c;一键启动&#xff0c;支持Linux&#xff0c;Windows 64位,Arm64。 主要功能&#xff1a; 代码完全开源 支持私有化部署…

79Qt窗口_QDockWidget的基本使用

目录 4.1 浮动窗⼝的创建 4.2 设置停靠的位置 浮动窗⼝ 在 Qt 中&#xff0c;浮动窗⼝也称之为铆接部件。浮动窗⼝是通过 QDockWidget类 来实现浮动的功能。浮动窗 ⼝⼀般是位于核⼼部件的周围&#xff0c;可以有多个。 4.1 浮动窗⼝的创建 浮动窗⼝的创建是通过 QDockWidget…

UE/Unity/Webgl云渲染推流网址,如何与外部网页嵌套和交互?

需求分析&#xff1a;用threejs开发的数字孪生模型&#xff0c; 但是通过webgl技术网页中使用&#xff0c;因为模型数据量大&#xff0c;加载比较慢&#xff0c;且需要和其他的业务系统进行网页嵌套和交互&#xff0c;使用云渲染技术形成的推流网址&#xff0c;如何与外部网页嵌…

在Termux中搭建完整Python环境(Ubuntu+Miniconda)

蹲坑也能写python? 📱 环境准备🛠 详细搭建步骤步骤1:安装Linux容器工具步骤2:查看可用Linux发行版步骤3:安装Ubuntu系统步骤4:登录Ubuntu环境步骤5:下载Miniconda安装包步骤6:安装Miniconda⚡ 环境验证💡 使用技巧⚠️ 注意事项前言:想在吃饭、通勤甚至休息间隙…

EventSourcing.NetCore:基于事件溯源模式的 .NET Core 库

在现代软件架构中&#xff0c;事件溯源&#xff08;Event Sourcing&#xff09;已经成为一种非常流行的模式&#xff0c;尤其适用于需要高可用性和数据一致性的场景。EventSourcing.NetCore 是一个基于事件溯源模式的 .NET Core 库&#xff0c;旨在帮助开发者更加高效地实现这一…

Linux下的第一个程序——进度条(命令行版本)

文章目录 编写Linux下的第一个小程序——进度条进度条的样式前置知识回车和换行缓冲区对回车、换行、缓冲区、输出的测试代码简单的测试样例倒计时程序 进度条程序理论版本基本框架代码实现 真实版本基础框架 代码实现 编写Linux下的第一个小程序——进度条 在前面的基础开发工…

【项目】仿muduo库one thread one loop式并发服务器前置知识准备

&#x1f4da; 博主的专栏 &#x1f427; Linux | &#x1f5a5;️ C | &#x1f4ca; 数据结构 | &#x1f4a1;C 算法 | &#x1f152; C 语言 | &#x1f310; 计算机网络 |&#x1f5c3;️ mysql 本文介绍了一种基于muduo库实现的主从Reactor模型高并发服务器框架…