自适应动态规划学习笔记(3)
@TOC 自适应动态规划学习笔记(3)
第三天(图全是偷的)
图1 ADP的三个部分
Model Network
书接上回,图(1)中所示的Model Network就是对于系统公式(1)xk+1=F(xk,uk)x_{k+1}=F(x_k,u_k)xk+1=F(xk,uk)中FFF的拟合,可以提前离线训练好,也可以和Critic Network、Action Network一起训练。这部分就是利用神经网络系统辨识部分,等后面有空会再记录系统辨识的知识。(推荐《系统辨识理论及MATLAB仿真》刘金琨著)
p:如果FFF有确定的表达,依旧需要建立Model Network,这是必须的。至于为什么,我母鸡啊。
Critic Network
图(1)中展示展示的ADP的三个基本组成中,Critic Network输出对函数JJJ的估计值J^\hat{J}J^,也就是对下式的估计(详见第一天)
J(xk,uk‾)=∑i=k∞γi−kU(xi,ui)(2)J(x_k,\underline{u_k})=\sum_{i=k}^{\infty}\gamma^{i-k}U(x_i,u_i)\tag{2}J(xk,uk)=i=k∑∞γi−kU(xi,ui)(2)
Critic Network的损失函数或者说平方误差由下式确定
∣∣Eh∣∣=12∑kEk2=12∑k(J^k−Uk−γJ^k+1)2(6)||E_h||=\frac{1}{2}\sum_{k}E_k^2=\frac{1}{2}\sum_k(\hat{J}_k-U_k-\gamma\hat{J}_{k+1})^2\tag{6}∣∣Eh∣∣=21k∑Ek2=21k∑(J^k−Uk−γJ^k+1)2(6)其中J^k=J^(xk,Wc)\hat{J}_k=\hat{J}(x_k,W_c)J^k=J^(xk,Wc),WcW_cWc表示Critic Network的参数(权值),函数UkU_kUk是与式(2)中相同的效用函数(utility function)用来反映系统的性能。在实际中,函数UkU_kUk通常是xkx_kxk和uku_kuk的函数,可以表示为Uk=U(xk,uk)U_k=U(x_k,u_k)Uk=U(xk,uk),当对于任意的kkk,都有Ek=0E_k=0Ek=0时,式(6)变为
J^k=Uk+γJ^k+1=Uk+γ(Uk+1+γJ^k+2)=⋯=∑i=k∞γi−kUi,(7)\begin{aligned} \hat{J}_k &= U_k +\gamma\hat{J}_{k+1}\\ &= U_k+\gamma(U_{k+1}+\gamma\hat{J}_{k+2})\\ &=\cdots\\ &=\sum_{i=k}^\infty\gamma^{i-k}U_i,\tag{7} \end{aligned} J^k=Uk+γJ^k+1=Uk+γ(Uk+1+γJ^k+2)=⋯=i=k∑∞γi−kUi,(7)
这与式(2)完全相同,因此可以将(6)作为损失函数来训练Critic Network,从而使其输出J^\hat{J}J^成为公式(2)定义的成本函数JJJ的估计。
得到Model Network后,对Critic Network进行训练,Critic Network会给出代价函数的估计,训练过程中很多标准的算法都是可以使用的,需要注意式(6)中的J^k+1\hat{J}_{k+1}J^k+1是Critic Network在k+1k+1k+1时刻对代价函数JJJ的估计,J^k+1=J^(x^k+1,Wc)\hat{J}_{k+1}=\hat{J}(\hat{x}_{k+1},W_c)J^k+1=J^(x^k+1,Wc),注意这个神经网络的参数WcW_cWc与对J^\hat{J}J^进行估计的神经网络参数完全相同,而x^k+1\hat{x}_{k+1}x^k+1则是Model Network对于k+1k+1k+1时刻状态xk+1x_{k+1}xk+1的估计。
Critic Network有两种训练方法:前向时间法(a forward-in-time approach)和后向时间法(a backward-in-time approach),图(2)表示了前向时间方法示意图,在这种方法中,待训练的Critic Network的输出是J^k\hat{J}_kJ^k,训练标签是Uk+γJ^k+1U_k+\gamma \hat{J}_{k+1}Uk+γJ^k+1,注意图中的对J^k\hat{J}_kJ^k和J^k+1\hat{J}_{k+1}J^k+1的估计所用的神经网络参数完全一样,但是其输入却完全不同。图(3)表示了后向时间方法的示意图,这种方法中待训练网络输出J^k+1\hat{J}_{k+1}J^k+1,标签为(J^k−Uk)/γ(\hat{J}_k-U_k)/\gamma(J^k−Uk)/γ,这两种方法的目的都是为了在满足式(7)的情况下最小化式(6).x^k+1\hat{x}_k+1x^k+1是Model Network的输出。
图2 前向时间方法
图3 后向时间方法
参考强化学习中的TD算法(temporal difference method ),其通过使用∣rt+1+γV(st+1)∣|r_{t+1}+\gamma V(s_t+1)|∣rt+1+γV(st+1)∣作为标签来使得学习目标是∣rt+1+γV(st+1)−V(st)∣|r_{t+1}+\gamma V(s_t+1)-V(s_t)|∣rt+1+γV(st+1)−V(st)∣最小化。这与图(2)所示的前向时间方法的标签∣Uk+γJ^k+1∣|U_k+\gamma \hat{J}_{k+1}|∣Uk+γJ^k+1∣相似。(所以说这俩同源?要学的东西又增多了(微笑) )
Action Network
在Critic Network训练完成后,就可以以最小化Uk+γJ^k+1U_k+\gamma\hat{J}_{k+1}Uk+γJ^k+1来训练Action Network,从而输出控制信号uk=u(xk,Wa)u_k=u(x_k,W_a)uk=u(xk,Wa),其中WaW_aWa是Action Network 的参数(权值),如果通过这种方式训练完成Action Network,我们就可以得到一个可以根据Critic Network的性能产生一个最优的,至少是次优的控制信号作为其输出。回想下动态规划的目标:获得式(5)(见第二天)中的最优控制序列,这个控制序列会使得(2)的函数JJJ最小。
uk∗=arg minuk{U(xk,uk)+γJ∗(xk+1)}(5)u_k^*=\argmin_{u_k}\lbrace U(x_k,u_k)+\gamma J^*(x_{k+1})\rbrace\tag{5}uk∗=ukargmin{U(xk,uk)+γJ∗(xk+1)}(5)
这里的关键就是通过对代价函数JJJ的估计,从而建立了当前行动(action)和未来的结果(consequences)之间的一种可以互相“交流”的联系。
The key here is to interactively build a link between present actions and future consequences via an estimate of the cost function
在Action Network训练完成后,就可以检查系统性能是否达标,不达标的话可以通过调整Critic Network来继续训练,重复这一过程直到性能达标。这三个神经网络是通过图(1)的方式连接在一起的,在三个网络同时训练的时候,作为过程的一部分,控制信号uku_{k}uk将会作用在外部环境得到xk+1x_{k+1}xk+1同时作用在Model Network上得到x^k+1\hat{x}_{k+1}x^k+1,与此同时,通过最小化∣∣xk+1−x^k+1∣∣||x_{k+1}-\hat{x}_{k+1}||∣∣xk+1−x^k+1∣∣来更新Model Network。
Action Network的训练通过最小化Uk+γJ^k+1U_k+\gamma\hat{J}_{k+1}Uk+γJ^k+1来完成,同时要保持Critic Network和Model Network参数固定不变,梯度信息通过Critic Network和Model Network反向传播(backward propagation)到Action Network,这三个神经网络组成了一个大的前馈网络(feedforward network)。这就意味着即使FFF有着明确的表达式,Model Network是实现ADP所必需的,便于通过反向传播算法训练Action Network。(等我搞懂我偏不用神经网络 )
ADP分类(都是我瞎翻译的)
根据Werbos的论文,ADP可以分为几种主要的方案:启发式动态规划(heuristic dynamic programming ,HDP),动作依赖的HDP(action-dependent HDP ,ADHDP)、双启发HDP(dual HDP ,DHP)、动作依赖的DHP(ADDHP)、全球化DHP(globalized DHP,GDHP)以及动作依赖的GDHP(ADGDHP)。HDP是最基本的版本,就是图(1)所示的内容。Werbos论证了ADP和强化学习的关系(TD与HDP,ADHDP和Q-learning)。
(Werbos yyds,具体论证有空再看,先学会HDP再说)
自适应动态规划学习笔记(3)相关推荐
- 动态规划学习笔记 // /经典问题/状态表示/状态转移方程
因为网络原因,图片以及部分经典问题没有上传成功,详见PDF. 首先要做的是--写出状态表示和状态转移方程,有可能会引入k,即对于子问题的界定.--状态值dp[][]要和题目所求内容的要求符合! 子问题 ...
- C# 学习笔记(16)ComboBox下拉列表框宽度自适应
C# 学习笔记(16)ComboBox下拉列表框宽度自适应 当下拉列表框中内容宽度大于下拉列表框宽度时 下拉列表框不能将内容全部显示出来 可以在下拉时,对下拉列表框内容进行重绘 /// <sum ...
- PJ可能会用到的动态规划选讲-学习笔记
PJ可能会用到的动态规划选讲-学习笔记 by Pleiades_Antares 难度和速度全部都是按照普及组来定的咯 数位状压啥就先不讲了 这里主要提到的都是比较简单的DP 一道思维数学巧题(补昨天) ...
- 《强化学习与最优控制》学习笔记(一):确定性动态规划和随机性动态规划
写在前面的 这本书的作者是Dimitri Panteli Bertsekas教授,1942年出生于希腊雅典,美国工程院院士,麻省理工大学电子工程及计算机科学教授.Bertsekas教授因其在算法优化与 ...
- 图片适应窗口_HTMLCSS学习笔记(八)-- 宽高自适应
宽高自适应 网页布局中经常要定义元素的宽和高.但很多时候我们希望元素的大小能够根据窗口或子元素自动调整,这就是pc自适应. 自适应的优点: 元素自适应在网页布局中非常重要,它能够使网页显示更灵活,可以 ...
- CSS学习笔记八——宽高自适应
宽高自适应 一.宽度自适应 二.高度自适应 三.浮动元素的高度自适应 四.窗口自适应 五.结语 一.宽度自适应 不写宽度或者写 width:auto就表示宽度自适应,可用于横栏或导航栏. 与 widt ...
- 【学习笔记整理】动态规划:背包问题之八大情况
[学习笔记整理]动态规划:背包问题之八大情况 一.01背包问题 二.完全背包问题 三.多重背包问题 四.混合背包问题 五.二维费用的背包问题 六.分组背包问题 七.背包问题求方案数 八.背包问题求具体 ...
- 【软考中级】软件设计师学习笔记
软件设计师学习笔记 计算机系统知识 程序语言设计 数据结构 操作系统 软件工程基础知识 结构化开发方法 创建型设计模式 行为型设计模式 结构型设计模式: 算法设计与分析 数据库技术基础 网络与信息安全 ...
- 百度Apollo自动驾驶学习笔记
Apollo学习笔记 作者:邹镇洪(清华大学车辆学院,个人主页 转到Github项目主页查看持续更新 转到Github项目主页查看持续更新 转到Github项目主页查看持续更新 本文是对百度Apoll ...
最新文章
- leetcode C++ 6. Z 字形变换 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
- python2.7解释器安装教程_Python解释器安装教程以及环境变量配置
- 【leetcode】1001. Grid Illumination
- 数学计算机培训反思,小学数学信息技术反思日志5
- Kamailio 简介
- IDC MarketScape:华为云IoT物联网平台位居领导者象限
- 鬼才!我居然把 Vue3 的原理用到了 React 上?
- Form组件之详解字段
- 【英语之夜】遇见--Peter
- 华为应用市场AppGallery Connect研习社·直播:百万开发者打造优质应用的奥秘
- java foxmail 附件_使用java实现与foxmail邮箱的接受,发送,转发等功能!!求精啊...
- Struts1.x系列教程(17):使用IncludeAction和ForwardAction类包含和转入Web资源
- 1004 成绩排名 (20 分)—PAT (Basic Level) Practice (中文)
- Citrix高层相继离职,XenServer或将被流产?
- loj 1308(点双连通分量应用)
- VirtualBox中,LINUX与Windows可以通过链接来跳转
- 上海科技大学计算机研究生调剂,2021年上海科技大学考研招生调剂信息
- nop掉call指令后,如何保持堆栈平衡
- js 获取当前与一个月前的日期
- 经典的搞笑反转段子,真是笑死人不偿命
热门文章
- 抛开元宇宙,我们来聊聊音视频技术的未来
- oracle pl sql面试题,Oracle 面试题库—PL/SQL
- 猿创征文|OpenCV 如何提高条形码识别率
- datanode启不起来,报错:org.apache.hadoop.hdfs.server.datanode.Datanode:Enk pool service for:Block pool ()Da
- 神经网络优化算法nag_数值算法组(NAG)向Java开发库添加了新功能
- (1) Debian 项目介绍
- 期末总结 : 2019-2020(2)
- 1,话题通讯C++与python
- ABB机器人RobotLoad插件验证负载特性
- 连接数据库——模拟ATM机查、存、取、开户功能