摘要: 上一节的压缩映射在实际迭代时可以分成两种方法,分别称作值迭代和策略迭代。本文用走迷宫的例子(将1维迷宫扩展到2维)讲这两种迭代。对应第一节参考链接[2]的前4章。

拆分压缩映射

上一节的压缩映射 \begin{aligned} v(s) =& \max_\pi\sum_a\pi(a|s)q(s,a) \\ =& \max_a q(s,a) \\ =& \max_a[r(s,a)+\gamma v(s')] \\ =& \max[r(s,L)+\gamma v(s_L), r(s,R)+\gamma v(s_R)] \end{aligned} v ( s ) = = = = π max a π ( a s ) q ( s , a ) a max q ( s , a ) a max [ r ( s , a ) + γ v ( s )] max [ r ( s , L ) + γ v ( s L ) , r ( s , R ) + γ v ( s R )]
中实际上每次迭代都隐含了两步,这两步按执行的先后顺序分为值迭代和策略迭代,之前例子是值迭代,因为过于简单看不出区别(一步迭代就找到了最优策略),这次换个复杂的例子。这个式子中的 strategy = np . zeros ( [ 5 , 5 ] , dtype = int ) gamma = 0.8 MAZE_TRAP = [ ( 1 , 1 ) , ( 1 , 2 ) , ( 2 , 2 ) , ( 3 , 1 ) , ( 3 , 3 ) , ( 4 , 1 ) ] # 陷阱 MAZE_TERM = ( 3 , 2 ) # 终点 # 找出一个数组中的最大值索引,如果有多个最大值,就从中随机取一个 def Argmax_Rand ( x : list ) - > int : bestv = - 1e12 samevaluei = np . zeros ( len ( x ) , dtype = int ) samecnt = 0 for n in range ( len ( x ) ) : if x [ n ] < bestv : continue elif x [ n ] > bestv : bestv = x [ n ] samecnt = 0 samevaluei [ samecnt ] = n samecnt += 1 return samevaluei [ np . random . randint ( samecnt ) ] # 返回与一个网格`grid`相邻的第`adjacent`处方位的网格 def Find_Adjacent ( grid : tuple , adjacent : int ) - > tuple : ans = list ( grid ) if adjacent == 1 : ans [ 1 ] += 1 elif adjacent == 2 : ans [ 0 ] -= 1 elif adjacent == 3 : ans [ 1 ] -= 1 elif adjacent == 4 : ans [ 0 ] += 1 ans [ 0 ] = 0 if ans [ 0 ] < 0 else ans [ 0 ] ans [ 0 ] = 4 if ans [ 0 ] > 4 else ans [ 0 ] ans [ 1 ] = 0 if ans [ 1 ] < 0 else ans [ 1 ] ans [ 1 ] = 4 if ans [ 1 ] > 4 else ans [ 1 ] return tuple ( ans ) # 迭代函数 def fx ( x ) : y = np . zeros ( [ 5 , 5 ] ) for m in range ( 5 ) : # 行 for n in range ( 5 ) : # 列 adjacent = Find_Adjacent ( ( m , n ) , strategy [ m , n ] ) actionValue = gamma * x [ adjacent ] if adjacent in MAZE_TRAP : actionValue += - 10 elif adjacent == MAZE_TERM : actionValue += 1 y [ m , n ] = actionValue return y # 对每个格子进行策略改善 # grid: 当前格子 # value: 当前策略下的价值函数矩阵 # return: 当前格子的新策略 def Policy_Imporvement ( grid : tuple , value ) : actionValues = [ ] for m in range ( 5 ) : # 5个策略 adjacent = Find_Adjacent ( grid , m ) actionValue = gamma * value [ adjacent ] if adjacent in MAZE_TRAP : actionValue += - 10 elif adjacent == MAZE_TERM : actionValue += 1 actionValues . append ( actionValue ) return Argmax_Rand ( actionValues ) # 主函数 vold = np . zeros ( [ 5 , 5 ] ) cntPolicyIter = 0 cntValueIters = [ ] while 1 : # 策略评估(policy evaluation, PE) cntValueIter = 0 while 1 : vnew = fx ( vold ) err = sum ( sum ( vnew - vold ) ) ** 2 if err < 1e-6 : # 状态价值函数收敛时退出 break vold = vnew cntValueIter += 1 # 策略评估的迭代步数 # 策略改善(policy improvement, PI) strategyOld = strategy . copy ( ) for m in range ( 5 ) : # 行 for n in range ( 5 ) : # 列 strategy [ m , n ] = Policy_Imporvement ( ( m , n ) , vnew ) # 更新策略 err = sum ( sum ( strategyOld - strategy ) ) ** 2 if err < 1e-6 : # 策略收敛时退出 break cntPolicyIter += 1 cntValueIters . append ( cntValueIter ) print ( cntPolicyIter ) print ( cntValueIters )

复现 以下论文的方法和结果: Duan,L., Zhan,Y., Hu,H., Gong,Y., Wei,J., Zhang,X., Xu,Y.: Efficiently solving the practical vehicle routing problem: A novel joint learning approach. In: KDD. pp.3054–3063 (2020) 1.为了节省时间,训练用10个(或以上)的城市规模的算例。测试算例用20个(或者以上)规模。 2.显示出 算法 训练收敛过程,可视化最后的解。可能的情况下,对比OR-Tools的求解效果(后面详细描述)。 详细介绍参考:https://blog.csdn.net/newlw/article/details/132654270
想多熟悉下pytorch,因而选择了yolov4-pytorch版本来熟悉整个流程。 代码下载地址: https://github.com/Tianxiaomo/pytorch-YOLOv4 这位大神厉害啊,这么快就 复现 了,好好学习膜拜中! yolov4.weights权重百度网盘下载地址: https://pan.baidu.com/s/1dAGEW8cm-dqK14TbhhVetA 提取码:dm5b 下载后用pycharm打开工程。 个人更喜欢把参数写在代码中,所以将demo.py中main部分改为 if __name__ == '__main__': cfgfile = 'cfg
核心贡献者:王琦、杨逸远、江季 提起李宏毅老师,熟悉 强化学习 的读者朋友一定不会陌生。很多人选择的 强化学习 入门学习材料都是李宏毅老师的台大公开课视频。 现在, 强化学习 爱好者有更完善的学习资料了! Datawhale开源项目组成员总结了李宏毅的 强化学习 视频,实现了视频教程的完整梳理和 复现 ,再也不用担心 强化学习 。 目前,项目已完全开源,包括课程内容、配套的习题和项目,供大家使用。 1. 李宏毅深度 强化学习 简介 李宏毅老师现任台湾大学电气工程系副教授,主要研究方向是机器学习,特别是深度学习
三角函数系 : 集合 {sin⁡nx,cos⁡nx}n=0,1,2,⋯\left\{ \sin nx,\cos nx \right\} n=0,1,2,\cdots{sinnx,cosnx}n=0,1,2,⋯ ∫−ππsin⁡nxsin⁡mxdx=0,n≠m∫−ππsin⁡nxcos⁡mxdx=0,n≠m∫−ππcos⁡nxsin⁡mxdx=0,n≠m\int_{-\pi}^{\pi}{\sin nx\sin mx}\mathrm{d}x=0,n\ne m \int_{-\pi}^{\pi}{
很抱歉,作为一个AI助手,我无法提供截图。但是,我可以向您提供一些关于Deeppath知识图推理 强化学习 方法的相关信息和代码实现的指导。 Deeppath是一种基于深度神经网络的知识图推理方法,它通过学习节点之间的路径来进行推理。该方法结合了图神经网络和 强化学习 的思想,可以用于解决知识图谱中的推理问题。 要 复现 Deeppath的代码,您可以按照以下步骤进行操作: 1. 数据准备:您需要准备一个知识图谱数据集,其中包含节点和边的信息。您可以使用常见的图数据库,如Neo4j或GraphDB,来存储和管理图数据。 2. 构建神经网络模型:您可以使用深度学习框架如TensorFlow或PyTorch来构建Deeppath模型。模型的输入是图中两个节点之间的路径,输出是路径的预测分数。您可以参考相关文献和开源代码来实现模型的架构。 3. 强化学习 训练:您可以使用 强化学习 算法 如深度Q网络(Deep Q-Network)来训练模型。在训练过程中,模型将通过与环境交互来学习选择最优的路径。您可以使用开源的 强化学习 库,如OpenAI Gym,来实现训练过程。 4. 评估和测试:在训练完成后,您可以使用测试数据集来评估模型的性能。您可以计算模型在路径预测上的准确率或其他评估指标。 请注意,Deeppath是一个复杂的方法,需要一定的深度学习和 强化学习 知识。如果您对这些概念不熟悉,建议您先学习相关的基础知识。 希望这些信息对您有所帮助!如果您有任何其他问题,请随时提问。
NPU_SWARM-X: 哈哈哈,可不敢称大佬,其实关于纳什均衡的问题,我硕士的时候基于微分博弈理论研究抗干扰博弈问题,当时确实会通过理论推导证明博弈会收敛至纳什均衡解或者近似纳什均衡解,但是上博士我转向了利用强化学习解决轨道追逃博弈问题,通过学习后确实如你所说,在强化学习领域很少有人会讨论博弈会收敛至纳什均衡解,我觉这确实是因为强化学习是缺少一定理论推导,因为控制率是通过训练学习出来的,没有显式表达,不像是传统控制方法,控制率是设计出来的,有显式表达可以进行理论推导证明。我个人感觉这也不意味着强化学习就得不到纳什均衡解或者近似纳什均衡解,其实如果算法和奖励设计的合理,按照纳什均衡解的定义,算法收敛后得到的应该就是近似纳什均衡,因为追击方和逃跑方经过大量尝试,最后双方已经没有办法仅通过改变自身的策略以提高自身的收益了,就像我这篇论文里的奖励变化图一样,但是因为确实没有办法从理论上证明是纳什均衡解,所以论文里也都不敢说自己得到的是,以上是我个人的观点,由于个人认识有限,可能有一些局限性。你要是对纳什均衡很感兴趣可以看一看Lacra Pavel团队的论文,我硕士的时候就学习他们的论文,这个团队好像很擅长讨论纳什均衡这些。最后再次感谢老哥,以后多多互相学习~ 表情包 [翻译]一种基于学习的脉冲机动轨道追逃博弈的高效算法 找不到服务器zhn: 原作者都来了哈哈哈膜拜大佬,我当时看了好多论文都没搞明白,既然研究博弈那肯定得有纳什均衡或者鞍点什么的,但好像没什么人说这事,请教一下你是怎么理解的? [翻译]一种基于学习的脉冲机动轨道追逃博弈的高效算法 NPU_SWARM-X: 感谢老哥的翻译,突然看到有人看自己论文还是有些感动~ 带遗忘因子的递推最小二乘法推导 找不到服务器zhn: 确实,感谢指正,已修改 带遗忘因子的递推最小二乘法推导 Louis_GAU: 当n趋近于正无穷时的递推式中,分母项应该是SUM(i=0:n-1)(lambda^i)吧?