REINFORCE及进阶算法讲解笔记

REINFORCE

  • 总结

    估计VALUE-methods没有在理论上证明收敛,而policy-methods不需要估计value function。

    本算法总结了过去的算法,将过去算法作为特例看待,证明了即使是结合函数估计和实际采样的value梯度都可以无偏估计,证明了某种梯度迭代可以收敛到局部最优值。

    Untitled

    拓展:加入baseline,可以由任何方式得到,但不依赖于具体action和θ,可以减少variance

    Untitled

    具体计算时需要t从T开始,不断减小,累计梯度,最后更新θ和w;

    进一步改进:使用TD方法来估计Gt。

    比MC方法学习更迅速,不需要等待整个episode完结。

    Untitled

  • 定理1 得到了一个简便容易的policy梯度

    Untitled

    每一时刻在矩阵分布是之前状态乘以状态转移矩阵

    所有状态连成一片,那么将会得到一个station distribution,只要t足够大,极限与s0无关

    Untitled

    证明了以下定理

    Untitled

    Untitled

  • 定理2 value function和baseline

    Untitled

    提供了一种设计value function思路

    提及了关于baseline的思想

  • 定理3 SGD的直接应用

    Untitled

    Untitled

    得到fw的简单形式

    Untitled

    Untitled

  • 算法核心

    Gt为future reward

    Untitled

    Gt越大,则action概率大。

    定理1是在γ = 1的情况下证明的。引入γ会带来额外的好处。

    首先将QΠ替换为估计值G

    Untitled

    Untitled

  • REINFORCE进阶

    最严重问题:梯度方差太大。这会导致不同sample的梯度互相抵消从而使学习非常低效。

    时间距离越远,sample会拥有越大的varience,而γ^t可以有效控制它。

    在Gt的基础上增加一个与行动At无关的值b

    Untitled

    • 方法1 moving average

      思路:

      action概率增减,由其得到的reward正负决定

      当由多个action和多个reward,影响可能相互抵消,更强的信号会减弱,其余的消失。

      我们使强的信号变弱,弱的信号(小的增长)变成反向的(减少)。取baseline为当前的历史信息的平均值,而不仅仅是此次更新所利用的信息。

      同样的,过去的信息也可能太老旧而没有价值。也可以选取一个固定的window size计算平均值。

    • 方法2 state value function

      varience来自于不同state的G,所以moving average可以细分到每个state

      →对每个state求moving average,但更简单的改进是估计每个state的平均值,即state value function

      Untitled

    • Anather Improvement-Actor Critic

      MC-monte carlo方法得到的估计值虽然是五篇估计,但是有很大方差,Gt本身也不稳定。

      TD-Temporal difference方法虽然有偏差,但是可以极大减小方差

      Untitled

  • 算法核心证明

  • 网络结构设计

    1 构建ACTOR网络并抽样

    1)区别

    value-base策略:Q-learning算法基本流程是计算每个action的Q(s,a),以概率e随机选取action,1-e概率greedy选取Q(s,a)最大值的action

    policy-base策略:直接学习不同action的概率,使用network表示actor,最终输出是一个概率分布,且我们要根据该概率分布抽样得到action。

    2)基本结构

    distribution RL→F.log_sftmax可以学习得到一个分布,即得到一个在N个点上的概率分布,每个action可以看作一个点。

    F.log_softmax与F.softmax推荐明确指定对哪一个维度进行计算。

    设计网络时,每个维度的意义必须明确,意味着输入和输出的维度是固定的。同时,nn.Linear对属于维度没有严格限制,只要求最后一个维度和一开始定义的输入维度相同。如果在F.log_sftmax报错,很可能是nn.Linear的输入输出不是设想的形状。

    log_probs = F.log_softmax(self.fc2(x),**dim = 1**)
    

    3)抽样

    1.将概率从torch.tensor转变为numpy.array,然后用np.random.choice抽样。一次只对一个概率分布进行采样。

    2.使用torch.distributions.Categorical进行抽样。这种方法更为灵活,可以对多个概率同时采样。再使用.log_prob可以得到每个采样的log probability,且带有导数。

    2 构建critic网络

    是简化版的Q网络,只需要输出一个值。

    nn.ModuleList()# 较方便的进行抽样
    

    3 合并Actor Critic

    Deep Neural Network的前几层可能是相同的,都是对于原始输入的特征提取,可能是CNN多应用与图像,RNN多应用于文字,Transformer都有应用。

    最后一俩层则是具体惹怒的学习和处理,所以对于相同environment,学习actor和critic需要的特征可能一直,所以可以将他们合并在一个网络中,也可以理解成一种多任务学习。

    优点:多个任务同时反馈信息,能帮助底层更快更好地学习需要的feature

    缺点:需要谨慎平衡多个任务的loss,否则可能因为某任务loss比重大,导致其他任务学习效果变差。

  • 数据处理

    1 MC方法(无偏,接受较大vaivence,所有episode结束才能计算)

    Gt必须从今后向前计算,简单思路:计算每一个Gt再乘上γ^t

    简化:使用np.cumsum计算当前叠加和,直接对rt乘γ^t后求和,而不是先计算Gt。

    2 TD方法(与MC方法对立)

    Q_learning多使用它,只有vs,而不需要提取Qsa,只需要用Critic计算出所有state values后和获得的reward相加。

  • 主体循环

    在Q-learning种将所有transition存入replay buffer并后续进行抽样学习,这是因为Q-learning的Q(s,a)可以进行offline learning,但是在REINFORCE中,未得到导数的无偏估计,Π改变后所有的transition将不服从当前policy分布

    training loop存在的意义是:所有transition必须在当前policy下得到,如果policy改变,则必须丢弃之前的所有transition记录

    Replay Buffer

    每一次更新,为了使样本使用效率最大化,我们应该使用全部当前policy得到的样本,即使用一个临时的replay buffer来存储policy得到的所有样本。

    为了方便,使用list数据结构(也可以创建更复杂的类),在每个episode开始时,将这些临时replay buffer初始化。

    由于repaly buffer容量不会很大,且之后会对整个buffer进行处理而不需要采样操作,所以不需要像value methods中储存完整transition(St,At,Rt,Dt,St+1),而只需要按时间t将state,action,reward,和done分别储存即可。

    Main Loop

    value methods主体循环大致有四部分:

    1. 获取acton并执行;
    2. 记录当前transition;
    3. 更新参数;
    4. 判断是否episode结束。

    REINFORCE中,1,4时必须的。

    对于2,此时我们不需要储存完整transition,只需按时间t存储state,action,rewward,done,循环中可以保证时间t是统一的,故只需要储存当前值。

    对于3,我们需要移除循环体,获得完整的episode数据后再进行更新。每次更新后,必须将所有临时replay buffer清空。

    Update

    已记录了所有St和At并且知道Actor的情况下,计算lofΠ(at|st)也很简单,只要得到损失函数并直接优化即可。

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

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

相关文章

PC-lint 学习之配置方法

1. 下载PC-lint 9.0后,点击pclint9setup.exe进行安装(我只安装了C/C语言,其他语言可安装时选择) 2.安装完成后,打开keil5,选择配置 3. 配置选项 (1)Lint Executable:在第…

知识图谱与人工智能:携手共进

知识图谱与人工智能:携手共进 一、引言:知识图谱与人工智能的融合 在这个数据驱动的时代,知识图谱与人工智能(AI)之间的融合不仅是技术发展的必然趋势,也是推动各行各业创新的关键。知识图谱,作…

docker 上达梦导入dump文件报错:本地编码:PG GBK,导入女件编码:PGGB18030

解决方案: 第一步进入达梦数据容器内部 docker exec -it fc316f88caff /bin/bash 第二步:在容器中 /opt/dmdbms/bin目录下 执行命令 cd /opt/dmdbms/bin./dimp USERIDSYSDBA/SYSDBA001 FILE/opt/dmdbms/ZFJG_LJ20240407.dmp SCHEMASZFJG_LJUSERIDSYSD…

Guava里一些比较常用的工具

随着java版本的更新提供了越来越多的语法和工具来简化日常开发,但是我们一般用的比较早的版本所以体验不到。这时就用到了guava这个包。guava提供了很多方便的工具方法,solar框架就依赖了guava的16.0.1版本,这里稍微介绍下。 一、集合工具类…

深度学习图像处理基础工具——opencv 实战2 文档扫描OCR

输入一个文档,怎么进行文档扫描,输出扫描后的图片呢? 今天学习了 opencv实战项目 文档扫描OCR 问题重构:输入图像 是一个含有文档的图像——> 目标是将其转化为 规则的扫描图片 那么怎么实现呢? 问题分解&#…

CSS快速入门

目录 一、CSS介绍 1、什么是CSS? ​编辑2、基本语法规范 3、引入方式 4、规范 二、CSS选择器 1、标签选择器 2、类(class)选择器 3、id选择器 4、通配符选择器 5、复合选择器 三、常用CSS 1、color 2、font-size 3、border 4…

对于缓冲区的理解

目录 1、回车和换行 2、缓冲区 1、回车和换行 回车换行\n其实是两个动作 回车是回到开始位置 换行是换到下一行 (老式键盘) 而老式键盘是从打字机来的 \r只是回车,回到开始位置 2、缓冲区 fflush(stdout)#强制刷新缓…

手写商城项目学习/复习到的知识

1.在windowr创建项目可以选择自定义/vue2/vue3,但尝试在vscode不能选择. 2.vant vant是组件库,可导入结构等.vant2用于vue2,vant3,vant\4用于vue3 vant2的使用 官网: Vant 2 - 轻量、可靠的移动端组件库 (gitee.io) 全部导入:将vant所有的组件放到了所有组件内component使…

FMix: Enhancing Mixed Sample Data Augmentation 论文阅读

1 Abstract 近年来,混合样本数据增强(Mixed Sample Data Augmentation,MSDA)受到了越来越多的关注,出现了许多成功的变体,例如MixUp和CutMix。通过研究VAE在原始数据和增强数据上学习到的函数之间的互信息…

【设计模式学习】单例模式和工厂模式

꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转…

算法——倍增

. - 力扣(LeetCode) 给你一棵树,树上有 n 个节点,按从 0 到 n-1 编号。树以父节点数组的形式给出,其中 parent[i] 是节点 i 的父节点。树的根节点是编号为 0 的节点。 树节点的第 k 个祖先节点是从该节点到根节点路径…

步骤大全:网站建设3个基本流程详解

一.领取一个免费域名和SSL证书,和CDN 1.打开网站链接:https://www.rainyun.com/z22_ 2.在网站主页上,您会看到一个"登陆/注册"的选项。 3.点击"登陆/注册",然后选择"微信登录"选项。 4.使用您的…

恢复MySQL!是我的条件反射,PXB开源的力量...

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

二极管分类及用途

二极管分类及用途 通用开关二极管 特点:电流小,工作频率高 选型依据:正向电流、正向压降、功耗,反向最大电压,反向恢复时间,封装等 类型:BAS316 ; IN4148WS 应用电路: 说明:应用…

并发编程之ThreadLocal使用及原理

ThreadLocal主要是为了解决线程安全性问题的 非线程安全举例 public class ThreadLocalDemo {// 非线程安全的private static final SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public static Date parse(String strDate) throws ParseExc…

Python-VBA函数之旅-complex函数

目录 1、complex函数: 1-1、Python: 1-2、VBA: 2、相关文章: 个人主页:非风V非雨-CSDN博客 complex函数创建的复数对象在Python中具有广泛的应用场景,特别是在处理涉及数学计算、信号处理、物理模拟、…

数学:人工智能学习之路上的“拦路虎”及其背后的奥秘

在人工智能的浪潮席卷全球的今天,越来越多的人开始涉足这一领域,以期掌握其核心技术,为未来的科技发展贡献力量。然而,在学习的道路上,许多人却遇到了一个不小的挑战——数学。为何数学会成为学习人工智能的“拦路虎”…

Pandas相比Excel的优势是哪些?

熟悉Pandas的同学会知道,Pandas相当于Python中的Excel,都是基于二维表的进行数据处理分析,不同的是,Pandas基于代码操作数据,Excel是图形化的分析工具。 不少人会问Excel比Pandas更简单,为什么还要学习Pan…

【数学】主成分分析(PCA)的详细深度推导过程

本文基于Deep Learning (2017, MIT),推导过程补全了所涉及的知识及书中推导过程中跳跃和省略的部分。 blog 1 概述 现代数据集,如网络索引、高分辨率图像、气象学、实验测量等,通常包含高维特征,高纬度的数据可能不清晰、冗余&am…

【学习】软件测试人员使用Loadrunner进行性能测试的优势

在软件测试领域,性能测试是一项至关重要的环节,它关乎到软件系统的稳定性和用户体验。而在这其中,Loadrunner作为一款久经考验的性能测试工具,凭借其独特的优势,成为了众多企业和开发者眼中的“得力助手”。 首先&…