《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch8 值函数拟合 【基于近似函数的 TD 算法:Sarsa、Q-leaning、DQN】

news2024/10/7 14:29:35

PPT 截取有用信息。 课程网站做习题。总体 MOOC 过一遍

  • 1、学堂在线 视频 + 习题
  • 2、相应章节 过电子书 复习 【下载: 本章 PDF GitHub 页面链接】
  • 3、 MOOC 习题
  • 跳过的 PDF 内容

学堂在线 课程页面链接
中国大学MOOC 课程页面链接
B 站 视频链接

PPT和书籍下载网址: 【GitHub链接】

文章目录

    • 8.1 值表示: 表格 ——> 函数
    • 8.2 状态值 估计
    • 8.4 Deep Q-leaning 【DQN】

在这里插入图片描述


第 7 章: 基于表格的 TD 学习算法
本章: 基于函数的 TD 学习算法

神经网络

DQN

在这里插入图片描述

8.1 值表示: 表格 ——> 函数

在这里插入图片描述

表格:直接重写表中相应的条目
函数:通过更新 w w w 间接地更改值

优点: 直观,便于分析。
缺点: 难以处理 大的 或 连续的 状态或动作
两个方面:1) 存储; 2) 泛化能力。

有很多的 状态-动作 对, 不可能都访问到。

曲线近似, 节省存储空间。

  • 无法精确表示 状态值。

函数近似法通过牺牲精度提高存储效率

idea: 使用参数化函数 v ^ ( s , w ) ≈ v π ( s ) \hat v(s, w)\approx v_\pi(s) v^(s,w)vπ(s) 近似 状态和动作值,其中 w ∈ R m w \in \mathbb R^m wRm 是参数向量。

优点:
1) 存储 w w w 的维数可能比 ∣ S ∣ |\mathcal S| S小得多。
2) 泛化
当一个状态 s s s 被访问时,参数 w w w 被更新,这样其他一些未访问状态的值也可以被更新。通过这种方式,学习值 可以推广到 未访问状态。


8.2 状态值 估计

P2

真实状态值 v π ( s )     v_\pi(s)~~~ vπ(s)    估计值 v ^ ( s , w ) \hat v(s, w) v^(s,w)

为了找到最优的 w w w,我们需要两个步骤:
1、定义一个目标函数。
2、推导 优化目标函数 的算法。

目标函数: J ( w ) = E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] J(w) =\mathbb E[(v_\pi(S)-\hat v(S, w))^2] J(w)=E[(vπ(S)v^(S,w))2]

误差 的平方。

——————
期望是 关于 随机变量 S ∈ S S\in \mathcal S SS 的, 那么 S S S 的概率分布是什么?

平均分布。 每个 状态的 权重都是 1 ∣ S ∣ \frac{1}{|\mathcal S|} S1

J ( w ) = E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] = 1 ∣ S ∣ ∑ s ∈ S ( v π ( s ) − v ^ ( s , w ) ) 2 J(w) =\mathbb E[(v_\pi(S)-\hat v(S, w))^2]=\frac{1}{|\mathcal S|}\sum\limits_{s\in\mathcal S}(v_\pi(s)-\hat v(s, w))^2 J(w)=E[(vπ(S)v^(S,w))2]=S1sS(vπ(s)v^(s,w))2

给重要的状态 更大的权重。

平稳分布:稳态分布, 极限分布

马尔可夫过程 的长期行为

在代理执行给定策略足够长的时间后,代理处于任何状态的概率可以用这个平稳分布来描述。

基于策略 π \pi π 的马尔可夫过程 的平稳分布: { d π ( s ) } s ∈ S \{d_\pi(s)\}_{s\in\mathcal S} {dπ(s)}sS

d π ( s ) ≥ 0 d_\pi(s) \geq 0 dπ(s)0 ∑ s ∈ S d π ( s ) = 1 \sum\limits_{s\in\mathcal S}d_\pi(s) =1 sSdπ(s)=1

J ( w ) = E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] = ∑ s ∈ S d π ( s ) ( v π ( s ) − v ^ ( s , w ) ) 2 J(w) =\mathbb E[(v_\pi(S)-\hat v(S, w))^2]=\sum\limits_{s\in\mathcal S}\textcolor{blue}{d_\pi(s)}(v_\pi(s)-\hat v(s, w))^2 J(w)=E[(vπ(S)v^(S,w))2]=sSdπ(s)(vπ(s)v^(s,w))2

这个函数是加权平方误差
由于访问频率越高的状态具有更高的 d π ( s ) d_\pi(s) dπ(s) 值,因此它们在目标函数中的权重也高于 访问频率越低 的状态。

在这里插入图片描述

在这里插入图片描述

——————
优化目标函数

最小化 梯度下降

在这里插入图片描述
用 随机梯度 替换 真实梯度, 避免 计算期望。

w t + 1 = w t + α t ( v π ( s t ) − v ^ ( s t , w t ) ) ∇ w v ^ ( s t , w t ) w_{t+1}=w_t+\alpha_t(v_\pi(s_t)-\hat v(s_t,w_t))\nabla _w\hat v(s_t, w_t) wt+1=wt+αt(vπ(st)v^(st,wt))wv^(st,wt)

问题: v π v_\pi vπ 未知。——> 用 近似值 替换
方式一:基于 MC 学习。 用 episode 中从 s t s_t st 开始的 折扣回报 g t g_t gt 替换 v π ( s t ) v_\pi(s_t) vπ(st)
w t + 1 = w t + α t ( g t − v ^ ( s t , w t ) ) ∇ w v ^ ( s t , w t ) w_{t+1}=w_t+\alpha_t(\textcolor{blue}{g_t}-\hat v(s_t,w_t))\nabla _w\hat v(s_t, w_t) wt+1=wt+αt(gtv^(st,wt))wv^(st,wt)
方式二: 基于 TD 学习。
v π ( s t ) v_\pi(s_t) vπ(st)
w t + 1 = w t + α t [ r t + 1 + γ v ^ ( s t + 1 , w t ) − v ^ ( s t , w t ) ] ∇ w v ^ ( s t , w t ) w_{t+1}=w_t+\alpha_t[\textcolor{blue}{r_{t+1}+\gamma \hat v(s_{t+1},w_t)}-\hat v(s_t,w_t)]\nabla _w\hat v(s_t, w_t) wt+1=wt+αt[rt+1+γv^(st+1,wt)v^(st,wt)]wv^(st,wt)

在这里插入图片描述

——————
如何选择 v ^ ( s , w ) \hat v(s,w) v^(s,w) ?

方式一: 线性近似。 v ^ ( s , w ) = ϕ T ( s ) w \hat v(s, w)=\phi^T(s)w v^(s,w)=ϕT(s)w

  • 特征向量 ϕ ( s ) \phi(s) ϕ(s)。 系数

方式二: 非线性 近似。 神经网络。

  • 神经网络的输入为 状态, 输出为 v ^ ( s , w ) \hat v(s, w) v^(s,w), 网络参数为 w w w

在这里插入图片描述

线性近似的优缺点:
缺点:难以选择合适的特征向量。
优点:易于理解。

表格表示 是 线性函数近似 的 特例。
考虑 状态 s s s 的特征向量的特殊情况。
ϕ ( s ) = e s ∈ R ∣ S ∣ \phi(s)=e_s\in\mathbb R^{|\mathcal S|} ϕ(s)=esRS
e s e_s es: 第 s s sth 个数为 1 , 其它为 0 的向量。
v ^ ( s , w ) = ϕ T ( s ) w = e s T w = w ( s ) \hat v(s, w)=\phi^T(s)w=e^T_sw=w(s) v^(s,w)=ϕT(s)w=esTw=w(s)
w ( s ) w(s) w(s) w w w 的 第 s s sth 个数

在这里插入图片描述

——————
例子:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

——————

TD-Linear 算法最小化的是 投影 贝尔曼误差。

在这里插入图片描述

P3 Sarsa + 值函数近似

w t + 1 = w t + α t [ r t + 1 + γ q ^ ( s t + 1 , a t + 1 , w t ) − q ^ ( s t , a t , w t ) ] ∇ w q ^ ( s t , a t , w t ) w_{t+1}=w_t+\alpha_t[r_{t+1}+\gamma\hat q(s_{t+1}, a_{t+1}, w_t)-\hat q(s_t,a_t,w_t)] \nabla_w\hat q(s_t, a_t, w_t) wt+1=wt+αt[rt+1+γq^(st+1,at+1,wt)q^(st,at,wt)]wq^(st,at,wt)

在这里插入图片描述

Q 学习 + 函数近似

w t + 1 = w t + α t [ r t + 1 + γ max ⁡ a ∈ A ( s t + 1 ) q ^ ( s t + 1 , a , w t ) − q ^ ( s t , a t , w t ) ] ∇ w q ^ ( s t , a t , w t ) w_{t+1}=w_t+\alpha_t[r_{t+1}+\gamma \textcolor{blue}{\max\limits_{a\in\mathcal A(s_{t+1})}}\hat q(s_{t+1},\textcolor{blue}{a} , w_t)-\hat q(s_t,a_t,w_t)] \nabla_w\hat q(s_t, a_t, w_t) wt+1=wt+αt[rt+1+γaA(st+1)maxq^(st+1,a,wt)q^(st,at,wt)]wq^(st,at,wt)

在这里插入图片描述

8.4 Deep Q-leaning 【DQN】

Deep Q-learning、deep Q-network (DQN)

最成功地将 深度神经网络 引入强化学习的算法之一。

应用 和 方法
应用: 在一系列游戏控制上 达到人类控制的水平。
方法: 关键技术 后续被广泛使用。

在这里插入图片描述

目标函数:
在这里插入图片描述
优化:
在这里插入图片描述

我们可以在计算梯度时假设 y y y 中的 w w w 是固定的(至少在一段时间内是固定的)。

在这里插入图片描述
使用两个网络, 分别 估计 w w w
主网络的 w w w: 一直更新
目标网络的 w T w_T wT: 隔一段时间 更新

在这里插入图片描述

DQN 的基本思想是使用梯度下降算法最小化目标函数。


2 个重要技巧:

1、两个网络:一个主网络和一个目标网络。
实现细节:
w w w w T w_T wT 分别表示主网络和目标网络的参数。它们最初被设置为相同的。
在每次迭代中,我们从重放缓冲区中提取一小批样本 { ( s , a , r , s ′ ) } \{(s, a, r, s')\} {(s,a,r,s)}
网络的输入包括状态 s s s 和动作 a a a,目标输出为 y T = r + γ max ⁡ a ∈ A ( s ′ ) q ^ ( s ′ , a , w T ) y_T =r+ \gamma \max\limits_{a\in \cal A(s') }\hat q(s',a,w_T) yT=r+γaA(s)maxq^(s,a,wT)。然后,我们直接最小化 小批次 { ( s , a , y T ) } \{(s, a,y_T)\} {(s,a,yT)} 上的 TD 误差或称为损失函数 ( y T − q ^ ( s , a , w ) ) 2 (y_T - \hat q(s, a, w))^2 (yTq^(s,a,w))2

2、经验回放

replay buffer 回放缓冲 B = { ( s , a , r , s ′ ) } \mathcal B=\{(s, a, r, s^\prime)\} B={(s,a,r,s)}

每次我们训练神经网络时,我们都可以从回放缓冲区中抽取一小批随机样本。

均匀分布 经验回放。

为什么 DQN 需要经验回放?为什么重播必须遵循均匀分布?

在这里插入图片描述
然而,样本并不是统一收集的,因为它们是由某些策略生成的。
为了打破后续样本之间的相关性,我们可以使用经验重放技术,从重放缓冲区中均匀地提取样本。

更充分地使用数据

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

再强大的算法 也需要 好的数据 才能 work。

8.6

目标函数 涉及到 状态的概率分布, 该分布通常选为 平稳分布。

为什么深度 Q-learning 需要经验回放?
原因在于 (8.37) 中的目标函数。特别是,为了很好地定义目标函数,我们必须指定 S , A , R , S ′ S, A, R, S' S,A,R,S 的概率分布。
( S , A ) (S, A) (S,A) 给定时,由系统模型确定 R R R S ′ S' S 的分布。
描述 状态-行为对 ( S , A ) (S, A) (S,A) 分布的最简单方法是假设它是均匀分布的。然而,状态-动作样本在实践中可能不是均匀分布的,因为它们是由行为策略作为一个序列生成的。为了满足均匀分布的假设,有必要打破序列中样本之间的相关性。为此,我们可以使用经验重放技术,从重放缓冲区中均匀地抽取样本。经验回放的一个好处是,每个经验样本可以被多次使用,这可以提高数据效率
在这里插入图片描述

——————
习题笔记

表格表示 可以看作是 函数表示 的特例

难以直接计算目标函数的梯度:先固定目标函数中的一部分,这样求解梯度更容易。

在这里插入图片描述

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

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

相关文章

大厂面试官问我:哨兵怎么实现的,Redis 主节点挂了,获取锁时会有什么问题?【后端八股文六:Redis集群八股文合集】

往期内容: 大厂面试官问我:Redis处理点赞,如果瞬时涌入大量用户点赞(千万级),应当如何进行处理?【后端八股文一:Redis点赞八股文合集】-CSDN博客 大厂面试官问我:布隆过滤…

Shell 脚本编程保姆级教程(下)

七、Shell 流程控制 7.1 if #!/bin/bash num1100 if test $[num1] 100 thenecho num1 是 100 fi 7.2 if else #!/bin/bash num1100 num2100 if test $[num1] -eq $[num2] thenecho 两个数相等! elseecho 两个数不相等! fi 7.3 if else-if else #!/…

深度学习 - Transformer 组成详解

整体结构 1. 嵌入层(Embedding Layer) 生活中的例子:字典查找 想象你在读一本书,你不认识某个单词,于是你查阅字典。字典为每个单词提供了一个解释,帮助你理解这个单词的意思。嵌入层就像这个字典&#xf…

代码随想录-二叉搜索树(1)

目录 二叉搜索树的定义 700. 二叉搜索树中的搜索 题目描述: 输入输出示例: 思路和想法: 98. 验证二叉搜索树 题目描述: 输入输出示例: 思路和想法: 530. 二叉搜索树的最小绝对差 题目描述&#x…

IOS Swift 从入门到精通:ios 连接数据库 安装 Firebase 和 Firestore

创建 Firebase 项目 导航到Firebase 控制台并创建一个新项目。为项目指定任意名称。 在这里插入图片描述 下一步,启用 Google Analytics,因为我们稍后会用到它来发送推送通知。 在这里插入图片描述 在下一个屏幕上,选择您的 Google Analytics 帐户(如果已创建)。如果没…

java第三十课 —— 面向对象练习题

面向对象编程练习题 第一题 定义一个 Person 类 {name, age, job},初始化 Person 对象数组,有 3 个 person 对象,并按照 age 从大到小进行排序,提示,使用冒泡排序。 package com.hspedu.homework;import java.util.…

使用slenium对不同元素进行定位实战篇~

单选框Radio定位: 单选框只能点击一个,并且点击之后并不会被取消,而多选框,能够点击多个,并且点击之后可以取消 import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; imp…

基于python和opencv实现边缘检测程序

引言 图像处理是计算机视觉中的一个重要领域,它在许多应用中扮演着关键角色,如自动驾驶、医疗图像分析和人脸识别等。边缘检测是图像处理中的基本任务之一,它用于识别图像中的显著边界。本文将通过一个基于 Python 和 OpenCV 的示例程序&…

intellij idea安装R包ggplot2报错问题求解

1、intellij idea安装R包ggplot2问题 在我上次解决图形显示问题后,发现安装ggplot2包时出现了问题,这在之前高版本中并没有出现问题, install.packages(ggplot2) ERROR: lazy loading failed for package lifecycle * removing C:/Users/V…

Android 10.0 关于定制自适应AdaptiveIconDrawable类型的动态时钟图标的功能实现系列二(拖动到文件夹部分功能实现)

1.前言 在10.0的系统rom定制化开发中,在关于定制动态时钟图标中,原系统是不支持动态时钟图标的功能,所以就需要从新 定制动态时钟图标关于自适应AdaptiveIconDrawable类型的样式,就是可以支持当改变系统图标样式变化时,动态时钟 图标的背景图形也跟着改变,本篇实现在拖…

HBuilder X 小白日记02-布局和网页背景颜色

html&#xff1a; 例子1&#xff1a; 整个&#xff1a; css案例&#xff1a; 1.首先右键&#xff0c;创建css文件 2.在html文件的头部分&#xff0c;引用css&#xff0c;快捷方式&#xff1a;linkTab键 <link rel"stylesheet" href" "> 3.先在css…

操作系统精选题(二)(综合模拟题一)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;操作系统 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 简答题 一、进程由计算和IO操作组…

论文阅读之旋转目标检测ARC:《Adaptive Rotated Convolution for Rotated Object Detection》

论文link&#xff1a;link code&#xff1a;code ARC是一个改进的backbone&#xff0c;相比于ResNet&#xff0c;最后的几层有一些改变。 Introduction ARC自适应地旋转以调整每个输入的条件参数&#xff0c;其中旋转角度由路由函数以数据相关的方式预测。此外&#xff0c;还采…

【Unity】Timeline的倒播和修改速度(无需协程)

unity timeline倒播 一、核心&#xff1a; 通过playableDirector.playableGraph.GetRootPlayable(i).SetSpeed(speed)接口&#xff0c;设置PlayableDirector的速度。 二、playableGraph报空 若playableDirector不勾选Play On Awake&#xff0c;则默认没有PlayableGraph&…

Redis基础教程(三):redis命令

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

oj E : 投资项目的方案

Description 有n种基础的投资项目&#xff0c;每一种的单位收益率为profitn&#xff0c;存在m种投资组合&#xff0c;限制每一种的投资总额不能超过invest_summ 每种投资组合中项目所需的单位投入是不同的&#xff0c;为costmn 求&#xff1a;使得收益率之和最高的每种项目投…

Meven

目录 1.简介2.Maven项目目录结构2.1 约定目录结构的意义2.2 约定大于配置 3. POM.XML介绍3.2 依赖引用3.3 属性管理 4 Maven生命周期4.1 经常遇到的生命周期4.1 全部生命周期 5.依赖范围&#xff08;Scope&#xff09;6. 依赖传递6.1 依赖冲突6.2 解决依赖冲突6.2.1 最近依赖者…

1、线性回归模型

1、主要解决问题类型 1.1 预测分析(Prediction) 线性回归可以用来预测一个变量(通常称为因变量或响应变量)的值,基于一个或多个输入变量(自变量或预测变量)。例如,根据房屋的面积、位置等因素预测房价。 1.2 异常检测(Outlier Detection) 线性回归可以帮助识别数…

vscode-创建vue3项目-修改暗黑主题-常见错误-element插件标签-用法涉及问题

文章目录 1.vscode创建运行编译vue3项目2.添加项目资源3.添加element-plus元素4.修改为暗黑主题4.1.在main.js主文件中引入暗黑样式4.2.添加自定义样式文件4.3.html页面html标签添加样式 5.常见错误5.1.未使用变量5.2.关闭typescript检查5.3.调试器支持5.4.允许未到达代码和未定…

量产工具一一显示系统(一)

目录 前言 一、项目介绍和应用 1.简单易用 2.软件可配置、易扩展 3.纯 C 语言编程 4.类似界面应用 二、项目总体框架 三、显示系统 1.显示系统数据结构抽象 &#xff08;1&#xff09;common.h &#xff08;2&#xff09;disp_manager.h 2.Framebuffer编程 &#x…