@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​∣∣=21​k∑​Ek2​=21​k∑​(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 min⁡uk{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∗​=uk​argmin​{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)相关推荐

  1. 动态规划学习笔记 // /经典问题/状态表示/状态转移方程

    因为网络原因,图片以及部分经典问题没有上传成功,详见PDF. 首先要做的是--写出状态表示和状态转移方程,有可能会引入k,即对于子问题的界定.--状态值dp[][]要和题目所求内容的要求符合! 子问题 ...

  2. C# 学习笔记(16)ComboBox下拉列表框宽度自适应

    C# 学习笔记(16)ComboBox下拉列表框宽度自适应 当下拉列表框中内容宽度大于下拉列表框宽度时 下拉列表框不能将内容全部显示出来 可以在下拉时,对下拉列表框内容进行重绘 /// <sum ...

  3. PJ可能会用到的动态规划选讲-学习笔记

    PJ可能会用到的动态规划选讲-学习笔记 by Pleiades_Antares 难度和速度全部都是按照普及组来定的咯 数位状压啥就先不讲了 这里主要提到的都是比较简单的DP 一道思维数学巧题(补昨天) ...

  4. 《强化学习与最优控制》学习笔记(一):确定性动态规划和随机性动态规划

    写在前面的 这本书的作者是Dimitri Panteli Bertsekas教授,1942年出生于希腊雅典,美国工程院院士,麻省理工大学电子工程及计算机科学教授.Bertsekas教授因其在算法优化与 ...

  5. 图片适应窗口_HTMLCSS学习笔记(八)-- 宽高自适应

    宽高自适应 网页布局中经常要定义元素的宽和高.但很多时候我们希望元素的大小能够根据窗口或子元素自动调整,这就是pc自适应. 自适应的优点: 元素自适应在网页布局中非常重要,它能够使网页显示更灵活,可以 ...

  6. CSS学习笔记八——宽高自适应

    宽高自适应 一.宽度自适应 二.高度自适应 三.浮动元素的高度自适应 四.窗口自适应 五.结语 一.宽度自适应 不写宽度或者写 width:auto就表示宽度自适应,可用于横栏或导航栏. 与 widt ...

  7. 【学习笔记整理】动态规划:背包问题之八大情况

    [学习笔记整理]动态规划:背包问题之八大情况 一.01背包问题 二.完全背包问题 三.多重背包问题 四.混合背包问题 五.二维费用的背包问题 六.分组背包问题 七.背包问题求方案数 八.背包问题求具体 ...

  8. 【软考中级】软件设计师学习笔记

    软件设计师学习笔记 计算机系统知识 程序语言设计 数据结构 操作系统 软件工程基础知识 结构化开发方法 创建型设计模式 行为型设计模式 结构型设计模式: 算法设计与分析 数据库技术基础 网络与信息安全 ...

  9. 百度Apollo自动驾驶学习笔记

    Apollo学习笔记 作者:邹镇洪(清华大学车辆学院,个人主页 转到Github项目主页查看持续更新 转到Github项目主页查看持续更新 转到Github项目主页查看持续更新 本文是对百度Apoll ...

最新文章

  1. leetcode C++ 6. Z 字形变换 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
  2. python2.7解释器安装教程_Python解释器安装教程以及环境变量配置
  3. 【leetcode】1001. Grid Illumination
  4. 数学计算机培训反思,小学数学信息技术反思日志5
  5. Kamailio 简介
  6. IDC MarketScape:华为云IoT物联网平台位居领导者象限
  7. 鬼才!我居然把 Vue3 的原理用到了 React 上?
  8. Form组件之详解字段
  9. 【英语之夜】遇见--Peter
  10. 华为应用市场AppGallery Connect研习社·直播:百万开发者打造优质应用的奥秘
  11. java foxmail 附件_使用java实现与foxmail邮箱的接受,发送,转发等功能!!求精啊...
  12. Struts1.x系列教程(17):使用IncludeAction和ForwardAction类包含和转入Web资源
  13. 1004 成绩排名 (20 分)—PAT (Basic Level) Practice (中文)
  14. Citrix高层相继离职,XenServer或将被流产?
  15. loj 1308(点双连通分量应用)
  16. VirtualBox中,LINUX与Windows可以通过链接来跳转
  17. 上海科技大学计算机研究生调剂,2021年上海科技大学考研招生调剂信息
  18. nop掉call指令后,如何保持堆栈平衡
  19. js 获取当前与一个月前的日期
  20. 经典的搞笑反转段子,真是笑死人不偿命

热门文章

  1. 抛开元宇宙,我们来聊聊音视频技术的未来
  2. oracle pl sql面试题,Oracle 面试题库—PL/SQL
  3. 猿创征文|OpenCV 如何提高条形码识别率
  4. datanode启不起来,报错:org.apache.hadoop.hdfs.server.datanode.Datanode:Enk pool service for:Block pool ()Da
  5. 神经网络优化算法nag_数值算法组(NAG)向Java开发库添加了新功能
  6. (1) Debian 项目介绍
  7. 期末总结 : 2019-2020(2)
  8. 1,话题通讯C++与python
  9. ABB机器人RobotLoad插件验证负载特性
  10. 连接数据库——模拟ATM机查、存、取、开户功能