目录
- 前言
- 1. 引言
- 2. 强化学习框架回顾
- 3. 流体动力学中的应用分类
- 4. 鱼群游动研究
- 5. 强化学习加速计算
- 6. 综述与常用算法
- 7. 流动控制
- 8. 非稳态流体环境中的飞行控制
- 9. 总结
- 结语
- 参考
前言
学习 Steven Brunton 讲授的强化学习入门概述视频,本篇文章记录第三讲:深度强化学习在流体动力学与控制中的应用,记录下个人学习笔记,和大家一起分享交流😄
video:https://www.youtube.com/playlist?list=PLMrJAkhIeNNQe1JXNvaFvURxGY4gE9k74
1. 引言
今天和大家分享如何在流体动力学领域应用深度强化学习,在之前的几期课程中,我为大家介绍了强化学习以及结合深度神经网络的强化学习,也就是深度强化学习,我们将探讨强化学习在流体力学领域中的一些应用。
这里有一个我非常喜欢的视频,展示了一只鹰在不稳定、湍流的气流中飞行:
你几乎可以看到这只鹰在感受风,并巧妙地操控涡量,最终优雅地滑翔到一块岩石上。这是一个极其复杂的控制问题,这正是我们作为人类工程师希望能够在我们的系统中复制或模仿的能力。
生物系统在与复杂流体环境互动方面表现得极为出色,无论是鱼类、鸟类、蝙蝠,甚至是飞行的昆虫,长期以来,几千年来,它们如何做到这一点对人类来说一直是个谜,同时也激发了我们许多工程设计和思考的灵感,因此,这种受生物学启发的强化学习理念,现在开始为我们揭示如何与这些复杂系统互动并加以控制,这确实令人振奋。
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 Optimization,PPO)、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?list=PLMrJAkhIeNNQe1JXNvaFvURxGY4gE9k74