强化学习理解

状态价值函数:
表征当前状态的价值。
比如在下围棋时,当前局势的获胜几率。
马尔科夫决策过程:
未来仅依赖于当前状态而与历史状态无关。
即过去状态与未来状态条件独立。
衰减系数γ:
用来对未来的奖励做惩罚;
未来的100元奖励不如当前的100元奖励,未来的奖励会随着时间推移而消失。数学上,有了衰减系数,无需在乎将来太远的奖励(都被指数衰减掉了);
使用衰减系数,我们无需担心状态转移图存在无限循环;
未来的奖励不会提供直接收益;
目标策略函数:
行为的概率分布*行为价值函数 Q

贝尔曼方程:
将价值函数分解为=直接奖励+衰减后的未来奖励

动态规划:
如果概率P或者回报R完全已知,则可以用动态规划迭代地对问题进行求解。如果模型完全已知,则基于贝尔曼方程,可以直接用动态规划计算价值函数,并进行策略改进。包括策略评估、策略改进和策略迭代。

蒙特卡洛方法:
不需要对模型进行建模,但要求完整的一轮样本。通过完整一轮样本(过程)S1,A1,R2,…,St 来求经验回报。并且所有轮必须到达终态。
估计回报等于所有回报在每一轮衰减后的平均值和

时间差分方法:
不需要模型,也不需要完整的样本,而是从每轮的经验中学习。是对蒙特卡洛方法的改进,可以从不完整的一轮数据中学习,因而无须使任务执行到终止态。因此也叫提升法bootstrapping。主要是通过value estimation更新价值函数

MC与TD的对比:
MC方法依赖实际的奖励和完整的回报来更新目标。
TD方法依据现有估计更新目标。因此,也称提升法。

sarsa:
价值函数,基于TD的更新方法,on-policy方法

Q-Learning
也是基于TD的更新方法,off-policy。

sarse和Q-Learning区别:Sarsa通过一个序列:S,A,R,S,A更新Q值。
Q-Learning不使用当前策略选择下一步的行为At+1,,而是使用当前Q函数最优值来预测Q*,而对应Q的行为a并不重要,而且在Q-learing的下一步中本次的行为a*也不一定会被执行。

Deep Q-Network
由于Q-learning中用表格记录所有的Q会产生一个非常大的表格,因此使用深度学习模型来做替代,进行函数拟合。
存在的问题:当使用非线性Q值函数拟合以及bootstrapping时,Q-Learning会不稳定,并且难以收敛。
在Mnih等人的努力下,大幅改善和稳定了Q-learning的训练,使用了两个创新机制:经验回放和阶段性更新目标。

基于策略的方法

策略梯度:策略梯度算法直接学习策略本身,通过参数sita,定义奖励函数为期望回报,算法的目标是最大化奖励函数。使用策略提升算法,可以找到返回最大回报对应的最优参数sita。基于策略的方法在连续空间中比基于价值的方法要更优,因为连续空间需要对无限个状态和行为进行值估计,造成计算需求大幅增加。

策略梯度理论:
是通过对sita扰动一个微小的值完成梯度计算,甚至可以在J(sita)不可导时使用。推理过程在sutton&barto的13.1章,这个结果称为策略梯度定理。

REINFORCE:
也被称为蒙特卡洛梯度,依赖MC方法得到的回报估计值Qpi(s,a)来更新梯度参数。常用的REINFORECE变体是从收益Gt中减去一个基线值来降低梯度估计的方差。(常用的基线值是状态价值函数,A(s,a)=Q(s,a)-V(s))(来替换Q值)

Actor-Critic
叠加学习策略和学习价值函数,从而有了AC算法。
Critic用于更新价值函数参数w(既可以是行为价值函数,也可以是状态价值函数)
Actor用于更新策略函数参数sita

A3C:
是一个经典的策略梯度算法,特点是并行训练,提升算法性能。

强化学习的难点:
我们实际在应用强化学习去训练时,经常会遇到各类问题。虽然强化学习很强大,但是有时候很多问题很棘手无从下手。
Reward的设置:如何去设置Reward函数,如何将环境的反馈量化是一个非常棘手的问题。比如在AlphaGo里面,如何去衡量每一步棋下的“好”与“坏”,并且最终量化,这是一个非常棘手的问题。有些场景下的Reward函数是很难设置的。采样训练耗时过长,实际工业届应用难:强化学习需要对每一个State下的每一个Action都要尽量探索到,然后进行学习。实际应用时,部分场景这是一个十分庞大的数字,对于训练时长,算力开销是十分庞大的。很多时候使用其他的算法也会获得同样的效果,而训练时长,算力开销节约很多。强化学习的上限很高,但如果训练不到位,很多时候下限特别低。容易陷入局部最优:部分场景中Agent采取的行动可能是当前局部最优,而不是全局最优。网上经常有人截图爆出打游戏碰到了王者荣耀AI,明明此时推塔或者推水晶是最合理的行为,但是AI却去打小兵,因为AI采取的是一个局部最优的行为。再合理的Reward函数设置都可能陷入局部最优中。

链接:https://zhuanlan.zhihu.com/p/527073751

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

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

相关文章

Python3,一次掌握这些数据可视化图表技能,老板不给涨薪都不好意思。

一次性掌握数据可视化图表1、引言2、代码示例2.1 等高线密度图2.1.1 安装2.1.2 示例2.2 旭日图2.3 分簇散点图2.4 点图2.5 小提琴图2.6 词云3、总结1、引言 小屌丝:鱼哥, 老板让我把数据整理成视图。 小鱼:那你就整啊。 小屌丝:我…

【人工智能】—约束传播、弧约束、问题结果与问题分解、局部搜索CSP

【人工智能】—约束传播、弧约束、问题结果与问题分解、局部搜索CSP约束传播弧约束弧相容算法AC-3问题结构化简约束图-树结构CSP问题的局部搜索CSP的迭代算法举例:4-Queens加速:模拟退火法加速:最小最大优化(约束加权法)小结约束传播 前向检…

【Docker学习笔记】8.Docker Compose

Docker Compose Compose 简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。 如果你还不了解 …

2023蓝牙耳机性价比推荐:高品质蓝牙耳机盘点分享

无论我们是看视频还是在路上听音乐,真无线蓝牙耳机可以丰富我们的一天。然而,问题是有太多的选择,许多人不知道哪一款的性价比高音质好,下面小编特意整理了一期性价比高音质好的蓝牙耳机。 1.南卡小音舱lite2蓝牙耳机 南卡小音舱…

composer 使用细则

一、composer install 和 composer update 的区别 1.composer.json 文件 指定了项目依赖组件的版本规则及镜像地址 如果没有配置镜像地址,则默认使用全局安装的composer镜像地址 2.composer.lock 文件 保存着当前项目所依赖的php组件的镜像地址及具体的版本号&…

2022(一等奖)D277:1998-2019年中国植被动态变化及其影响因素分析

作品介绍 1 应用背景 近半个世纪以来,随着全球气候变化和人类活动的双重干扰,自然生态系统遭到了不同程度的影响。植被作为陆地生态系统的重要组成部分,在陆地生态系统的物质循环和能量流动中发挥着不可替代的作用,是自然生态系统…

Vue自创插件发布到npm以及使用方法

Vue自创插件发布到npm以及使用方法 目标:创建my-popup-selector下拉框组件,并发布到npm,效果如下图: 禁用时样式: ①创建vue项目: my-popup-selector ②项目目录结构截图如下: ③在项目根目录…

JVM垃圾回收算法

垃圾标记阶段 对象存活判断:在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC才会在执行垃圾回收时,…

Python+人工智能基础班(通俗易懂版教学)

文章目录一、环境及工具包的介绍二、Python基本语法三、matplotlib、numpy、pandas实操四、机器学习介绍五、机器学习线性回归线性回归实战准备单因子线性回归实战多因子线性回归实战六、机器学习逻辑回归使用线性回归解决分类任务使用逻辑回归解决分类任务逻辑回归实战&#x…

在小公司工作3年,从事软件测试5年了,才发现自己还是处于“初级“水平,是不是该放弃....

毕业前三年,从早到晚,加班到深夜,一年又一年,直至刚入职场的首个黄金三年过年都去了,而职位却仍在原地踏步。尽管感觉自己努力过,但是实际上,自身的能力从没得到过多少提升。 所以在无数个夜晚…

生成对抗网络 | Python实现StackGAN生成对抗神经网络

生成对抗网络 | Python实现StackGAN生成对抗神经网络 目录 生成对抗网络 | Python实现StackGAN生成对抗神经网络效果一览文章概述环境准备程序设计参考资料效果一览 文章概述 生成对抗网络 | Python实现StackGAN生成对抗神经网络 环境准备 python 2.7 TensorFlow 0.12 prettyte…

Java 多线程

多线程实现方式Thread类MyThread类继承了Thread类MyThread thread new MyThread1("窗口1");thread.start();Runnable接口自定义一个MyRunnable类来实现Runnable接口,在MyRunnable类中重写run()方法,创建Thread对象&…

I.MX6ULL_Linux_驱动篇(32) 设备树GPIO驱动

在前面章节中,我们直接在驱动文件 newchrled.c 中定义有关寄存器物理地址,然后使用 io_remap 函数进行内存映射,得到对应的虚拟地址,最后操作寄存 器对应的虚拟地址完成对 GPIO 的初始化。本章我们使用设备树来向 Linux 内核传递相…

劝退还是坚守?计算机视觉行业综述

劝退还是坚守?计算机视觉行业综述 1 从炙手可热到充满争议 计算机视觉(Computer Vision,简写为CV)是一门研究如何让计算机从图像或图像序列中获取信息并 理解其信息的学科,其主要目的在于从图像或图像序列中提取对世…

基于51单片机AT89C51的小型音乐喷泉控制系统设计

wx供重浩:创享日记 对话框发送:单片机小喷泉 获取完整无水印论文报告(内含电路原理图和程序) 根据目前音乐喷泉的发展现状,介绍了一个以AT89C51单片机为核心的小型音乐喷泉控制系统。给出了一个简洁的单片机控制电路&a…

Java_Spring:9. 基于 XML 的 AOP 配置

目录 1 环境搭建 1.1 第一步:准备必要的代码 1.2 第二步:拷贝必备的 jar 包到工程的 lib 目录 1.3 第三步:创建 spring 的配置文件并导入约束 1.4 第四步:配置 spring 的 ioc 1.5 第五步:抽取公共代码制作成通知 …

数据结构与算法笔记--数据结构与算法基本知识

目录 1--数据结构 2--算法 3--算法分析 4--实例1:普通算法与秦九韶算法的运算效率比较 5--实例2:最大子列和问题 5-1--暴力求解法 5-2--分而治之 5-3--动态规划 5-4--完整代码 1--数据结构 定义:所有数据元素以及数据元素之间的关系…

JS手写Promise(详细过程)

PS:JS手写Promise方法的整理在下一篇文章 手写Promise的API(resolve,reject,then,catch,finally,all)_Eric加油学!的博客-CSDN博客 1、基础版Promise 首先,通过一个简单的Promise例子回顾其使用 const promise new Promise((resolve, rej…

为什么诚信是项目管理的关键部分?

由于有许多需要指导的活动部件和风险,管理一个新项目可能是一项具有挑战性的工作。在一些对质量有着严格要求的行业,项目结构、设定目标、跟踪状态、风险管理和资源管理等项目管理原则尤为重要,而领导这项工作的是诚信。那么,究竟…

IP 归属用 Ip2region 就够了

文章目录Ip2region 简介是什么特性支持的编程语言案例实操依赖获取IP输入流转化解析IP测试抖音、微博、小红书等各平台相继上线" 网络用户IP地址显示功能", 境外显示 国家, 境内显示到 省市,且该功能无法关闭,IP地址为强…
最新文章