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

免模型控制

文章目录

  • 免模型控制
  • Q-Learning 算法
    • 原理
  • Sarsa 算法
    • 区别:


免模型控制

免模型控制要解决的问题是,如何选择动作以达到最高得分

Q-Learning 算法

原理

首先Q-Learning 确定了一个前提最优策略:π(s)=arg⁡max⁡aQ(s,a)\pi(s) = \arg\max_a Q(s,a)π(s)=argmaxaQ(s,a) 。这个策略本质上就是 “贪心”。只要 Q 函数能收敛到Q∗Q^*Q(最优动作价值),那么这个贪心策略就等价于最优策略 π∗\pi^*π(因为每一步都选 “理论上长期收益最大的动作”)。
参考下面的公式,
Vπ(s)=∑a∈Aπ(a∣s)Qπ(s,a)V_{\pi}(s)=\sum_{a \in A} \pi(a \mid s) Q_{\pi}(s, a) Vπ(s)=aAπ(as)Qπ(s,a)
策略固定了,我们只需要直接预测动作价值函数,在决策时选择动作价值即 Q 值最大对应的动作即可。那如何实现这个逻辑呢?主要是根据下面的更新公式不断迭代而成
Q - learning 算法更新公式如下图所示。
Q(st,at)←Q(st,at)+α[rt+γmax⁡aQ(st+1,a)−Q(st,at)]Q\left(s_{t}, a_{t}\right) \leftarrow Q\left(s_{t}, a_{t}\right)+\alpha\left[r_{t}+\gamma \max _{a} Q\left(s_{t+1}, a\right)-Q\left(s_{t}, a_{t}\right)\right] Q(st,at)Q(st,at)+α[rt+γamaxQ(st+1,a)Q(st,at)]
时序差分方法中状态价值函数的更新公式:
V(st)←V(st)+α[rt+1+γV(st+1)−V(st)]V\left(s_{t}\right) \leftarrow V\left(s_{t}\right)+\alpha\left[r_{t+1}+\gamma V\left(s_{t+1}\right)-V\left(s_{t}\right)\right]V(st)V(st)+α[rt+1+γV(st+1)V(st)]
两者存在惊人的相似,不过这不是巧合,因为两者都采用的是基于时序差分的更新方法
不过也有不一样的地方:γmax⁡aQ(st+1,a)VSγV(st+1)\gamma \max_{a} Q(s_{t+1}, a) \quad VS \quad \gamma V(s_{t+1})γamaxQ(st+1,a)VSγV(st+1)由于这一点的不同引入了一个下新的概念就是叫过估计
动作价值函数更新时是直接拿最大的未来动作价值的来估计的,而在状态价值函数更新中相当于是拿对应的平均值来估计的。这就会导致这个估计相当于状态价值函数中的估计更不准确,称之为Q值过估计。

Sarsa 算法

区别:

Q(st,at)←Q(st,at)+α[rt+γQ(st+1,at+1)−Q(st,at)]Q\left(s_{t}, a_{t}\right) \leftarrow Q\left(s_{t}, a_{t}\right)+\alpha\left[r_{t}+\gamma Q\left(s_{t+1}, a_{t+1}\right)-Q\left(s_{t}, a_{t}\right)\right] Q(st,at)Q(st,at)+α[rt+γQ(st+1,at+1)Q(st,at)]
与Q-learning区别在于一个是同策略一个是异策略。

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

相关文章:

  • 解决笔记本合盖开盖DPI缩放大小变 (异于网传方法,Win11 24H2)
  • TCP模型,mqtt协议01 day41
  • 全国产8通道250M AD FMC子卡
  • C语言————原码 补码 反码 (试图讲清楚版)
  • 基于粒子群优化的PID控制在药液流量控制系统中的应用
  • 数组相关学习
  • IP证书:构建数字世界知识产权安全防线的基石
  • Jenkins构建间代码变更记录追踪方案
  • JAVA知识点(四):SpringBoot与分布式、微服务架构
  • 从huggingface上下载模型
  • 前端学习日记(十三)
  • Qt 网络编程进阶:HTTP 客户端实现
  • Microsoft-DNN NTLM暴露漏洞复现(CVE-2025-52488)
  • 使用Python绘制金融数据可视化工具
  • ISIS高级特性LSP的分片扩展
  • k8s下springboot-admin 监控服务部署,客户端接入
  • MYSQL高可用集群搭建--docker
  • Go语言环境搭建与VS Code开发配置
  • OneNote 当前无法同步笔记。将继续尝试。 (错误代码: 0xE00009C8 bb0ur)问题解决
  • Qt 与 MySQL 高级应用开发
  • pytorch学习笔记-使用DataLoader加载固有Datasets(CIFAR10),使用tensorboard进行可视化
  • 第三篇:VAE架构详解与PyTorch实现:从零构建AI的“视觉压缩引擎”
  • 星图云开发者平台新功能速递 | 页面编辑器:全场景编辑器,提供系统全面的解决方案
  • SQL性能优化
  • 【初识数据结构】CS61B中的快速排序
  • 2025年第四届创新杯(原钉钉杯)赛题浅析-助攻快速选题
  • 【c++】问答系统代码改进解析:新增日志系统提升可维护性——关于我用AI编写了一个聊天机器人……(14)
  • 【C++进阶】第7课—红黑树
  • 什么是主成分分析法和方差
  • 【神经网络概述】从感知机到深度神经网络(CNN RNN)