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

强化学习入门:交叉熵方法数学推导

前言

 最近想开一个关于强化学习专栏,因为DeepSeek-R1很火,但本人对于LLM连门都没入。因此,只是记录一些类似的读书笔记,内容不深,大多数只是一些概念的东西,数学公式也不会太多,还望读者多多指教。本次阅读书籍为:马克西姆的《深度强化学习实践》
 限于篇幅原因,请读者首先看下历史文章:
 马尔科夫过程
 马尔科夫奖励过程
 马尔科夫奖励过程二
 RL框架Gym简介
 Gym实现CartPole随机智能体
 本篇开始,将介绍第一个RL算法,交叉熵算法。

1、交叉熵公式推导

1.1.前置基础

 在介绍交叉熵算法之前,为了防止读者对交叉熵算法由来有疑惑,因此,先简单介绍下数学公式推导:
E x ∼ p ( x ) [ H ( x ) ] = ∫ x p ( x ) H ( x ) d x E_{x \sim p(x)}[H(x)]=\int_{x}p(x)H(x)dx Exp(x)[H(x)]=xp(x)H(x)dx
 在上述公式中: p ( x ) p(x) p(x)是所有可能策略概率分布,而 H ( x ) H(x) H(x)是采取x策略所获得的奖励值。而目的则是得到奖励值的期望,也就是将其积分。
 但由于直接计算 p ( x ) p(x) p(x)很难,因此我们希望找到一个 q ( x ) q(x) q(x)来逼近 p ( x ) p(x) p(x),则此时公式变成:
E x ∼ p ( x ) [ H ( x ) ] = ∫ x p ( x ) H ( x ) d x = ∫ x q ( x ) p ( x ) q ( x ) H ( x ) d x = E x ∼ q ( x ) [ q ( x ) p ( x ) q ( x ) H ( x ) ] E_{x \sim p(x)}[H(x)]=\int_{x}p(x)H(x)dx=\int_{x}q(x)\frac{p(x)}{q(x)}H(x)dx=E_{x \sim q(x)}[q(x)\frac{p(x)}{q(x)}H(x)] Exp(x)[H(x)]=xp(x)H(x)dx=xq(x)q(x)p(x)H(x)dx=Exq(x)[q(x)q(x)p(x)H(x)]
 然后根据KL散度来逐步用 q ( x ) q(x) q(x)来逼近 p ( x ) p(x) p(x),KL散度定义为:
K L ( p ( x ) ∣ ∣ q ( x ) ) = E x ∼ p ( x ) l o g p ( x ) q ( x ) = E x ∼ p ( x ) l o g ( p ( x ) ) − E x ∼ p ( x ) l o g ( q ( x ) ) KL(p(x)||q(x)) = E_{x \sim p_(x)}log \frac{p(x)}{q(x)} = E_{x \sim p(x)}log(p(x)) - E_{x \sim p(x)}log(q(x)) KL(p(x)∣∣q(x))=Exp(x)logq(x)p(x)=Exp(x)log(p(x))Exp(x)log(q(x))
 则在上述公式中:第一项为熵,由于跟优化目标无关,可以忽略;第二项为交叉熵,即深度学习中通常的损失函数。

1.2.推导迭代公式

 根据公式1可以得出:
E x ∼ p ( x ) [ H ( x ) ] = E x ∼ q i ( x ) [ p ( x ) q i ( x ) H ( x ) ] E_{x \sim p(x)}[H(x)] = E_{x \sim q_i(x)}\left[\frac{p(x)}{q_i(x)} H(x)\right] Exp(x)[H(x)]=Exqi(x)[qi(x)p(x)H(x)]
 之后可以使用重要采样来重写 KL 散度。重要采样是一种通过另一个分布 q i ( x ) q_i(x) qi(x) 来估计期望的方法。具体来说:
E x ∼ p ( x ) [ f ( x ) ] = ∫ f ( x ) p ( x ) d x = ∫ f ( x ) p ( x ) q i ( x ) q i ( x ) d x = E x ∼ q i ( x ) [ f ( x ) p ( x ) q i ( x ) ] E_{x \sim p(x)}[f(x)] = \int f(x) p(x) \, dx = \int f(x) \frac{p(x)}{q_i(x)} q_i(x) \, dx = E_{x \sim q_i(x)}\left[f(x) \frac{p(x)}{q_i(x)}\right] Exp(x)[f(x)]=f(x)p(x)dx=f(x)qi(x)p(x)qi(x)dx=Exqi(x)[f(x)qi(x)p(x)]

将这个思想应用到 KL 散度上:
K L ( p ( x ) ∥ q i + 1 ( x ) ) = E x ∼ p ( x ) log ⁡ p ( x ) q i + 1 ( x ) = E x ∼ q i ( x ) [ log ⁡ p ( x ) q i + 1 ( x ) ⋅ p ( x ) q i ( x ) ] KL(p(x) \| q_{i+1}(x)) = E_{x \sim p(x)} \log \frac{p(x)}{q_{i+1}(x)} = E_{x \sim q_i(x)}\left[\log \frac{p(x)}{q_{i+1}(x)} \cdot \frac{p(x)}{q_i(x)}\right] KL(p(x)qi+1(x))=Exp(x)logqi+1(x)p(x)=Exqi(x)[logqi+1(x)p(x)qi(x)p(x)]

进一步展开表达式:
K L ( p ( x ) ∥ q i + 1 ( x ) ) = E x ∼ q i ( x ) [ p ( x ) q i ( x ) ( log ⁡ p ( x ) − log ⁡ q i + 1 ( x ) ) ] KL(p(x) \| q_{i+1}(x)) = E_{x \sim q_i(x)}\left[\frac{p(x)}{q_i(x)} \left(\log p(x) - \log q_{i+1}(x)\right)\right] KL(p(x)qi+1(x))=Exqi(x)[qi(x)p(x)(logp(x)logqi+1(x))]

 将表达式分离为两部分:
K L ( p ( x ) ∥ q i + 1 ( x ) ) = E x ∼ q i ( x ) [ p ( x ) q i ( x ) log ⁡ p ( x ) ] − E x ∼ q i ( x ) [ p ( x ) q i ( x ) log ⁡ q i + 1 ( x ) ] KL(p(x) \| q_{i+1}(x)) = E_{x \sim q_i(x)}\left[\frac{p(x)}{q_i(x)} \log p(x)\right] - E_{x \sim q_i(x)}\left[\frac{p(x)}{q_i(x)} \log q_{i+1}(x)\right] KL(p(x)qi+1(x))=Exqi(x)[qi(x)p(x)logp(x)]Exqi(x)[qi(x)p(x)logqi+1(x)]

注意到第一部分 E x ∼ q i ( x ) [ p ( x ) q i ( x ) log ⁡ p ( x ) ] E_{x \sim q_i(x)}\left[\frac{p(x)}{q_i(x)} \log p(x)\right] Exqi(x)[qi(x)p(x)logp(x)] 是关于 q i + 1 ( x ) q_{i+1}(x) qi+1(x) 的常数项,因此我们在最小化 KL 散度时可以忽略这一部分:
min ⁡ q i + 1 ( x ) K L ( p ( x ) ∥ q i + 1 ( x ) ) = min ⁡ q i + 1 ( x ) − E x ∼ q i ( x ) [ p ( x ) q i ( x ) log ⁡ q i + 1 ( x ) ] \min_{q_{i+1}(x)} KL(p(x) \| q_{i+1}(x)) = \min_{q_{i+1}(x)} -E_{x \sim q_i(x)}\left[\frac{p(x)}{q_i(x)} \log q_{i+1}(x)\right] qi+1(x)minKL(p(x)qi+1(x))=qi+1(x)minExqi(x)[qi(x)p(x)logqi+1(x)]

 为了与原始问题中的 H ( x ) H(x) H(x) 结合,假设 H ( x ) = 1 H(x) =1 H(x)=1(即没有额外的权重)。如果 H ( x ) ≠ 1 H(x) \neq 1 H(x)=1,则可以在目标函数中包含 H ( x ) H(x) H(x):
min ⁡ q i + 1 ( x ) − E x ∼ q i ( x ) [ p ( x ) q i ( x ) H ( x ) log ⁡ q i + 1 ( x ) ] \min_{q_{i+1}(x)} -E_{x \sim q_i(x)}\left[\frac{p(x)}{q_i(x)} H(x) \log q_{i+1}(x)\right] qi+1(x)minExqi(x)[qi(x)p(x)H(x)logqi+1(x)]

 则最终迭代公式为:
q i + 1 ( x ) = arg ⁡ min ⁡ − E x ∼ q i ( x ) p ( x ) q i ( x ) H ( x ) log ⁡ q i + 1 ( x ) q_{i+1}(x) = \arg\min -E_{x \sim q_i(x)} \frac{p(x)}{q_i(x)} H(x) \log q_{i+1}(x) qi+1(x)=argminExqi(x)qi(x)p(x)H(x)logqi+1(x)

2、转化到RL

 根据上节推导出的公式,换元得到RL的损失函数:
π i + 1 ( a ∣ s ) = arg ⁡ min ⁡ − E z ∼ π i ( a ∣ s ) p ( x ) π i ( a ∣ s ) H ( x ) log ⁡ π i + 1 ( a ∣ s ) \pi_{i+1}(a|s) = \arg\min -E_{z \sim \pi_i(a|s)} \frac{p(x)}{\pi_i(a|s)} H(x) \log \pi_{i+1}(a|s) πi+1(as)=argminEzπi(as)πi(as)p(x)H(x)logπi+1(as)
 在上述公式中, p ( x ) H ( x ) p(x)H(x) p(x)H(x)可以用指示函数替代,超过阈值为1,否则奖励为0。最终通过SGD就能得到一个 π \pi π最优策略模型,进而逼近真实的分布。

总结

 本篇的公式比较多,我也有点儿懵逼,可以不用深入理解。下一篇将交叉熵方法用到CartPole智能体看看效果变得如何。

相关文章:

强化学习入门:交叉熵方法数学推导

前言 最近想开一个关于强化学习专栏,因为DeepSeek-R1很火,但本人对于LLM连门都没入。因此,只是记录一些类似的读书笔记,内容不深,大多数只是一些概念的东西,数学公式也不会太多,还望读者多多指教…...

CSS3 的特性

目录 CSS3 的特性CSS3 的三大特性1. 层叠性2. 继承性3. 优先级 CSS3 新增特性1. 选择器2. 盒模型3. 背景4. 渐变5. 过渡6. 动画7. 2D/3D 变换8. 弹性布局9. 网格布局10. 媒体查询11. 多列布局12. 文字阴影和盒子阴影 CSS3 的特性 CSS3 的三大特性 1. 层叠性 定义&#xff1a…...

Vue前端篇——Vue 3的watch深度解析

📌 前言 在 Vue.js 的世界中,“数据驱动”是其核心理念之一。而在这一理念下,watch 扮演着一个非常关键的角色。它允许我们监听响应式数据的变化,并在其发生变化时执行特定的业务逻辑。 本文将通过实际代码示例,深入…...

行为型设计模式之Mediator(中介者)

行为型设计模式之Mediator(中介者) 1)意图 用一个中介对象来封装一系列的对象的交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 2)结构 其中&#xff…...

三维图形、地理空间、激光点云渲染技术术语解析笔记

三维图形、地理空间、激光点云渲染技术术语解析笔记 code review! 文章目录 三维图形、地理空间、激光点云渲染技术术语解析笔记1. Minecraft风格的方块渲染2. Meshing(网格化)3. Mipmapping(多级纹理映射)4. Marching Cubes&…...

从webrtc到janus简介

1.基础知识 1.1 信令的基础知识 在 WebRTC(Web Real-Time Communication) 中,信令(Signaling) 是实现浏览器之间实时通信的关键机制,负责在通信双方(或多方)之间传递控制信息&…...

JVM 核心概念深度解析

最近正在复习Java八股,所以会将一些热门的八股问题,结合ai与自身理解写成博客便于记忆 一、JVM内存结构/运行时数据区 JVM运行时数据区主要分为以下几个部分: 程序计数器(PC Register) 线程私有,记录当前线程执行的字节码行号唯…...

api将token设置为环境变量

右上角 可以新增或者是修改当前的环境 环境变量增加一个token,云端值和本地值可以不用写 在返回token的接口里设置后执行操作,通常是登录的接口 右侧也有方法提示 //设置环境变量 apt.environment.set("token", response.json.data.token); 在需要传t…...

SIFT算法详细原理与应用

SIFT算法详细原理与应用 1 SIFT算法由来 1.1 什么是 SIFT? SIFT,全称为 Scale-Invariant Feature Transform(尺度不变特征变换),是一种用于图像特征检测和描述的经典算法。它通过提取图像中的局部关键点,…...

AlphaDrive:通过强化学习和推理释放自动驾驶中 VLM 的力量

AlphaDrive: Unleashing the Power of VLMs in Autonomous Driving via Reinforcement Learning and Reasoning 25年3月来自华中科技大学和地平线的论文 OpenAI 的 o1 和 DeepSeek R1 在数学和科学等复杂领域达到甚至超越了人类专家水平,其中强化学习(R…...

【八股消消乐】如何解决SQL线上死锁事故

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本专栏《八股消消乐》旨在记录个人所背的八股文,包括Java/Go开发、Vue开发、系统架构、大模型开发、具身智能、机器学习、深度学习、力扣算法等相关知识点&#xff…...

如何使用 HTML、CSS 和 JavaScript 随机更改图片颜色

原文:如何使用 HTML、CSS 和 JavaScript 随机更改图片颜色 | w3cschool笔记 (请勿标记为付费!!!!) 在网页开发中,为图片添加动态效果可以显著提升用户体验。今天,我将向…...

html如何在一张图片上的某一个区域做到点击事件

在HTML中&#xff0c;可以通过<map>和<area>标签来实现对图片的某个区域添加点击事件。这种方法通常用于创建图像地图&#xff08;Image Map&#xff09;&#xff0c;允许用户点击图片的不同区域触发不同的事件。 以下是实现步骤和代码示例&#xff1a; 1. 准备图…...

Java数据校验:确保数据完整性和正确性

在软件开发中&#xff0c;数据校验是确保应用程序数据完整性和正确性的关键步骤。Java 提供了多种方式来实现数据校验&#xff0c;从简单的条件检查到复杂的框架支持。在这篇博客中&#xff0c;我们将探讨 Java 中数据校验的重要性、常用的校验注解以及如何整合校验框架来提高代…...

Java-IO流之序列化与反序列化详解

Java-IO流之序列化与反序列化详解 一、序列化与反序列化概述1.1 基本概念1.2 核心接口与类1.3 应用场景 二、Java序列化的基本实现2.1 实现Serializable接口2.2 使用ObjectOutputStream进行序列化2.3 使用ObjectInputStream进行反序列化 三、序列化的高级特性3.1 serialVersion…...

机器学习14-迁移学习

迁移学习学习笔记 一、迁移学习概述 迁移学习是机器学习中的一个重要领域&#xff0c;它旨在解决当目标任务的训练数据有限时&#xff0c;如何利用与目标任务相关但不完全相同的源任务数据来提高学习性能的问题。在现实世界中&#xff0c;获取大量高质量的标注数据往往成本高…...

CAN通信收发测试(USB2CAN模块测试实验)

1.搭建测试环境 电脑&#xff1a;安装 USB 驱动&#xff0c;安装原厂调试工具&#xff0c;安装cangaroo&#xff08;参考安装包的入门教程即可&#xff09; USB驱动路径&#xff1a;~\CAN分析仪资料20230701_Linux\硬件驱动程序 原厂调试工具路径&#xff1a;~\CAN分析仪资料2…...

小白初学SpringBoot记录

1.对于通过json返回用户信息时&#xff0c;需要忽略password字段操作&#xff1a; 1.1 pom配置jackson细节&#xff1a; <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>…...

OSCP备战-BSides-Vancouver-2018-Workshop靶机详细步骤

一、靶机介绍 靶机地址&#xff1a;https://www.vulnhub.com/entry/bsides-vancouver-2018-workshop%2C231/ 靶机难度&#xff1a;中级&#xff08;CTF&#xff09; 靶机发布日期&#xff1a;2018年3月21日 靶机描述&#xff1a; Boot2root挑战旨在创建一个安全的环境&…...

PDF转Markdown/JSON软件MinerU最新1.3.12版整合包下载

MinerU发布至今我已经更新多版整合包了&#xff0c;5天前MinerU发布了第一个正式版1.0.1&#xff0c;并且看到在18小时之前有更新模型文件&#xff0c;我就做了个最新版的一键启动整合包。 2025年02月21日更新v1.1.0版整合包 2025年02月27日更新v1.2.0版整合包 2025-06-05 更…...

Android第十三次面试总结基础

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

【深入学习Linux】System V共享内存

目录 前言 一、共享内存是什么&#xff1f; 共享内存实现原理 共享内存细节理解 二、接口认识 1.shmget函数——申请共享内存 2.ftok函数——生成key值 再次理解ftok和shmget 1&#xff09;key与shmid的区别与联系 2&#xff09;再理解key 3&#xff09;通过指令查看/释放系统中…...

编程基础:执行流

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 执行流同步&#xff1a;顺序执行&#xff0c;只有一个执行流异步&#xff1a;新开后台(次)执行流&#xff0c;后台执行流要确保不能影响主执行流。共有两个执行流。 阻塞&#xff1a;任务阻塞执行流&#xff0c;导致…...

理解非结构化文档:将 Reducto 解析与 Elasticsearch 结合使用

作者&#xff1a;来自 Elastic Adel Wu 演示如何将 Reducto 的文档处理与 Elasticsearch 集成以实现语义搜索。 Elasticsearch 与业界领先的生成式 AI 工具和提供商有原生集成。欢迎观看我们的网络研讨会&#xff0c;了解如何超越 RAG 基础&#xff0c;或使用 Elastic 向量数据…...

算法训练第十天

232. 用栈实现队列 代码&#xff1a; class MyQueue(object):def __init__(self):self.arr1 []self.arr2 []def push(self, x):""":type x: int:rtype: None"""self.arr1.append(x)def pop(self):""":rtype: int""…...

2种官方方法关闭Windows防火墙

2种官方方法关闭Windows防火墙 引言一、防火墙:你电脑的"智能安检员"二、这些场景,可能需要"临时撤防"三、极速关闭方案方法一:通过系统设置(Win10/11专属通道)方法二:通过传统控制面板(全系统通用:Win7-11全系)四、 必读安全警告(关闭前请三思!…...

[面试精选] 0094. 二叉树的中序遍历

文章目录 1. 题目链接2. 题目描述3. 题目示例4. 解题思路5. 题解代码6. 复杂度分析 1. 题目链接 94. 二叉树的中序遍历 - 力扣&#xff08;LeetCode&#xff09; 2. 题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 3. 题目示例 示例 1 : 输入&…...

股指期货期权交易规则是什么?

本文主要介绍股指期货期权交易规则是什么&#xff1f;股指期货期权是以股指期货合约为标的物的期权交易&#xff0c;其规则结合了期货与期权的特点。 股指期货期权交易规则是什么&#xff1f; 一、基础交易规则 交易时间 交易日9:30-11:30&#xff0c;13:00-15:00&#xff0…...

学习笔记(23): 机器学习之数据预处理Pandas和转换成张量格式[1]

学习笔记(23): 机器学习之数据预处理Pandas和转换成张量格式[1] 学习机器学习&#xff0c;需要学习如何预处理原始数据&#xff0c;这里用到pandas&#xff0c;将原始数据转换为张量格式的数据。 1、安装pandas pip install pandas 2、写入和读取数据 >>创建一个人工…...

2025年6月6日第一轮

2025年6月6日 The rapid in Chiese industdy is developnig e,and it is From be in a enjoy a deep is developing The drone industry in China is developing The drone industy in china develops rapidly and is in a leading position in in the world. The dro…...