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

强化学习入门:价值、回报、策略概念详解

前言

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

1、出发点

 原定本篇博客该介绍bellman方程的,但发现自己对于一些基础概念的计算和理解有点儿模糊,于是本篇先恶补一下目前RL所出现的一些基础概念,并搭配详细的计算公式。

2、示例

在这里插入图片描述
 这里以书中一个例子来说明一些概念,在上图中,每个灰色节点表示状态,每条边上实线圆表示状态转移概率,每个虚线圆则表示状态转移所获得的奖励。
 下面将举个视为片段的例子,在RL中也被称为“状态链”。
片段:家–> 咖啡 --> 计算机 --> 家。
 在引入了片段后,就能解释何为“回报”定义了:
 这里先贴下回报公式,对于一个片段来说,在 t t t时刻的回报定义为:
G t = R t + 1 + γ R t + 2 + . . . = ∑ k = 0 ∞ γ k R t + k + 1 G_t = R_{t+1} + \gamma R_{t+2} +... = \sum_{k=0}^{\infty}\gamma^kR_{t+k+1} Gt=Rt+1+γRt+2+...=k=0γkRt+k+1
其中 γ \gamma γ是超参数, R t R_t Rt表示 t t t时刻奖励。
 这里有个问题,对于一个智能体来说,可执行的状态链太多了,实际上回报应用的不太多,因此,这里引入了一个状态的期望回报(对大量状态链求回报的期望),即状态的价值
V ( s ) = E [ G ] = E [ ∑ k = 0 ∞ γ k R t + k + 1 ] V(s) = E[G] = E[\sum_{k=0}^{\infty}\gamma^kR_{t+k+1}] V(s)=E[G]=E[k=0γkRt+k+1]
 okay,现在拿到公式了,现在计算状态“家”的价值:

家–>家家–>咖啡
概率0.60.4
奖励11

 则根据价值的定义:总共有两个状态链:则家的价值为
V ( 家 ) = 0.6 ∗ 1 + 0.4 ∗ 1 = 1.0 V(家) = 0.6*1 + 0.4*1 = 1.0 V()=0.61+0.41=1.0
 按照同样的道理:能得到其余状态的价值:

V ( c o f f e e ) = 2 × 0.7 + 1 × 0.1 + 3 × 0.2 = 2.1 V ( c o m p u t e r ) = 2 × 0.7 + 1 × 0.1 + 3 × 0.2 = 2.8 V(coffee) = 2×0.7 + 1×0.1 + 3×0.2 = 2.1 \\ V(computer) = 2×0.7 + 1×0.1 + 3×0.2 = 2.8 V(coffee)=2×0.7+1×0.1+3×0.2=2.1V(computer)=2×0.7+1×0.1+3×0.2=2.8

 在上述例子中,你其实就是智能体,你可以自由选择3个状态,并执行某一个状态链,进而获得最大的奖励:则从众多的状态链中选择出一个回报最大的状态链,就是策略的选择,即 π ( s ) \pi(s) π(s)

 而智能体优化目标常常是:选择何种策略,通常会伴随选择执行什么样动作,使得 π ( a ∣ s ) \pi(a|s) π(as)最优。

总结

 本文只是介绍了一部分概念,后续会逐步添加新的概念,从感性上认识下RL的一些基础概念。

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

相关文章:

  • 本地密码生成管理工具,自定义生成密码
  • AI绘画能发展到企业大规模使用的地步么?
  • 毛纪逆向分析
  • 如何识别并管理多项目环境下的潜在风险
  • typora图片左对齐
  • archlinux安装详细过程(不用翻墙, 中文输入法, 企业微信, 微信等常用软件安装)
  • 函数调用过程中的栈帧变化
  • Softhub软件下载站实战开发(二):项目基础框架搭建
  • 【FineDance】训练:accelerate config 的作用
  • 项目管理工具在并行管理中如何充分发挥作用
  • c++中vector的使用
  • 性能测试详解
  • Java面向对象this关键字和static关键字
  • 【LUT技术专题】4DLUT代码讲解
  • 单测时如何让 mock 的接口在长链路调用时一直生效
  • XCTF-misc-base64÷4
  • [直播推流] 编译 librtmp 库
  • cannot allocate memory in static TLS block昇腾910报错
  • 详解智能指针
  • 会计 - 财务报告
  • IO之详解cin(c++IO关键理解)
  • Java基础复习之static
  • 【数据集成与ETL 04】dbt实战指南:现代化数据转换与SQL代码管理最佳实践
  • 修改Typora快捷键
  • XCTF-misc-Test-flag-please-ignore
  • 【redis——缓存雪崩(Cache Avalanche)】
  • 实习记录1
  • wpa_supplicant:无线网络连接的“智能管家”
  • cpu微码大全 微码添加工具 八九代cpu针脚屏蔽图
  • 17_Flask部署到网络服务器