首页 > 编程语言 >TD(lambda) 算法

TD(lambda) 算法

时间:2025-01-10 14:58:24浏览次数:1  
标签:equation 算法 theta TD gamma lambda

\(TD(\lambda)\)是统一蒙特卡洛算法(MC)和时序差分算法(TD)的第二种形式。第一种形式也就是 \(TD(n)\) 算法。具体来说, \(TD(n)\) 的公式可以写为:

\[\begin{equation} \begin{aligned} G_{t:t+1} &= R_{t+1} + \gamma V(S_{t+1})\\ G_{t:t+n} &= R_{t+1} + \gamma G_{t+1:t+n} \\&=\sum_{i=1}^{n} \gamma^{i-1}R_{t+i} + \gamma^n V(S_{t+n}) \\ &=R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3} + ... + \gamma^{n-2}R_{t + n - 1} + \gamma^{n-1} R_{t+n} + \gamma^{n}V(S_{t+n}) \end{aligned} \end{equation} \]

在 \(TD(n)\) 中,有 \(n \in [1, +\infty)\) 当 \(n = 1\) 时, \(TD(n)\) 算法退化为 TD算法。当 \(n \to +\infty\) 时, \(TD(n)\) 退化为 MC算法。

一、\(\lambda-return\) 算法

在 \(TD(n)\) 算法中,我们把 t 时刻的回报看作是 t 时刻对应状态走n步之后的回报值,也就是

\[G_t = G_{t:t+n} \]

但是在 \(TD(\lambda)\) 中,我们把最终回报看作是每一步回报的加权值,每一步的加权值为 \(\lambda^{n-1}\) 其中 \(\lambda \in [0, 1]\) 。但是为了保证最终的加权和为1,我们会再乘上 \(1 -\lambda\) 写成公式就是:

\[\begin{equation} G_t^{\lambda} = (1-\lambda)\sum_{n=1}^{\infty} \lambda^{n-1}G_{t:t+n}\end{equation} \]

在公式(2)中,我们假设走了无限多步,也就是 \(n \to \infty\)。,但是这是不可能的。实际上,如果智能体走了 T 步之后结束回合,公式(2)可以被重写为:

\[\begin{equation} G_t^{\lambda} = (1-\lambda)\sum_{n=1}^{T-t-1} \lambda^{n-1}G_{t:t+n} + \lambda ^ {T-t-1}G_t \end{equation} \]

在公式(3)中,当 \(\lambda = 1\) 时, \(G_t^{\lambda} = G_t\), \(\lambda-return\) 算法退化为 蒙特卡洛算法。当 \(\lambda = 0\) 时, \(G_t^{\lambda} = G_{t:t+1}\),此时, \(\lambda-return\) 算法退化为 \(TD\) 算法

二、\(TD(\lambda)\) 算法

\(\lambda-return\) 算法和 \(TD(n)\) 算法在计算某个状态的回报的时候,都需要先知道未来状态的回报,才可以知道当前状态的回报。这也被看作是一种前向视图。

img

前向视图示意图

但是实际上,我们没有利用到达当前状态的历史状态的相关信息。这些历史状态信息也被称为后向视图

img

后向视图示意图

\(TD(\lambda)\) 就是第一种同时利用了前向视图和后向视图的强化学习算法。

在 \(TD(\lambda)\) 种利用后向视图的方法叫做资格迹。在 \(TD(\lambda)\) 中,资格迹一开始被初始化为0。智能体每走一步,资格迹会累加价值函数的梯度并以 \(\gamma \lambda\) 的大小衰减。写成公式就是:

\[\begin{equation} \begin{aligned} z_{-1} &= 0 \\ z_t &=\gamma\lambda z_{t-1} + \nabla V(S_t, \theta_t) \end{aligned} \end{equation} \]

公式(4)中的 \(\theta_{t}\) 是价值网络的参数。

在更新价值网络时,假设时序差分误差 \(\delta_t = R_{t+1} + \gamma V(S_(t+1),\theta_t) - V(S_t,\theta_t)\),则更新价值网络公式为:

\[\theta_{t+1} = \theta_t + \alpha z_t \delta_t \]

可以看到,资格迹衡量了历史信息的价值大小。当遇到一个重要事件的时候, \(\nabla V(S_t,\theta_t)\) 的值变大,使得 \(z_t\) 的值变大,就增加了当前状态在历史状态中的权重并影响了更新参数 \(\theta_t\) 的大小。

标签:equation,算法,theta,TD,gamma,lambda
From: https://www.cnblogs.com/usersname/p/18663967

相关文章

  • Spring boot连接TDengine
    jdbcTemplate连接使用springbootjdbcTemplate连接TDengine时序数据库添加TDengine驱动依赖包<!--pom.xml--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency>......
  • 协同过滤算法私人诊所系统|Java|SpringBoot|VUE| 
                 【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SpringBoot、Mybatis-Plus、VUE、jquery,html5⃣️数据库可视化工具:navicat6⃣️服务器:SpringBoot自带apach......
  • LeetCode算法题:删除排序链表中的重复元素
    题目描述下面是给定的一段代码 /***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*ListNode(intval){this.val=val;}*ListNode(intval,ListNodenext){this.val......
  • 改进萤火虫算法之五:基于惯性权重的萤火虫算法(IWFA)
            基于惯性权重的萤火虫算法(IWFA)是在标准萤火虫算法的基础上引入线性递减权重函数的一种改进算法。一、算法背景与原理        萤火虫算法是一种启发式算法,其灵感来源于萤火虫闪烁的行为。萤火虫通过闪光来吸引其他萤火虫,而吸引力与它们的亮度成正比......
  • AcWing算法基础课打卡 | 790 数的三次方根
    学习C++从娃娃抓起!记录下AcWing刷过的题目,记录每一个瞬间。附上汇总贴:AcWing算法基础课打卡|汇总【题目描述】给定一个浮点数,求它的三次方根。【输入】共一行,包含一个浮点数。【输出】共一行,包含一个浮点数,表示问题的解。注意,结果保留位小数。【输入样例】1......
  • 【MATLAB源码-第51期】基于matlab的粒子群算法(PSO)的栅格地图路径规划。
    操作环境:MATLAB2022a1、算法描述粒子群算法(ParticleSwarmOptimization,简称PSO)是一种模拟鸟群觅食行为的启发式优化方法。以下是其详细描述:基本思想:鸟群在寻找食物时,每只鸟都会观察自己和其他鸟之间的距离,以及当前找到的食物的位置。每只鸟都会向自己历史上找到的最好食......
  • cv::parallel_for_ 可以与 lambda 函数结合
    cv::parallel_for_是OpenCV中用于并行处理的一个函数,可以有效地利用多核CPU来加速计算。在OpenCV中,cv::parallel_for_可以与lambda函数结合使用,以简化代码并提高可读性。以下是如何将lambda函数与cv::parallel_for_结合的示例。示例:使用Lambda函数假设你想要对......
  • std::condition_variable
    std::condition_variable是C++11标准库中提供的一个同步原语,用于线程间的条件等待和通知机制。它允许一个或多个线程等待某个条件变为真(即被满足),并通过另一个线程的通知来唤醒这些等待的线程。主要特点条件等待:线程可以等待某个条件变量,直到其他线程通知该条件已被满足。通......
  • CountDownLatch应用
    使用CountDownLatch可以实现一种等待/通知机制,但它与对象锁(synchronized)的用途和行为有所不同。CountDownLatch主要用于使一个或多个线程等待其他线程完成一系列操作。当你提到“方法A调用时,对象锁锁着,方法B等待释放”,这通常是指通过synchronized块或方法来实现的互斥访问。......
  • 时序差分(Temporal Difference, TD)学习的详细介绍-ChatGPT4o作答
    时序差分(TemporalDifference,TD)学习的详细介绍时序差分(TemporalDifference,TD)是一种强化学习中重要的价值函数估计方法,结合了动态规划(DynamicProgramming)和蒙特卡洛方法(MonteCarlo)的优点。它通过从经验中直接学习预测值,而不需要完整的回报序列,能够高效地处理马尔科夫......