当前位置: 首页 > news >正文

【深度之眼cs231n第七期】笔记(三十一)

目录

  • 强化学习
    • 什么是强化学习?
    • 马尔可夫决策过程(MDP)
    • Q-learning
    • 策略梯度
    • SOTA深度强化学习

还剩一点小尾巴,还是把它写完吧。(距离我写下前面那行字又过了好几个月了【咸鱼本鱼】)(汗颜,好久之前写了一半就忘了,后面的就直接看图吧)

cs231n的强化学习公式较多,我是看了李宏毅的强化学习才理解的。

强化学习

什么是强化学习?

总览:强化学习里有三个重要的概念:环境agent奖励

它们的关系如下:

  • 环境给予agent一个状态St;
  • 在该状态下,agent采取行动At;
  • 对于行动At,环境给出的奖励是Rt;
  • 并且环境给予agent下一状态St+1,循环往复。

强化学习的目标是:学习如何行动能使奖励达到最大,我们能控制的只有行动,奖励和状态都是环境给予的。
在这里插入图片描述
举个具体的例子:
Atari游戏的状态是当前游戏界面;
agent可采取的行动有:上、下、左、右;
奖励:采取一步行动后,获得或减少的分数;
目标:以最高分完成游戏。
在这里插入图片描述

马尔可夫决策过程(MDP)

上面都是用文字描述的,现在用数学语言来描述一下强化学习S。

事实上,一个马尔可夫决策过程就是强化学习问题的数学表达。马尔可夫决策过程满足马尔可夫性。
马尔可夫性:当前状态完全刻画了世界状态,也就是说,下一状态完全依赖于当前状态。

马尔可夫决策过程由一组对象定义(S,A,R,P,γ)

  • S是所有可能状态的集合
  • A是所有可能行动的集合
  • R是奖励的概率分布,由(状态,行动)给定
  • P是跳到下一状态的概率,由(当前状态,行动)给定
  • γ是奖励的衰退因子

在这里插入图片描述
用马尔可夫决策过程来描述强化学习:

  • 在t=0时刻,环境采样初始状态S0
  • 从t=0到学习结束:
    • agent选择行动At
    • 环境依概率给出奖励Rt(概率由R(.|St,At)决定)
    • 环境依概率给出下一状态St+1(概率由P(.|St,At)决定)
    • agent接收奖励Rt和状态St+1

我们所采取的行动组合a0,a1,a2……称为策略π
而强化学习的目标是找到一个策略π*,使得奖励之和最大
在这里插入图片描述
最直接的解决办法是穷举所有的行动组合,计算每个组合的奖励,把奖励最大的选出来。但这其实有个问题,每次行动后,奖励和下一状态都是环境给予的,有一定的随机性。

也就是说即使每次执行的都是同一个行动组合π,最后的结果也可能相差很大,所以首先要解决奖励之和的随机性,这样我们才能比较哪个组合更好。而解决随机性最常用的方法是求期望

所以现在问题变成了:找到一个π*,使得E(奖励之和)最大
在这里插入图片描述

Q-learning

在解决如何找到最优策略π*之前,为了方便后面描述算法,先定义两个有用的函数:

值函数:在状态为s的情况下,遵从策略π后得到的E(奖励之和)
假设初始状态有3种:S0、S1和S2,那么策略π的E(奖励之和)=Vπ(S0)+Vπ(S1)+Vπ(S2)

Q值函数:在状态为s、行动为a的情况下,遵从策略π后得到的E(奖励之和)
假设状态为s时可采取的行动有3种:A0、A1和A2,那么Vπ(S0)=Qπ(S0,A0)+Qπ(S0,A1)+Qπ(S0,A2)
在这里插入图片描述

给定S0和A0的情况下,最优的策略π*能使Q值函数达到最大,记为Q*

Q*满足bellman等式,这个等式想表达的东西很简单,就是当前最优的Q*=当前奖励r+下一状态下最优的Q*
乍一看这个式子没有任何用,既然我不知道现在的Q*,当然也不会知道下一状态的Q*了。除非一直迭代到最后一个状态,但是前面提到了奖励和下一状态都是随机的,所以直接迭代会非常复杂,这条路行不通。

现在的问题是:Q*太复杂了,没办法直接表达,那能拿什么东西来替代吗?
这就轮到神经网络出场了,神经网络专门解决表达式过于复杂的问题。

假设使用神经网络QL来表示函数Q*,Q*有两个参数——状态s和行动a,那么QL也会有两个输入——s和a(如果行动是离散的,QL也可以设计为:输入s,输出n个标量,每个标量代表某一个行动下的E(奖励之和))。
QL会输出一个标量代表当前状态s和行动a的E(奖励之和),不同的输入会得到不同的E(奖励之和)

那么只要训练神经网络QL,使得QL(Si+1,Ai+1)-QL(Si,Ai)尽可能地接近Ri就可以了,这不就是一个简单的回归模型吗?

在训练好QL后,由于行动是有限的,所以可通过下面的方式找到π*:

  1. 在Si的状态下,使用遍历(行动是离散的)或梯度上升(行动是连续的)得到Ai,使得QL(S0,Ai)最大
  2. 环境根据Si和Ai给出Si+1
  3. 重复1、2步直到结束
  4. π*=A0A1A2……

在这里插入图片描述
上面提到的QL网络还有三个问题:

  1. QL的训练方式是使QL(Si+1,Ai+1)-QL(Si,Ai)尽量接近Ri,每次更新时QL(Si,Ai)和QL(Si+1,Ai+1)的值会同时改变,造成训练的不稳定。
    所以在实际训练中会有两个神经网络,QL和QLtarget,QLtarget-QL尽量接近Ri
    每次反向传播时只更新QL,在经过N次迭代后再把QL的参数赋值给QLtarget
    在这里插入图片描述
  2. 由于QL网络的训练方式是:与环境互动一次,更新QL,根据更新后的QL获得下一行动a,使用a和环境互动……
    下一个行动a与当前行动高度相关,这会导致训练效果不好,就像进入一家新餐厅时,随机点了一道菜,味道还可以,从此以后就再也不尝试其他菜了。
    解决办法是:准备一个缓冲区,每次互动后把数据存入缓冲区,再从缓冲区随机选取数据进行训练
    这种办法还有一个好处,可以多次使用训练数据。一般来说,在强化学习中,与环境互动才是最费时间的。
    在这里插入图片描述
  3. 对于一个复杂的问题,比如让机器人抓住某个物体,Q函数很难通过随机尝试学到一个具体的行动来解决这个问题。那么可不可以换一个方向,不需要机器人学习具体的行动,而是学习一个“握住”的策略?
    在这里插入图片描述

策略梯度

策略梯度网络PG的输入是状态s,输出是下一步采用某个行动的概率p(a|s)(而上面的QL网络的输出是采用某个动作后的E(奖励之和))。

在网络PG固定的情况下,可得到多个策略πθ每个策略有一定的概率
在这里插入图片描述
也可以计算出πθ奖励之和
在这里插入图片描述
如果穷举所有的行为轨迹πθ,那么可以计算出E(奖励之和),记为J(θ)
在这里插入图片描述
J(θ)是由θ决定的,而且我们的目标是最大化J(θ),那么可以考虑对参数θ进行梯度上升(目标函数是J(θ))
在这里插入图片描述
课程里用了好几页PPT和大段大段的公式来讨论J(θ)能不能求导,要怎么进行梯度上升,由于我这里直接把函数看做神经网络GP了,就不展示相应的细节了(神经网络当然可以求导,进行梯度上升也很容易,神经网络牛逼!而且删掉公式之后,脉络越发清晰起来了。)

下面是一些训练技巧:

  1. 增加baseline
    如果奖励永远都是正的,那么任何行动都会导致J(θ)增加,从而增加该行动的概率。
    而所有概率之和为1,其他行动只是不幸没有被采样到就得降低概率,这是不符合要求的。
    所以希望奖励有正有负,这可以通过减去一个baseline来达成,历史奖励平均值是一个常用的baseline。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

SOTA深度强化学习

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
cs231n系列终于写完了,其实后面还有两课,一课是讲硬件加速和模型轻量化,另一课是讲“为什么稍微改变一张熊猫的照片就可以让计算机把它认为是长臂猿(人眼看不出任何差别)”,但对这两个方面不是很熟悉(轻量化还好,后一课真的一知半解的),就不乱写了。

不写的最主要的原因其实是:我进了GAN的深渊……

http://www.lryc.cn/news/527766.html

相关文章:

  • 【云安全】云原生-K8S-简介
  • SpringBoot中Excel表的导入、导出功能的实现
  • Spark入门(Python)
  • Daemon进程创建过程
  • 在sortablejs的拖拽排序情况下阻止input拖拽事件
  • C++初阶—string类
  • C# 提取PDF表单数据
  • 算法刷题Day28:BM66 最长公共子串
  • 论文阅读笔记:MambaOut: Do We Really Need Mamba for Vision?
  • HarmonyOS:ForEach:循环渲染
  • Python3 【函数】项目实战:5 个新颖的学习案例
  • XSS 漏洞全面解析:原理、危害与防范
  • 从 GShard 到 DeepSeek-V3:回顾 MoE 大模型负载均衡策略演进
  • 【回溯+剪枝】回溯算法的概念 全排列问题
  • Flutter解决macbook M芯片Android Studio中不显示IOS真机的问题
  • 自签证书的dockerfile中from命令无法拉取镜像而docker的pull命令能拉取镜像
  • 【MySQL】--- 复合查询 内外连接
  • QT TLS initialization failed
  • 系统学英语 — 句法 — 复合句
  • 指针的介绍2前
  • 16.Word:石油化工设备技术❗【28】
  • Python-基础环境(01) 虚拟环境,Python 基础环境之虚拟环境,一篇文章助你完全搞懂!
  • Dest1ny漏洞库:用友 U8-CRM 系统 ajaxgetborrowdata.php 存在 SQL 注入漏洞
  • java.sql.Date 弃用分析与替代方案
  • HarmonyOS:状态管理最佳实践
  • 如何提高新产品研发效率
  • MongoDB平替数据库对比
  • JavaScript系列(46)-- WebGL图形编程详解
  • YOLO目标检测4
  • 十三先天记