多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Steve Brunton | Reinforcement Learning | 笔记 | Lecture 3 | 深度强化学习在流体动力学与控制中的应用

Steve Brunton | Reinforcement Learning | 笔记 | Lecture 3 | 深度强化学习在流体动力学与控制中的应用 目录前言1. 引言2. 强化学习框架回顾3. 流体动力学中的应用分类4. 鱼群游动研究5. 强化学习加速计算6. 综述与常用算法7. 流动控制8. 非稳态流体环境中的飞行控制9. 总结结语参考前言学习 Steven Brunton 讲授的强化学习入门概述视频本篇文章记录第三讲深度强化学习在流体动力学与控制中的应用记录下个人学习笔记和大家一起分享交流videohttps://www.youtube.com/playlist?listPLMrJAkhIeNNQe1JXNvaFvURxGY4gE9k741. 引言今天和大家分享如何在流体动力学领域应用深度强化学习在之前的几期课程中我为大家介绍了强化学习以及结合深度神经网络的强化学习也就是深度强化学习我们将探讨强化学习在流体力学领域中的一些应用。这里有一个我非常喜欢的视频展示了一只鹰在不稳定、湍流的气流中飞行你几乎可以看到这只鹰在感受风并巧妙地操控涡量最终优雅地滑翔到一块岩石上。这是一个极其复杂的控制问题这正是我们作为人类工程师希望能够在我们的系统中复制或模仿的能力。生物系统在与复杂流体环境互动方面表现得极为出色无论是鱼类、鸟类、蝙蝠甚至是飞行的昆虫长期以来几千年来它们如何做到这一点对人类来说一直是个谜同时也激发了我们许多工程设计和思考的灵感因此这种受生物学启发的强化学习理念现在开始为我们揭示如何与这些复杂系统互动并加以控制这确实令人振奋。2. 强化学习框架回顾这里简单回顾一下强化学习的基本框架我们有一个智能体在这个例子中是我们的鹰与某个环境即非定常流场进行互动它会测量当前的状态它通过视觉眼睛以及翅膀上的感知来测量周围环境的状态因此它或许能感受到流场的一些变化。它有一套策略根据当前状态、过去状态以及对未来状态的预测来决定如何行动它试图最大化某种奖励这种奖励可能相当抽象比如是否成功捕到鱼、着陆时爪子是否会撞到岩石或者在巡逻某个区域时尽可能减少能量消耗。实际上生物系统中的奖励并非直接来自环境在生物学习系统中奖励实际上是生物内部产生的因此当好事发生或我们感到快乐时我们会释放多巴胺这就是生物系统中那种内在的强化信号。因此这与生物强化学习略有不同但这是我们在模拟这些现象并自行设计时的实验场。当然我们有自己的策略存在某种价值函数鹰通过它来估计基于某个控制动作的未来收益而在深度强化学习中我们实际上是用深度神经网络替代了鹰的许多内在机制通过测量状态并做出明智决策来制定一个能在未来获得最大回报的良好策略。3. 流体动力学中的应用分类接下来我将通过几个小例子展示强化学习在流体动力学领域中的应用我们尝试将这些应用分为两类一类是直接操控流体的应用例如流动控制以减少阻力或增加升力另一类应用则是试图模拟某些生物行为例如鱼群游动或鸟群飞行。此外深度强化学习的另一种范式是学习飞行动力学控制在这种情况下飞行器例如滑翔机或四旋翼飞行器处于流体环境中并受到非定常流体动力学的影响但你实际上是在抽象化这些因素试图为机器人设计一种高层次的操控方案。4. 鱼群游动研究接下来我想重点介绍我最喜欢的一项研究即 Verma、Novati 和 Koumoutsakos 于 2018 年发表在《美国国家科学院院刊》PNAS上的论文。他们通过深度强化学习在一个非常复杂的三维模拟环境中研究了不同配置下的鱼群的行为目的是观察尾随的鱼是否能够从前导鱼身上获取能量它们能否高效地成群游动或尾随其他鱼能否设计出一种控制策略来实现这一目标这突显了在流体力学中应用强化学习的一些挑战首先这是一个极高维的模拟在这种情况下状态空间的维度可能高达数百万甚至数十亿个离散单元才能模拟这种流体因此这是一个非常高维度的非线性环境。单个智能体可能只能获取该环境的非常有限的测量数据因此它们只能获取少量的信息例如鱼类拥有侧线这是一种对压力敏感的器官它们通过侧线来感知周围流体的流动情况。运行这些模拟的成本极高我们知道强化学习需要大量的试错过程因此需要大量的模拟计算这一过程极其耗费资源目前有许多研究致力于通过降阶建模等方法加速这一过程并提高效率。Petros Koumoutsakos 的团队发表了大量出色的研究成果这只是众多论文中的一篇他们是流体力学领域中最早开展这项研究的团队之一。5. 强化学习加速计算另一个我感兴趣的领域与此相关同样出自 Petros 团队的研究那就是利用强化学习来加速计算架构。我之前提到过那个关于鱼群的大型模拟基本上是在超级计算机上完成的这确实是一项计算能力的壮举。在这篇论文中他们巧妙地运用强化学习试图加速超级计算机对湍流系统的计算由于时间关系我无法深入探讨其中的技术细节但我鼓励大家去阅读这篇论文。这些蓝色单元格在计算域中分布较为稀疏它们通过多智能体强化学习来掌握流体在这些稀疏网格点上的相互作用从而填补更高分辨率网格的细节和统计信息。因此关键在于你可以在这些稀疏元素上进行少得多的计算却仍能以极低的成本捕捉到一些高维动态特性。我认为这是一个非常棒的想法这属于湍流闭合模型领域中的亚网格尺度建模方法其核心思想是这些蓝色元素以比完全解析湍流所需的最精细分辨率更粗的尺度进行采样在这种场景下多智能体强化学习充当了闭合模型的作用。再次强调这里涉及了许多深奥的内容希望我之后能更多地讨论大涡模拟和亚网格尺度建模的内容但我鼓励大家去深入了解这些内容。6. 综述与常用算法因此你可以利用强化学习来模拟游泳和鱼群行为你可以用它来加速流体中的计算架构。我要推荐另一篇非常出色的综述论文这是 Revolt 团队的工作他们在流体领域的强化学习研究做得非常出色。我想指出的是这篇论文涵盖了文献中的许多案例并详细讨论了所使用的算法以及如何在实践中具体实施这些强化学习算法。这些算法大多采用了 Q-Learning 的某种变体QL 指的是 Q-Learning 或深度 Q 网络Deep Q-Network其中包含几种不同的算法如近端策略优化Proximal Policy OptimizationPPO、A3C我认为是异步优势演员 - 评论家算法Asynchronous Advantage Actor-Critic虽然算法种类多样但其中大多数都基于 Q-Learning。7. 流动控制接下来我想讨论的几个例子是关于如何利用强化学习来控制流体本身因此不仅仅是让智能体如我的鱼在流体中活动如果我们真正想要实现的是流动控制并操纵流体本身呢因此在许多情况下比如流体流过圆柱体或者模拟流体流过卡车、飞机或船只时我们可能希望减少阻力以提高效率。在这篇出色的论文中作者们正是通过强化学习实现了这一目标通过巧妙地应用强化学习进行控制他们成功地显著降低了阻力系数这些物体所受的阻力大大降低。请记住强化学习本质上是机器学习与控制理论的交叉领域因此在流体控制方面非常非常有用。还有一些其他例子人们直接使用这种方法来控制流体这是一篇非常酷的最新论文数值模拟和实验利用主动强化学习控制来操纵这些钝体上的阻力以及这类尾流流动。我把重要的结论放在这里我认为这是对问题的一个非常好的总结他们能够迅速将阻力降低 30%在这些模拟和实验中我想我这里有一张图这是训练前的快照中间列是训练到一半时的状态而 C 列则是训练完成后的结果你可以清楚地看到圆柱体后方的尾流即底部这一行随着系统的学习过程逐渐发生变化。实际上你可以观察到系统正在学习如何触发湍流并形成更为流线型的尾流这类似于棒球投手在某种程度上已经学会的技巧非常棒的结果。下面是一项非常精彩的演示展示了在模拟环境中学习不同的控制策略利用流体来操控物体8. 非稳态流体环境中的飞行控制那么我想深入探讨的最后一个例子是强化学习在非稳态流体环境中飞行控制的应用。我们已经看到了鱼群利用强化学习进行群体行为的研究在流体环境中控制一个智能体即一条鱼。现在我们将探讨人们如何在真实的非稳态流体环境中为四旋翼飞行器、直升机和滑翔机设计控制器这正是理论与实践结合的地方。在这一领域一些最早的研究成果出自伯克利和斯坦福大学。他们基本上成功复现了四旋翼飞行器那些极其激进的杂技式飞行动作他们主要通过人类专家的训练让这些飞行器完成那些令人惊叹的杂技飞行随后借助强化学习技术这些飞行器能够学会模仿那些杂技飞行动作。这些研究堪称该领域的先驱之作确实超前于时代比如 2004 年和 2007 年的 NeurIPS 会议上的成果等。另一项相关且较早的研究是由 Tedrick 等人完成的这里有一架模型飞机它们正在学习如何在非稳态的流体环境中实现精准降落你可以看到周围的流体也能观察到这个装置如何通过失速控制机翼最终成功降落在平台上。这是一个非常复杂的操作这是我们经常看到鸟类在降落时所做的动作比如停在电话线上但对于工程系统来说这极其困难。因此我不建议人类尝试在飞机上完成这样的操作这看起来非常危险让机翼失速产生一个巨大的分离涡在增加阻力和减速的同时提升升力从而实现这种优雅而平稳的降落动作但通过强化学习他们成功掌握了这一极其复杂的操控技巧。下面展示的是 2017 年苏黎世联邦理工学院的研究成果利用强化学习控制四旋翼飞行器这项研究非常出色它能够学习一些高难度的机动动作并有效应对干扰。OK另一个非常出色的研究是 Reddy 等人于 2016 年发表的成果。这项研究主要聚焦于在湍流环境中学习如何高效滑翔他们的做法是将一个鸟类模型置于混沌的瑞利 - 贝纳德对流场中也就是说底部温度高顶部温度低这模拟了平原地区日出时的环境条件地面受热后会形成巨大的热对流单元捕食鸟类或食腐鸟类会借助这些上升气流滑翔并攀升随后在特定区域上空盘旋搜寻小型猎物等目标。因此图 A 展示了强化学习训练前的状态而图 B 则展示了训练后的效果可以看出它们已经学会了如何在这些不稳定、非定常的流体环境中利用上升气流实现高效的攀升。OK接下来是另一个精彩的例子 — 学习飞行。这个研究非常精妙展示了飞行器如何起飞、悬停、滑翔和着陆整个过程相当复杂且精细。9. 总结综上所述我们已经看到强化学习尤其是深度强化学习能够用于理解和控制复杂的流体环境对此我们可以从几个角度来探讨我们可以控制在流体环境中互动的智能体比如鱼类或滑翔机我们也可以直接操控流体环境本身例如在流体控制应用中。因此我认为这将成为未来几十年中一个极具发展潜力的领域强化学习在机器人领域已经得到了广泛应用这是一种非常稳健、受生物学启发的学习方法能够帮助我们与极其复杂的系统进行交互因此我认为它在未来流体工程中的实用性和核心地位只会不断增强。结语本讲将 Deep RL 的视野从经典的游戏与机器人控制延伸到了一个更具物理复杂度的领域—流体动力学。如果说前两讲是在建立 RL 的理论框架和通用工具那么这一讲则展示了这些工具如何在真实物理世界中 “落地”解决那些传统控制方法几乎无法企及的非线性、高维度、非稳态问题。整讲内容可以从两个维度来理解控制什么和如何控制。控制什么—课程将应用场景清晰地划分为两类1. 控制流体中的智能体鱼在湍流中的群游Verma et al., 2018, PNAS、滑翔机在瑞利-贝纳德对流中借助上升气流盘旋攀升Reddy et al., 2016、四旋翼飞行器在非稳态气流中完成高难度杂技动作Berkeley/Stanford, 2004–2007以及精准失速降落Tedrick et al.—这些应用的核心是让智能体学会 “阅读” 复杂的流场信息并做出最优的运动决策。2. 直接控制流体本身通过主动流动控制减少圆柱体/钝体绕流的阻力阻力系数降低约 30%改变尾流结构使其更加流线型—这里 RL 直接作为 “流动控制器”而不仅仅是智能体的导航器。如何控制—在算法层面主流方法集中在 Q-Learning 的多种变体上包括深度 Q 网络DQN、近端策略优化PPO以及异步优势演员-评论家A3C等。同时本讲也揭示了流体力学场景下 RL 面临的独特挑战状态空间的维度极高数百万乃至数十亿离散单元、单个智能体的感知极其有限如同鱼类仅靠侧线感知局部压力以及仿真计算成本极为高昂—这催生了另一个令人兴奋的方向用 RL 反过来加速流体计算例如利用多智能体 RL 作为湍流闭合模型中的亚网格尺度Subgrid-Scale建模方法在稀疏网格上捕捉高维动态特性。回到开篇的那只鹰—它在湍流中优雅地操控涡量、精准着陆—这不仅是生物系统的奇迹更是这一讲乃至整个 Deep RL 在流体力学中追求的终极目标让机器像生物一样在与复杂流体的交互中学会 “感受” 和 “驾驭” 物理世界。从鱼群到滑翔机从圆柱绕流到四旋翼杂技RL 正在成为连接生物学启发与流体工程实践之间的关键桥梁。正如 Brunton 所预见的这一交叉领域在未来的几十年中只会变得更加实用和核心—而我们才刚刚出发 下一讲我们将来学习强化学习中的方法概述敬请期待参考https://www.youtube.com/playlist?listPLMrJAkhIeNNQe1JXNvaFvURxGY4gE9k74
返回列表