强化学习分类与汇总介绍

news2024/10/5 17:24:13

1.强化学习(Reinforcement Learning, RL)

强化学习把学习看作试探评价过程,Agent选择一个动作用于环境,环境接受该动作后状态发生变化,同时产生一个强化信号(奖或惩)反馈给Agent,Agent根据强化信号和环境当前状态再选择下一个动作,选择的原则是使受到正强化(奖)的概率增大。选择的动作不仅影响立即强化值,而且影响环境下一时刻的状态及最终的强化值。

A.强化学习分类(基于价值、基于策略)

  • 基于价值(Value-Based )的强化学习:智能体通过学习价值函数,隐式的策略,如Ɛ-greedy。Value-Based 算法的缺点:1)对连续动作的处理能力不足;2)对受限状态下的问题处理能力不足;3)无法解决随机策略问题。包括Q-Learning、SARSA、Deep-Q-network算法。
  • 基于策略(Policy-Based )的强化学习:没有价值函数,直接学习策略。基于策略(Policy-Based )适用于随机策略、连续动作。包括Policy Gradient算法、TRPO、PPO。
  • 演员-评论家强化学习:学习价值函数(评论家),同时也学习策略(演员)。包括Actor-Critic算法、DDPG。

B.动态规划、蒙特卡罗、时间差分法、暴力搜索

动态规划(dynamic programming methods):是假设智能体已经知道关于该环境的所有信息。动态规划所要解决的问题就是智能体知道了环境的所有信息后,如何利用这些信息找出最优策略。

蒙特卡罗方法(Monte Carlo methods) :蒙特卡罗法的基本思想是:为了求解问题,首先建立一个概率模型或随机过程,使它的参数或数字特征等于问题的解:然后通过对模型或过程的观察或抽样试验来计算这些参数或数字特征,最后给出所求解的近似值。解的精确度用估计值的标准误差来表示。

时间差分法(temporal difference):结合了动态规划DP和蒙特卡洛MC方法。如on-policy的Sarsa方法和off-policy的Q-Learning方法.

暴力搜索ES

C.强化学习分类(基于环境)

根据是否具有环境模型,强化学习算法分为两种:

基于模型的强化学习(model-based):动态规划

无模型的强化学习(model-free):蒙特卡罗、时间差分法

D.强化学习分类(on/off-policy)

On-policy:学习的 agent 跟和环境互动的 agent 是同一个。行为策略与目标策略相同。其好处就是简单粗暴,直接利用数据就可以优化其策略,但这样的处理会导致策略其实是在学习一个局部最优,因为On-policy的策略没办法很好的同时保持即探索又利用。

Off-policy: 学习的 agent 跟和环境互动的 agent 不是同一个。将收集数据当做一个单独的任务。Off-policy将目标策略和行为策略分开,可以在保持探索的同时,更能求到全局最优值。但其难点在于:如何在一个策略下产生的数据来优化另外一个策略。

2 Q-Learning

Q-Table/状态-价值函数Q(s,a):这个表格的每一行代表每个 state,每一列代表每个 action,表格的数值就是在各个 state 下采取各个 action 时能够获得的最大的未来期望奖励。

例如在一个游戏中有下面5种状态和4种行为,则表格为:

通过 Q table 就可以找到每个状态下的最优行为,进而通过找到所有最优的action得到最大的期望奖励。

Q表更新公式:

Q-learning在更新Q值时下一步动作是不确定的,它会选取Q值最大的动作来作为下一步的更新。

3 SARSA

SARSA(State-Action-Reward-State-Action)是一个学习马尔可夫决策过程策略的算法。

1994年,G.A. Rummery 和 M.Niranjan 在 Modified Connectionist Q-learning 论文中的脚注提及了SARSA。

1996年,R.S. Sutton 正式提出了SARSA的概念。

它的算法和公式和 Q learning 很像,但是 Q-Learning 是Off-Policy的,SARSA 是On-Policy 的。

Q-Learning 和SARSA主要是Q表更新公式不一样。

Q表更新公式:

Sarsa使用下一步的实际动作来作为更新,而Q-learning选取下一步Q值最大的动作作为更新。

4 Dyna-Q

Dyna算法框架并不是一个具体的强化学习算法,而是一类算法框架的总称。Dyna将基于模型的强化学习和不基于模型的强化学习集合起来,既从模型中学习,也从和环境交互的经历去学习,从而更新价值函数和(或)策略函数。

对于模型部分,我们可以用查表法和监督学习法等方法,预测或者采样得到模拟的经历。而对于非模型部分,使用前面的Q-Learning系列的价值函数近似,或者基于Actor-Critic的策略函数的近似都是可以的。

算法如下:

在每次与环境交互进行一次Q-learning后,Dyna-Q执行n次Q-planning(下面的第f步)。Q-planning中生成模拟数据。

5 DQN(deep Q-network)

DQN 是基于价值(value-based)而非策略(policy-based)的方法。基于深度学习的Q-Learing算法。

Q-Learing算法维护一个Q-table,使用表格存储每个状态s下采取动作a获得的奖励,即状态-价值函数Q(s,a),这种算法存在很大的局限性。在现实中很多情况下,强化学习任务所面临的状态空间是连续的,存在无穷多个状态,这种情况就不能再使用表格的方式存储价值函数。

为了解决这个问题,我们可以用一个函数Q(s,a;w)来近似动作-价值Q(s,a),称为价值函数近似Value Function Approximation,我们用神经网络来生成这个函数Q(s,a;w),称为Q网络(Deep Q-network),w是神经网络训练的参数。

6 Policy Gradient

基于策略(Policy-Based )方法其实比基于价值(value-based)的方法更直接,如下图,直接通过神经网络预测智能体在state下采取什么动作(action)。训练的过程也就是学习神经网络参数θ,即直接学习策略。

策略π可以被被描述为一个包含参数θ的函数:

上述公式是指,假设智能体处于状态s,时间t,带参数 θ 的环境中,在时间t采取动作a的概率。

Policy Gradient 类的算法是经过梯度计算去更新策略网络的参数,其中目标函数就直接设计成指望累积奖励。

如下图,智能体(actor)在s1下产生动作a1,接着环境变成s2, actor又在s2下产生动作a2,等等。

其中每次动作的奖励的r。玩一次游戏记为(s1、a1、s2、a2....),这次游戏的奖励为R(),为各个动作奖励的累积。我们选取目标函数为多次游戏的平均奖励,即。

有了目标函数J,就可以更新模型参数θ,大体算法如下:

1.目标函数J描述如下,并转换成log的形式:

2.对目标函数转换后的log进一步拆分。

3.实际训练不能准确知道期望E,所以用平均值来估计,如下面的1/N。

Policy Gradient的梯度可以写成下面更一般的形式:

A是优势函数(advantage),V 反映的是在当前策略下做出动作的平均累计折扣回报的期望,可以理解为平均水平。

进而可以转换成对下面目标函数求微分。

a. reinforce算法

上面讲的policy gradient的方法其实就是reinforce算法。

REINFORCE算法仅使用一个网络,我们可以称之为策略网络。我们使用智能体网络与环境进行一个回合的交互,同时收集所有的轨迹信息,最后使用一个回合所有的交互信息更新策略网络。

整体算法重新描述如下,下面引入了奖励折扣率:

b.加入基准值(baseline)的策略梯度法

加入基准值(baseline)就是指减掉平均期望V,如下面第2个式子。

V 反映的是在当前策略下做出动作的平均累计折扣回报的期望,可以理解为平均水平。

7 TRPO(Trust Region Policy Optimization)

Trust Region Policy Optimization即置信域策略优化。使用Trust Region算法来进行Policy 优化的算法。

TRPO算法和Policy Gradient(reinforce)算法的目标函数一样。只是Policy Gradient采用随机梯度上升来求解目标函数最大值;而TRPO采用Trust Region算法求解目标函数最大值。TRPO算法比Policy Gradient更加稳健。

Trust Region概念如下,领域内L函数可以近似J函数,那么这个领域就叫做trust region。L函数可以构造的比J函数更方便计算。

置信域算法是不断重复下面两个步骤,如下,1)根据θ找到置信域,找到L函数;2)找到最大化L的参数θ,然后继续第一步。

重要性采样Importance Sampling

该方法从与原分布不同的另一个分布中采样,而对原先分布的性质进行估计。

假设现在我们要计算f(x)的期望, 其中x~p(x), 那么E[f(x)]的计算如下所示:

我们可以使用蒙特卡洛采用的方法, 首先从分布p(x)中抽样得到x, 接着将所有的f(x)求平均, 来近似f(x), x~p(x)的期望。

如果我们无法从分布p(x)中抽样, 或者从中抽样的成本很高, 那么我们还可以求E[f(x)]吗.

答案是可以的, 我们可以从一个简单的分布q(x)中进行抽样得到x, 接着乘上一个系数, 就可以来近似计算f(x), x~p(x)的期望.

我们可以通过下面一个简单的数学式子来是的从分布q(x)中进行抽样的数据来估计f(x), x~p(x)的期望.

上式中最后的连加, 其中, x~q(x), 同时q(x)!=0. 也就是在分布q(x)中进行抽样, 接着乘上p(x)/q(x)来修正从不同分布采用的概率.

这样就完成了从分布q(x)中进行抽样, 来估计E[f(x)],x~p(x).

on-policy转off-policy

也可以看作TRPO目标函数的推导过程,结合了重要性采样的方法(下面第2个等式)。下图来自于李宏毅的讲解:

TRPO算法目标函数

TRPO算法目标函数如下(TRPO第一种形式):

如果将上面第二个式子约束条件变成惩罚项,那么TRPO目标函数变成如下形式(TRPO第二种形式):

8 PPO

PPO算法是对TRPO优化效率上一个改进,其通过修改TRPO算法,使其可以使用SGD算法来做置信域更新,并且用clipping的方法方法来限制策略的过大更新,保证优化在置信域中进行.

PPO算法是openAI默认的强化学习算法。chatGPT就是采用PPO算法进行的强化学习。

下面公式参考2017年openAI论文《Proximal Policy Optimization Algorithms 》。

1)PPO算法有两种,下面是Clipped Surrogate Objective 方法的目标函数(对应TRPO第一种形式):

Clip是将新旧策略做比值,将这一比值限制在一定范围。clip这里是,如果第一项小于第二项,就输出第二项;如果大于第三项,就输出第三项。

ϵ 是一个超参数,可以取0.2。

2)下面是PPO第二种(对应TRPO第二种形式),该方法实验结果没有CLIP效果好:

9 Actor-Critic算法

Actor-Critic算法由两部分组成:Actor和Critic。其中Actor用的是Policy Gradient,Critic用的是Q-learning,所以它实际上是策略迭代法和价值迭代法的结合.

10 A3C

A3C(Asynchronous Advantage Actor-critic)利用多线程的方法,同时在多个线程里面分别和环境进行交互学习,每个线程都把学习的成果汇总起来,整理保存在一个公共的地方。并且,定期从公共的地方把大家的齐心学习的成果拿回来,指导自己和环境后面的学习交互。

相比Actor-Critic,A3C的优化主要有3点,分别是异步训练框架,网络结构优化,Critic评估点的优化。其中异步训练框架是最大的优化。

A3C算法通过多个work和环境互动,把环境的梯度给一个全局的网络,也就是通过不同work共同更新一个网络,每次更新全局网络,都把work的网络和全局网络同步,在下次work返回梯度的时候,都是比较的全局网络与环境互动的梯度,保障了全局网络不断朝好的方向发展。

11 DDPG

深度确定性策略梯度算法DDPG(Deep Deterministic Policy Gradient)是DQN的扩展版,可以简单的看成是DQN算法加上Actor-Critic框架。解决了DQN不能用于连续性动作的缺点。DDQG也借鉴了DQN的经验回放 (Experience Replay)的技巧。

下面算法摘自2019年google DeepMind的《CONTINUOUS CONTROL WITH DEEP REINFORCEMENT LEARNING 》。

首先,初始化Actor和Critic以及其各自的目标网络共4个网络以及经验池replay buffer R。

在Actor网络输出动作时,DDPG通过添加随机噪声的方式实现exploration,可以让智能体更好的探索潜在的最优策略。之后是采取经验回放的技巧。把智能体与环境交互的数据 (,,,) 存储到R。随后每次训练从中随机采样一个minibatch。

在参数更新上,先利用Critic的目标网络 Q′ 来计算目标值 ,利用 与当前Q值的均方误差构造损失函数,进行梯度更新。对于Actor的策略网络,其实就是把Actor的确定性动作函数代进Q-function的a,然后求梯度,最后是更新目标网络。

12 Soft Actor Critic (SAC)

PPO算法是目前最主流的DRL算法,但是PPO是一种on-policy算法,存在sample inefficiency的缺点,需要巨量的采样才能学习。DDPG及其拓展是面向连续控制的off-policy的算法,相对于PPO来说更sample efficient,但是它存在对其超参数敏感,收敛效果差的问题。SAC算法是面向最大熵强化学习开发的一种off-policy算法。

如下图所示,SAC结合了PPO和DDPG。

下面公式参考2018年论文《Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor 》。

1.soft value function

2.soft Q-functio n

3.soft策略

4.最终整体算法:

13 参考

  1. Q-Learning:Q-Learning_帅帅气气的黑猫警长的博客-CSDN博客
  2. 什么是 Q-learning?:什么是 Q-learning? - 简书
  3. 深度强化学习——DQN算法原理:深度强化学习——DQN算法原理_流萤点火的博客-CSDN博客
  4. 强化学习第六篇--DQN算法https://www.cnblogs.com/huanglinqiang/articles/15045229.html?ivk_sa=1024320u
  5. B站,李宏毅《强化学习》
  6. reinforce算法:https://www.cnblogs.com/devilmaycry812839668/p/14186743.html
  7. Actor-Critic算法:Actor-Critic算法 | ByteCat
  8. 强化学习入门——深入理解DDPG:强化学习入门——深入理解DDPG - 知乎
  9. 【强化学习】时间差分法(TD):【强化学习】时间差分法(TD)_shura_R的博客-CSDN博客
  10. [A3C]:看我的影分身之术(附代码及代码分析):[A3C]:看我的影分身之术(附代码及代码分析) - 知乎

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记一次 .NET 某医疗住院系统 崩溃分析

一:背景 1. 讲故事 最近收到了两起程序崩溃的dump,查了下都是经典的 double free 造成的,蛮有意思,这里就抽一篇出来分享一下经验供后面的学习者避坑吧。 二:WinDbg 分析 1. 崩溃点在哪里 windbg 带了一个自动化分…

Ubuntu上搭建网站【建立数据隧道,降低开支】

上篇:Ubuntu搭建web站点并发布公网访问 目录 1.安装WordPress 2.创建WordPress数据库 3.安装相对URL插件 4.内网穿透将网站发布上线 1.命令行方式: 2.图形化操作方式 5.图书推荐 cpolar官网 1.安装WordPress 在前面的介绍中,我们为大…

Spring Cloud Alibaba全家桶(八)——Sentinel规则持久化

前言 本文小新为大家带来 Sentinel规则持久化 相关知识,具体内容包括,Sentinel规则推送三种模式介绍,包括:原始模式,拉模式,推模式,并对基于Nacos配置中心控制台实现推送进行详尽介绍~ 不积跬步…

【K8S系列】Pod详解

目录 序言 1 前言 2 为什么需要pod 3 什么是Pod? 3.1 Pod的组成 3.2 Pod的用途 3.3 Pod的生命周期 3.4 Pod的特点 4 Pod的使用 5 结论 序言 任何一件事情,只要坚持六个月以上,你都可以看到质的飞跃。 今天学习一下K8s-Pod相关内容&…

SQL Server的页面(pages )和盘区(extents)体系结构

pages 和 extents 体系结构一、背景二、页面和盘区2.1、页面2.2、大行支持2.3、行溢出注意事项2.4、盘区(extents)三、管理扩展数据块分配和可用空间3.1、管理扩展数据块分配3.2、跟踪可用空间四、管理对象使用的空间五、追踪修改后的盘区总结一、背景 …

Spring Cloud Alibaba全家桶(九)——分布式事务组件Seata

前言 本文小新为大家带来 分布式事务组件Seata 相关知识,具体内容包括分布式事务简介(包括:事务简介,本地事务,分布式事务典型场景,分布式事务理论基础,分布式事务解决方案)&#xf…

PyTorch 之 基于经典网络架构训练图像分类模型

文章目录一、 模块简单介绍1. 数据预处理部分2. 网络模块设置3. 网络模型保存与测试二、数据读取与预处理操作1. 制作数据源2. 读取标签对应的实际名字3. 展示数据三、模型构建与实现1. 加载 models 中提供的模型,并且直接用训练的好权重当做初始化参数2. 参考 pyto…

可视化CNN和特征图

卷积神经网络(cnn)是一种神经网络,通常用于图像分类、目标检测和其他计算机视觉任务。CNN的关键组件之一是特征图,它是通过对图像应用卷积滤波器生成的输入图像的表示。 理解卷积层 1、卷积操作 卷积的概念是CNN操作的核心。卷积是一种数学运算&#x…

当深度学习遇上Web开发:Spring和OpenAI如何实现图片生成?

文章目录一、简介1. 什么是Spring和OpenAI2. 生成图像的意义和应用场景二、相关技术介绍1. 深度学习模型2. GAN模型3. TensorFlow框架四、简单的Spring应用1. 搭建Spring项目2. 添加相关依赖3. 编写简单的控制器五、OpenAI API1. 介绍OpenAI API2. 搭建OpenAI API环境3. 配置AP…

Pytorch实现GCN(基于Message Passing消息传递机制实现)

文章目录前言一、导入相关库二、加载Cora数据集三、定义GCN网络3.1 定义GCN层3.1.1 消息传递阶段(message)3.1.2 消息聚合阶段(aggregate)3.1.3 节点更新阶段(update)3.1.4 定义传播过程(propag…

AI时代来临,如何把握住文档处理及数据分析的机遇

AI时代来临,如何把握住文档处理及数据分析的机遇前言一、生成式人工智能与元宇宙二、面向图像文档的复杂结构建模研究三、大型语言模型的关键技术和实现ChatGPT 介绍ChatGPT的三个关键技术四、ChatGPT与文档处理未来总结前言 在3月18日,由中国图象图形协…

【CVPR 2023】FasterNet论文详解

论文名称:Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks 论文地址:https://arxiv.org/abs/2303.03667 作者发现由于效率低下的每秒浮点运算,每秒浮点运算的减少并不一定会导致类似水平的延迟减少。提出通过同时减少冗…

YOLOv2论文解读/总结

本章论文: YOLOv2论文(YOLO9000: Better, Faster, Stronger)(原文+解读/总结+翻译) 系列论文: YOLOv1论文解读/总结_yolo论文原文_耿鬼喝椰汁的博客-CSDN博客 前言 在YOLOv1推出一…

k8s 部署nginx 实现集群统一配置,自动更新nginx.conf配置文件 总结

k8s 部署nginx 实现集群统一配置,自动更新nginx.conf配置文件 总结 大纲 1 nginx镜像选择2 创建configmap保存nginx配置文件3 使用inotify监控配置文件变化4 Dockerfile创建5 调整镜像原地址使用阿里云6 创建deploy部署文件部署nginx7 测试使用nginx配置文件同步&…

ETL 与 ELT的关键区别

ETL 和 ELT 之间的主要区别在于数据转换发生的时间和地点 — 这些变化可能看起来很小,但会产生很大的影响! ETL 和 ELT 是数据团队引入、转换并最终向利益干系人公开数据的两种主要方式。它们是与现代云数据仓库和 ETL 工具的开发并行发展的流程。 在任…

来自清华的AdaSP:基于自适应稀疏成对损失的目标重识别

文章目录摘要1、简介2、相关工作3、方法3.1、稀疏成对损失3.2、最小难度的正样本挖掘4、实验4.1、与其他成对损失的比较4.2、消融研究5、结论摘要 论文链接:https://arxiv.org/abs/2303.18247 物体重识别(ReID)旨在从大型图库中找到与给定探针具有相同身份的实例。…

【分布式版本控制系统Git】| 国内代码托管中心-Gitee、自建代码托管平台-GitLab

目录 一:国内代码托管中心-码云 1. 码云创建远程库 2. IDEA 集成码云 3. 码云复制 GitHub 项目 二:自建代码托管平台-GitLab 1. GitLab 安装 2. IDEA 集成 GitLab 一:国内代码托管中心-码云 众所周知,GitHub 服务器在国外&…

Kaggle 赛题解析 | AMP 帕金森进展预测

文章目录一、前言二、比赛说明1. Evaluation2. Timeline3. Prize4. Code Requirements三、数据说明四、总结🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 竞赛题目:AMP-Parkinson’s Disease Progression Prediction 竞赛地址…

漫画:什么是快速排序算法?

这篇文章,以对话的方式,详细着讲解了快速排序以及排序排序的一些优化。 一禅:归并排序是一种基于分治思想的排序,处理的时候可以采取递归的方式来处理子问题。我弄个例子吧,好理解点。例如对于这个数组arr[] { 4&…

Python调用GPT3.5接口的最新方法

GPT3.5接口调用方法主要包括openai安装、api_requestor.py替换、接口调用、示例程序说明四个部分。 1 openai安装 Python openai库可直接通过pip install openai安装。如果已经安装openai,但是后续提示找不到ChatCompletion,那么请使用命令“pip instal…