李宏毅教程系列——增强学习

目录

0. 强化学习wiki

1. 介绍

2. Exploration vs Exploitation 探索与开发

3. 各类最优化方法

3.1 Brute force猛兽蛮力法(暴力搜索)

3.2 Value function estimation(价值函数估计)

3.2.1 Monte Carlo methods 蒙特卡洛方法

3.2.2 Temporal difference methods 时差法

3.2.3 Function approximation methods 函数近似法

3.3 Direct policy search(直接策略搜索)

3.4 Model-based algoritms

4 不同RL算法对比

0. 原视频地址

1. Policy Gradient

2. Proximal Policy Optimization(PPO)

2.1 Off-Policy

2.2 Importance Sampling

2.3 具体的Policy生成方法

Q-learning


0. 强化学习wiki

大致了解当前强化学习技能树发展情况

Reinforcement learning - Wikipedia

1. 介绍

强化学习(英语:Reinforcement learning,简称RL)是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。强化学习是除了监督学习和非监督学习之外的第三种基本的机器学习方法。与监督学习不同的是,强化学习不需要带标签的输入输出对,同时也无需对非最优解的精确地纠正。其关注点在于寻找探索(对未知领域的)和利用(对已有知识的)的平衡,强化学习中的“探索-利用”的交换,在多臂老虎机问题和有限MDP中研究得最多。在机器学习问题中,环境通常被抽象为马尔可夫决策过程(Markov decision processes,MDP)。

2. Exploration vs Exploitation 探索与开发

随机探索与选择算法认为最优项之间的平衡。

强化学习需要比较聪明的探索机制,直接随机的对动作进行采样的方法性能比较差。虽然小规模的马氏过程已经被认识的比较清楚,这些性质很难在状态空间规模比较大的时候适用,这个时候相对简单的探索机制是更加现实的。

其中的一种方法是贪婪算法,这种方法会以比较大的概率去选择现在最好的动作。如果没有选择最优动作,就在剩下的动作中随机选择一个。epsilion在这里是一个可调节的参数,更小的epsilion意味着算法会更加贪心。

3. 各类最优化方法

3.1 Brute force猛兽蛮力法(暴力搜索)

1. 对于每个可能的政策,在遵循该政策时对收益进行抽样调查

2. 选择具有最大预期收益的政策

缺陷:policies空间过大甚至无穷、返回值的方差过大需要较多采样。

可以通过价值函数估计、直接策略搜索来代替暴力搜索。

3.2 Value function estimation(价值函数估计)

价值函数方法尝试去找到一个策略,该策略能最大化奖励值,奖励值通过对一些策略的观测期望值进行估计来得到,这些被观测的策略是当前current策略(on-policy)或是最佳optimal策略(Off-Policy)。最佳策略在任意初始化的状态中总能返回最好的结果。

核心思想是从找最大状态期望V变成找最大动作期望Q。

两种base方法价值迭代value iteration和策略迭代policy iteration。这两类都是计算一系列Qk(k=0,1,2,...)来汇聚Q*,以及通过近似策略来在大的动作空间中得到期望。

策略迭代包括两步骤:策略评估、策略提升。

3.2.1 Monte Carlo methods 蒙特卡洛方法

用于策略迭代中的策略评估。

在策略评估步骤中,给出一个平稳、确定的策略π,需要去计算(或近似得到)所有状态-行为对的Qπ(s,a)得分。在有限空间中,一个s-a的得分可以用所有Q(s,a)得分的平均值来估计。

在策略提升步骤中,通过贪心算法最大化Q得分来改善策略,在实际应用中,可以通过lazy evaluation方法来推迟更新步骤。

该方法的局限性在于:

1. 在非最优/次优策略的估计中花费太多时间。

2. 对样本的使用率低。

3. 当样本分布方差高(得分的概率分布较为分散)时,收敛缓慢。

4. 只能用于episodic problems。

5. 只能用于小的有限MDPs场景(或者说是离散值场景)。

针对以上这五个问题,后续又提出了一些改进方法。

问题1:在次优策略估计中花费太多时间,可以通过允许在values settle前修改Policy来解决,不过相应的这可能会带来收敛问题。现在很多算法都这么做,它们被统称为广义上的策略迭代算法;许多actor-critic也属于此类(注:actor-critic的做法是有两个神经网络,一个是actor用于训练Policy,另一个是critic用于估计不同状态下action的reward;即同时学习Policy和value function)。

问题2:通过设置trajectories可以对路径中任意s-a对的训练做提升来解决,这同时也能缓解问题3。

3.2.2 Temporal difference methods 时差法

TD方法中的计算可以是增量incremental的(每次更新后不保留过去状态),或者是批次batch的(先收集数据然后按批次更新Policy)。

按batch的方法如最小二乘时间差分法(the least-squares temporal difference method)可以更好的利用样本samples,而按incremental的方法是在无法承担batch高计算成本与复杂度下的选择。

基于TD的方法也能解决问题4.

3.2.3 Function approximation methods 函数近似法

用于解决问题5.

3.3 Direct policy search(直接策略搜索)

直接在策略空间(的某个子集)中搜索,在这种情况下,问题变成了随机优化的情况。可用的两种方法是基于梯度的方法和无梯度的方法。

// 待补充

3.4 Model-based algoritms

最后,上述所有方法都可以与首先学习模型的算法相结合。例如,Dyna 算法从经验中构造模型,并使用模型为价值函数提供更多模型化的转换。这种方法有时可以扩展到使用非参数模型,例如就把转换存储并“重播”到算法中。
除了更新价值函数之外,还有其他使用模型的方法。例如,在模型预测控制中,模型用于直接更新行为。

4 不同RL算法对比

AlgorithmDescriptionPolicyAction space State space Operator
Monte CarloEvery visit to Monte Carlo 皆可离散离散Sample-means
Q-learningState–action–reward–state Off-policy离散离散

Q-value

SARSAState–action–reward–state–actionOn-policy离散离散Q-value
Q-learning - Lambda具有资格痕迹的State–action–reward–stateOff-policy离散离散Q-value
SARSA - Lambda具有资格痕迹的State–action–reward–state–actionOn-policy离散离散Q-value
DQN

Deep Q Network

Off-policy离散连续Q-value
DDPGDeep Deterministic Policy GradientOff-policy连续连续Q-value
A3C异步 优势Actor-CriticOn-policy连续连续平均
NAF

Q-Learning with归一化优势函数

Off-policy连续连续平均
TRPOTrust Region策略优化On-policy连续连续平均
PPOProximal近端 Policy OptimizationOn-policy连续连续平均
TD3Twin Delayed双延迟 Deep Deterministic 深度确定性Policy GradientOff-policy连续连续Q-value
SAC

Soft Actor-critic

Off-policy连续连续平均

0. 原视频地址

DRL Lecture 3: Q-learning (Basic Idea) - YouTubehttps://www.youtube.com/watch?v=o_g9JUMw1Oc&list=PLJV_el3uVTsODxQFgzMzPLa16h6B8kWM_&index=14

1. Policy Gradient

env和reward是事先给定的,不能在train的时候去调整,可变参数在Actor的Policy这里。 Actor的参数常被表示为\theta,可以计算p_{\theta}(\tau)即为Trajectory发生的概率 p_{\theta}(\tau)=p(s_{1})p_{\theta}(a_{1}|s_{1})p(s_{2}|s_{1},a_{1})p_{\theta}(a_{2}|s_{2})p(s_{3}|s_{2},a_{2})...=p(s_{1})\prod_{t=1}^{T}{p_{\theta}(a_{t}|s_{t})p(s_{t+1}|s_{t},a_{t})}这里的p(s_{2}|s_{1},a_{1})是因为s2和s1也是有关系的,所以是s1和a1状况下产生s2的概率。 env不一定是neural Networks的function,它也可以是rule-based的。

又因为这里是Score越大越好,所以是gradient ascent。update的时候正负号变了。

可以看出,这里计算梯度有一个直接的公式可以带入。所以\delta R(\tau)可以这样直接算。

全部加起来就得到gradient,可以用来update参数。

相当于,如果在状态st下做了动作at,会让分数增长,那就保留,反之就舍去。

但是有时候game的reward设置的不好,大家都是正的。所以这里要设置一个base,通过减去这个base来惩罚不好的项。

2. Proximal Policy Optimization(PPO)

2.1 Off-Policy

先介绍了一个新概念叫Off-Policy,拿去和Env做互动的Agent和learn的Agent不同了。主要是由于

这个公式的期望,如果theta变了那之前收集到的数据就不适用了(这里对不上,不再是当前theta得到的τ的期望),所以希望用一个纯纯的工具人Agent只收集Env的τ,得到数据。可以用sample来的数据一笔train很多次。

2.2 Importance Sampling

接着讲了一个期望的sample方式,不知道为什么现在没办法直接从p里面做期望值,所以我们要用q分布去采样,得到下面这样一个计算公式。

但是要注意p和q的期望值不能差太多。可以看出等式左右二者的期望一样,但是方差不一样。所以导致如果sample的次数不够多,会导致有比较大的差距。公式如下:

比较形象的来看:如果是单纯的p采样,那么期望应该是负的。在sample次数不够的情况下,大概率会落到f(x)是正的这边,所以期望就变成正的了,不过如果sample够多的话,就会得到一个巨大的负值(q(x)作为一个非常小的除数),然后平衡下来最后还是负的。

2.3 具体的Policy生成方法

接下来就开始讲怎么把一个actor变成两个,公式是怎么变的。

上周讲过也就是说,针对期望的计算,不是一下计算出来的,而是根据每个pair分别计算。

Q-learning

tbc......

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3年经验,面试测试岗只会功能测试开口要求18K,令我陷入沉思。

由于朋友临时有事, 所以今天我代替朋友进行一次面试,公司需要招聘一位自动化测试工程师,我以很认真负责的态度完成这个过程, 大概近30分钟。 主要是技术面试, 在近30分钟内, 我与被面试者是以交流学习的方式…

【Linux】通过网络版计算器来认识协议

​🌠 作者:阿亮joy. 🎆专栏:《学会Linux》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉再谈协议&…

腾讯云4核8G12M轻量服务器配置性能评测

腾讯云轻量4核8G12M服务器,之前是4核8G10M配置,现在公网带宽和月流量包整体升级,12M公网带宽下载速度可达1536KB/秒,系统盘为180GB SSD盘,每月2000GB免费流量,腾讯云百科来详细说下4核8G12M轻量应用服务器配…

AJAX | 拦截器、文件上传和下载

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! AJAX Ajax即Asynchronous Javascript And XML(异步JavaScript和XML);Ajax技术网页应用能够快速地将增量更新呈现在用户界面上&…

锁子甲 bulid+sim

链接: youtube 分析:洒一堆点——copy 模型——点和模型符合一定规律 点和点的距离符合上述图中的关系 (横纵) 横向 但是我们要横向10个点够了: 用modulo 除余 纵向 这里用除法向上取整 /10 eg : 0-9 得0 10-19 得1…

redis哨兵模式配置(配置文件等)

Redis-Sentinel机制主要用三个功能: (1)监控:不停监控Redis主从节点是否安装预期运行 (2)提醒:如果Redis运行出现问题可以 按照配置文件中的配置项 通知客户端或者集群管理员 (3)自动故障转移:当主节点下线之后,哨兵…

【版本控制】Github同步Gitee镜像仓库自动化脚本

文章目录Github同步Gitee镜像仓库自动化脚本前言什么是Hub Mirror Action?1.介绍2.用法配置步骤1.生成密钥对2.GitHub私钥配置3.Gitee公钥配置4.Gitee生成私人令牌5.Github绑定Gitee令牌6.编写CI脚本7.多仓库同步推送8.定时运行脚本总结Github同步Gitee镜像仓库自动…

【MyBatis Plus】002 -- 通用CRUD(插入、更新、删除、查询)

目录 3、通用CRUD 3.1 插入操作 3.1.1 方法定义 3.1.2 测试用例 3.1.3 测试 3.1.4 TableField 3.2 更新操作 3.2.1 根据id更新 3.2.2 根据条件更新 3.3 删除操作 3.3.1 根据id删除(deleteById) 3.3.2 根据Map删除数据(deleteByMap&#xff09…

Level_2(2)题目整理

文章目录L2-022 重排链表(模拟❗)L2-023 图着色问题L2-024 部落(并查集)L2-025 分而治之(与 L2-023差不多,邻接表遍历)L2-026 小字辈(求树的深度)L2-027 名人堂与代金券(💡处理&…

得物 API一站式协作平台的一些思考

1.背景 Mooncake是得物API一站式协作平台。从2022年3月份开始负责Mooncake,到现在已经一年了,回顾这一年,Mooncake大的阶段上,总共经历过两个版本: 1、Mooncake 1.0: 面向前端和客户端的mock平台,主要解决接口调用者…

C++实现前缀树

文章目录1. 什么是前缀树2. 前缀树的实现2.1 前缀树的基本结构2.2 插入2.3 word出现了几次2.3 word作为前缀出现几次2.4 删除1. 什么是前缀树 假设这里有一个字符串数组,和一个树的根结点: 这个结点的pass意思是:有几个字符通过了这个结点。…

ubuntu下Thrift安装

thrift是一种常用rpc框架,工作中经常会用到,本文记录一下其安装过程。 目录 1.下载软件包 1.1thrift下载 1.2libevent下载 1.3boost下载 2.安装(注意步骤) 2.1安装libevent 2.2安装boost 2.3安装与Python2.7版本对应的py…

【工作感悟】老程序员总结的四条工作经验教训

文章目录前言1. 不要做小需求2. 要做大需求3. 定期同步工作进度4. 项目结束,主动复盘总结前言 想来从事互联网工作已经很多年了,已经从当初的懵懂少年逐渐退化成老油条。刚毕业的时候,真是个愣头青,什么都不懂,也什么…

UE4 回放系统升级到UE5之后的代码报错问题解决

关键词: UE4 回放系统 升级 UE5 报错 DemoNetDriver GetDemoCurrentTime GetDemoTotalTime 背景 照着网上教的UE4的回放系统,也叫重播系统,英文Replay。做完了,测试运行正常,可升级到UE5却报了一堆 WorldSetting 和 …

计算机组成原理——第五章中央处理器

半生风雨半生伤,半醉半醒半心凉 文章目录前言5.1 CPU的功能和基本结构5.2 指令周期的数据流5.3.1 单总线结构5.3.2 专用通路结构前言 之前我们就说过CPU主要包括两个部分,运算器和控制器,运算器主要是实现算数运算.逻辑运算, 运算…

亲测:腾讯云轻量应用服务器性能如何?

腾讯云轻量应用服务器性能评测,轻量服务器CPU主频、处理器型号、公网带宽、月流量、Ping值测速、磁盘IO读写及使用限制,轻量应用服务器CPU内存性能和标准型云服务器CVM处于同一水准,所以大家不要担心轻量应用服务器的性能,腾讯云百…

springboot项目中的mysql用国产数据库达梦替换的相关说明

一、 用“DM管理工具”的“管理用户”创建你需要用户,也是达梦的模式。 用户的权限问题可以直接角色授权,方便一些。 二、借用达梦的“DM数据迁移工具”做数据库的表内容转移。 1. 新建工程、新建迁移 编辑mysql的数据库源 编辑达梦的目的端数据库 选择之…

应届生通过Java培训班转行IT有前途吗?

借用邓小平同志曾说过的一句话:科学技术是第一生产力。IT行业作为科技行业中的一员,不管是在自身的发展,还是支持其他行业的发展中都扮演了不可或缺的角色,“互联网”是社会发展的趋势,前途是无限的。而计算机语言是目…

春季儿童吃什么有助于长高,3款适合孩子长高的食谱做法,学起来

儿童身高一直以来都比较受到父母的关注,虽然身高不能说明一个人的能力有多强,但是会影响到人的外表。身高影响成败,一些专业对身高要求非常严格,因此大部分家长都希望孩子在身高方面能有一定的优势。 春季是孩子分泌生长激素增加时…

你了解C语言中的数组指针和函数指针吗?

如题,本篇文章重点讲解C语言中的数组指针和函数指针。这2种指针其实都不是很常用,个人感觉使用起来代码的可读性不是很高,但是还是需要了解一下。 数组指针 数组指针,即指向数组的指针,是用来存放数组的地址的。那如…