论文笔记 <交通灯><多智能体>MetaLight:基于价值的元强化学习用于交通信号控制

今天看的论文是这篇MetaLight:基于价值的元强化学习用于交通信号控制

里面提到的创新点就是MetaLight框架:他目标是让交通信号控制智能体(Agent)在新路口(即使结构或流量模式不同)上能​​快速学习​​(Few-shot Learning),避免传统DRL需要海量数据和漫长试错(可能引发拥堵)的问题。

MetaLight 的基石为FRAP++​

我们先来了解什么是FRAP:

FRAP的目标是设计一个​​统一、灵活​​的深度强化学习(DRL)模型(具体来说是 ​​DQN​​ 架构),能够有效地应用于​​不同结构​​的交通路口(比如车道数不同、信号相位设置不同),而​​无需为每个路口定制或重新训练一个专属模型​​。其核心思想是​​让相位相互竞争​​来决定哪个相位应该获得绿灯通行权。

为什么需要 FRAP?

这就要说到传统方法的痛点了:

1.传统方法状态表示不统一:​​ 因为不同路口有不同的车道布局(例如,有的有专用左转道,有的没有)和不同的相位设置(例如,4相位、6相位、8相位)。这导致输入状态的维度(如每个车道的车辆数)和输出动作空间(可选相位数量)都不同。传统基于固定结构神经网络(如MLP或CNN)的DRL模型无法直接处理这种变化。

2.而且模型无法共享:​​ 为每个路口训练一个独立的模型成本极高(数据、时间、计算资源),尤其是在需要部署到成百上千个路口时。

​3.缺乏对相位关系的建模:​​ 交通信号控制的关键是理解不同相位之间的​​冲突关系​​(哪些相位可以同时亮绿灯,哪些不能)和​​竞争关系​​(哪个相位下积压的车辆更多、更“需要”绿灯)。传统模型没有显式建模这种关系。

FRAP 的解决方案:基于相位竞争的统一架构​

FRAP 巧妙地解决了以上问题,其设计灵感来源于交通工程中“相位竞争”的理念。它的核心在于构建一个模型,让模型的​​结构​​可以根据路口的具体配置(车道、相位)​​动态调整​​,但其核心​​参数​​是​​共享​​的。也就是类似于c++中的类(我的理解)。

  1. ​输入:结构化的车道信息 (Lane-based Features)​

    • ​特征:​​ 对于每个​​车道​​,输入特征通常包括该车道当前的​​车辆数量​​(或队列长度)以及该车道所属的​​当前信号相位状态​​(是绿灯、黄灯还是红灯?)。
    • ​关键点:​​ 输入是按​​车道​​组织的,而不是按固定维度组织。模型知道有多少个车道,但每个车道使用相同的特征提取方式。
  2. ​共享嵌入层 (Shared Embedding Layer)​

    他为每个车道的特征(车辆数、相位状态)设计一个小的​​嵌入层 (Embedding Layer)​​。核心创新:​​ 这个嵌入层是​​共享​​的!​​所有车道​​(无论属于哪个方向或哪个相位)都使用​​同一个嵌入层​​来将原始特征转换为低维向量表示 e_l。​​意义为​​ 这使得模型能够处理任意数量的车道。新增加的车道,只是用同一个嵌入层再生成一个向量而已。解决了输入维度不统一的问题。
  3. ​相位需求表示 (Phase Demand Representation)​

    ​他的目标是​​ 计算每个​​相位​​的“需求”或“紧迫性”。一个相位通常包含多个​​不冲突​​的车道(例如,“南北直行”相位包含南北方向的直行车道)。对于每个相位 p,找出所有属于该相位的车道 L_p然后将属于相位 p 的所有车道的嵌入向量 e_l (l ∈ L_p) ​​聚合​​起来,形成该相位的总体表示向量 d_p。在原始 FRAP 中,这个聚合操作是 ​​求和 (Sum)​​: d_p = Σ_{l ∈ L_p} e_l。这代表了该相位下所有相关车道的总“压力”。求和意味着车道多的相位天然数值会更大。
  4. ​相位竞争建模 (Phase Competition Modeling)​

    目标为计算每个相位 p 的 Q 值 Q(p),即选择该相位能带来的预期累积奖励。他的​​核心机制:​​为使用 ​​1x1 卷积层 (1x1 Convolution)​​ 或等效的​​全连接层​​来建模​​任意两个相位​​ p 和 q 之间的​​竞争关系​​。​​操作为:​
    • ​计算相位 p 的 Q 值:​​ 对相位 p 的最终 Q 值 Q(p),是它相对于​​所有其他相位​​ q 的竞争力 c_{p,q} 的​​聚合​​(通常是求和): Q(p) = Σ_{q ≠ p} c_{p,q}
    • 将每个相位的需求向量 d_p 输入到一个共享的 ​​相位比较网络 (Phase Competition Network)​​。这个网络通常包含以下步骤:
      • ​复制与连接:​​ 对于每个相位对 (p, q),将 d_p 和 d_q ​​连接​​ (Concatenate) 起来,形成输入 [d_p; d_q]
      • ​共享映射:​​ 将 [d_p; d_q] 输入一个​​共享​​的多层感知机 (MLP) 或等效结构。这个网络输出一个​​标量值​​ c_{p,q},代表相位 p 相对于相位 q 的“竞争力”或“优势度”。
      • ​(可选) 对称处理:​​ 为了建模对称性(c_{p,q} 和 c_{q,p} 应包含互补信息),有时会同时计算 [d_p; d_q] 和 [d_q; d_p] 输入共享网络得到 c_{p,q} 和 c_{q,p},然后相加或取平均。
    • 这步是精髓!它显式地让每个相位与其他所有相位“PK”。c_{p,q} 网络学习判断“在当前状态下,选择相位 p 是否比选择相位 q 能获得更高的回报”。最终的 Q(p) 综合了它与其他所有相位的比较结果。这个设计​​完全独立于相位的数量和具体组合方式​​,只要有两个相位,就能计算 c_{p,q}。解决了输出动作空间(相位数量)不统一的问题,并显式建模了相位竞争。
  5. ​输出与决策 (Output and Decision)​

    • 模型的输出就是每个可选相位 p 的 Q 值 Q(p)
    • 智能体(信号控制器)遵循 ​​ε-greedy​​ 策略(训练时)或 ​​greedy​​ 策略(测试时)选择具有​​最高 Q 值​​的相位作为动作 a

​同一个训练好的 FRAP 模型​​可以直接部署到具有​​不同车道布局(如3车道路口 vs 5车道路口)​​ 和​​不同相位方案(如4相位路口 vs 8相位路口)​​ 的路口上!

MetaLight框架的改进:

相位需求聚合的偏差:​​ 使用 ​​Sum​​ 聚合意味着车道数量多的相位(即使每个车道车辆不多)其需求向量 d_p 的模长天然比车道数少的相位(即使每个车道很拥堵)更大。这可能引入偏差,影响模型对不同结构路口的公平判断。​​MetaLight 的 FRAP++ 将其改为 Mean Pooling (取平均)​​ 来消除这种偏差。

训练效率: 原始 FRAP 在​​每个完整的交通模拟周期 (Episode)​​ 结束后才更新模型参数。这限制了学习效率,不符合标准 DQN 按时间步更新的高效实践。​​MetaLight 的 FRAP++ 改为在每个时间步 (Step) 进行 Mini-batch 更新​​,大大加速了训练过程。

跨场景知识迁移:​​ FRAP 本身是一个优秀的单任务学习模型,但它没有解决如何将在一个或多个路口学到的知识​​快速迁移/适应​​到一个​​全新、未见过的路口​​的问题(尤其是在数据有限的情况下)。这正是 ​​MetaLight 在其基础上引入元学习 (Meta-Learning)​​ 所要解决的核心挑战。

除了FRAP++,MetaLight框架还有双级适应机制。

MetaLight 的核心引擎:双级适应机制 (Two-Level Adaptation)​

这是MetaLight最具创新性的部分,解决了“如何在价值型DRL(如DQN)中有效应用元学习”的关键挑战。

元学习(Meta-Learning)的直觉:​​ 学会学习(Learn to Learn)。MetaLight的目标是训练一个​​好的初始化参数​​ (θ₀)。这个初始化参数不是针对某个特定路口的,而是蕴含了从​​多个不同路口​​学习到的​​通用交通控制知识​​(比如识别拥堵模式、理解相位竞争关系)。当遇到一个新路口时,基于这个好的初始化,只需​​少量新数据​​和​​少量梯度更新​​,就能得到针对这个新路口的优化模型 (θ_t)。

为什么传统MAML在价值型DRL上效果差?​

  • MAML 原本设计用于策略梯度(Policy Gradient)类方法(如REINFORCE, PPO),这些方法通常​​整轮(Episode)更新一次策略​​,数据方差高。
  • 价值型DRL(如DQN)的核心优势在于​​按时间步(Step)更新​​,利用经验回放(Experience Replay)和Target Network稳定学习。
  • 将MAML直接套用在按Episode更新的FRAP上(即使改进为FRAP++后),其更新频率低且方差高,导致学到的元初始化参数效果不佳(在MetaLight论文实验中接近随机初始化)。

为什么传统MAML在价值型DRL上效果差?

MAML 原本设计用于策略梯度(Policy Gradient)类方法(如REINFORCE, PPO),这些方法通常​​整轮(Episode)更新一次策略​​,数据方差高。

价值型DRL(如DQN)的核心优势在于​​按时间步(Step)更新​​,利用经验回放(Experience Replay)和Target Network稳定学习。

将MAML直接套用在按Episode更新的FRAP上(即使改进为FRAP++后),其更新频率低且方差高,导致学到的元初始化参数效果不佳(在MetaLight论文实验中接近随机初始化)。

双级适应机制

它的输入为​ 一组来自不同路口的“源任务”(Source Tasks)。输出是​​ 一个通用的元初始化参数 θ₀

​过程:

元初始化:​​ 这是MetaLight最终要学习的核心知识库,是模型的起点参数。

个体级适应:目的是让模型快速适应​​当前处理的单个具体路口​

  • ​操作:​
    • 将当前路口的模型参数 θ_i ​​初始化为元初始化参数 θ₀​。
    • 在路口 I_i 的模拟运行中,​​在每个时间步​​,Agent 与环境交互,收集经验 (s, a, r, s') 存入其经验池 D_i
    • 同样​​在每个时间步​​,从 D_i 中采样一个小批量数据,计算​​该路口​​的DQN损失(如MSE: (r + γ max Q(s', a'; θ⁻) - Q(s, a; θ_i))²),并通过梯度下降 ​​只更新该路口的参数 θ_i​:
      θ_i ← θ_i - α * ∇θ ℒ(θ_i; D_i) (α 是学习率)

全局级适应:目的是定期​​整合​​所有正在进行个体级适应的路口 I_i 的最新知识,​​更新元初始化参数 θ₀​,使其蕴含更通用的知识。这是周期性进行的。

操作:​

  • 对于当前一批源任务中的​​每个路口 I_i​:
    • 从该路口的经验池 D_i 中​​采样一个新的小批量数据 D'_i​(与个体级更新用的数据不同)。
    • 使用该路口​​经过若干步个体级适应后更新的参数 θ_i​(注意:不是初始的 θ₀!),计算在这批新数据 D'_i 上的损失 ℒ(θ_iD'_i)。
  • ​汇总​​所有路口 I_i 的损失:∑_i ℒ(θ_i; D'_i)
  • ​通过梯度下降更新元初始化参数 θ₀​(注意梯度是关于 θ₀ 的!):
    θ₀ ← θ₀ - β * ∇θ₀ [∑_i ℒ(θ_i; D'_i)] (β 是元学习率)

这个更新推动 θ₀ 向一个方向调整——使得​​从 θ₀ 开始,在每个源任务上只进行少量个体级适应(梯度步),就能在该任务的 新数据 (D'_i) 上取得低损失​​。这正是元学习“学会学习”的精髓。它发生在​​全局​​,影响所有任务。

简单比喻:​

想象一个老师(MetaLight)在教一群学生(源路口Agent)开车(控制信号灯)。

  • ​FRAP++:​​ 给所有学生提供​​同一本通用驾驶手册​​(统一模型结构),手册编写得足够好(均值池化),适用于轿车、SUV、卡车(不同路口结构)。
  • ​个体级适应:​​ 每个学生拿到手册后,在​​自己特定的道路环境(源路口)​​ 上​​不断练习​​(按步DQN更新),快速提升个人驾驶技术 (θ_i)。
  • ​全局级适应:​​ 老师​​定期组织交流会​​(每 t_θ 次练习后)。学生分享:“我从手册的第X页知识出发,练习了Y次后,在Z路段开得不错”。老师​​汇总大家的经验​​,​​更新手册 (θ₀)​​,目标是让手册的起点知识 (θ₀) 变得更好——让未来的学生拿着这本新手册,能在他们自己的路上更快学会开车。
  • ​新学生(目标路口):​​ 一个新学生拿到老师最终更新的​​超级手册 (θ₀)​​,在自己的陌生道路上练习。因为手册起点好,他​​练几次 (θ_t 更新几次)​​ 就能开得很好了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/84266.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/84266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为OD-2024年E卷-寻找符合要求的最长子串[200分] -- python

问题描述: 给定一个字符串s,找出这样一个子串: 1)该子串中的任意一个字符最多出现2次; 2)该子串不包含指定某个字符; 请你找出满足该条件的最长子串的长度。 输入描述 第一行为要求不包含的指定字符,为单个字符,取值范围[0-9a-zA…

CppCon 2016 学习:What C++ Programmers Need to Know about Header <random>

随机数生成的历史背景 Middle-Square 方法(中位平方法): 已知最早的随机算法之一或由修道士 Brother Edvin 在 1245 年发明由 John von Neumann 在 1949 年重新发现缺点明显,但执行速度快 Monte Carlo 方法: 起初是…

Origin:误差棒点线图绘制

1.首先将你的数据复制到表格 2.选中B(y)列数据,依次点击图示选项 3.选中图中红框数据,点击绘制点线图即可 4.结果展示

Spring 源码学习 1:ApplicationContext

Spring 源码学习 1:ApplicationContext Bean 定义和 Bean 实例 AnnotationConfigApplicationContext 首先,创建一个最简单的 Spring Boot 应用。 在入口类中接收SpringApplication.run的返回值: SpringBootApplication public class Dem…

CppCon 2017 学习:Design Patterns for Low-Level Real-Time Rendering

这段内容讲的是离散显卡(Discrete GPU)中的内存管理模型,重点是CPU和GPU各自独立管理自己的物理内存,以及它们如何通过虚拟内存和DMA引擎实现高效通信。以下是详细的理解和梳理: 1. 基本概念 CPU 和 GPU 是两个独立的…

【单调队列】-----【原理+模版】

单调队列 一、什么是单调队列? 单调队列是一种在滑动窗口或区间查询中维护候选元素单调性的数据结构,通常用于解决“滑动窗口最大值/最小值”等问题。 核心思想是:利用双端队列(deque)维护当前窗口内或候选范围内元素…

CSS语法中的选择器与属性详解

CSS:层叠样式表,Cascading Style Sheets 层叠样式表 内容和样式分离解耦,便于修改样式。 特殊说明: 最后一条声明可以没有分号,但是为了以后修改方便,一般也加上分号为了使用样式更加容易阅读,可以将每条代…

模拟设计的软件工程项目

考核题目 论文论述题:结合你 参与开发、调研或模拟设计的软件工程项目 ,撰写一篇论文 完成以下任务,论文题目为《面向微服务架构的软件系统设计与建模分析》,总分: 100 分。 1. 考核内容: 一、系统论述…

个人理解redis中IO多路复用整个网络处理流

文章目录 1.redis网络处理流2.理解通知机制 1.redis网络处理流 10个客户端通过TCP与Redis建立socket连接,发送GET name指令到服务器端。服务器端的网卡接收数据,数据进入内核态的网络协议栈。Redis通过IO多路复用机制中的epoll向内核注册监听这些socket的…

【郑州轻工业大学|数据库】数据库课设-酒店管理系统

该数据课设是一个基于酒店管理系统的数据库设计 建库语句 create database hotel_room default charset utf8 collate utf8_general_ci;建表语句 use hotel_room;-- 房型表 create table room_type( id bigint primary key auto_increment comment 房型id, name varchar(50)…

TCP 三次握手与四次挥手详解

前言 在当今互联网时代,前端开发的工作范畴早已超越了简单的页面布局和交互设计。随着前端应用复杂度的不断提高,对网络性能的优化已成为前端工程师不可忽视的重要职责。而要真正理解并优化网络性能,就需要探究支撑整个互联网的基础协议——…

RTD2735TD/RTD2738 (HDMI,DP转EDP 高分辨率高刷新率显示器驱动芯片)

一、芯片概述 RTD2738是瑞昱半导体(Realtek)推出的一款高性能显示驱动芯片,专为高端显示器、便携屏、专业显示设备及多屏拼接系统设计。其核心优势在于支持4K分辨率下240Hz高刷新率及8K30Hz显示,通过集成DisplayPort 1.4a与HDMI …

C++实现手写strlen函数

要实现求字符串长度的函数&#xff0c;核心思路是通过指针或索引遍历字符串&#xff0c;直到遇到字符串结束标志 \0 。以下是两种常见的实现方式&#xff1a; 指针遍历版本 #include <iostream> using namespace std; // 指针方式实现strlen size_t myStrlen(const cha…

NVPL 函数库介绍和使用

文章目录 NVPL 函数库介绍和使用什么是 NVPLNVPL 的主要组件NVPL 的优势安装 NVPL基本使用示例示例1&#xff1a;使用 NVPL RAND 生成随机数示例2&#xff1a;使用 NVPL FFT 进行快速傅里叶变换 编译 NVPL 程序性能优化建议总结 NVPL 函数库介绍和使用 什么是 NVPL NVPL (NVI…

HTTP相关内容补充

目录 一、URI 和 URL 二、使用 Cookie 的状态管理 三、返回结果的 HTTP状态码 一、URI 和 URL URI &#xff1a;统一资源标识符 URL&#xff1a;统一资源定位符 URI 格式 登录信息&#xff08;认证&#xff09;指定用户名和密码作为从服务器端获取资源时必要的登录信息&a…

MySQL: Invalid use of group function

https://stackoverflow.com/questions/2330840/mysql-invalid-use-of-group-function 出错SQL: 错误原因&#xff1a; 1. 不能在 WHERE 子句中使用聚合&#xff08;或分组&#xff09;函数 2. HAVING 只能筛选分组后的聚合结果或分组字段 # Write your MySQL query statem…

C#财政票查验接口集成-医疗发票查验-非税收入票据查验接口

财政票据是企事业单位、医疗机构、金融机构等组织的重要报销凭证&#xff0c;其真实性、完整性和合规性日益受到重视。现如今&#xff0c;为有效防范虚假票据报销、入账、资金流失等问题的发生&#xff0c;财政票据查验接口&#xff0c;结合财政票据识别接口&#xff0c;旨在为…

浏览器基础及缓存

目录 浏览器概述 主流浏览器&#xff1a;IE、Chrome、Firefox、Safari Chrome Firefox IE Safari 浏览器内核 核心职责 主流浏览器内核 JavaScript引擎 主流的JavaScript引擎 浏览器兼容性 浏览器渲染 渲染引擎的基本流程 DOM和render树构建 html解析 DOM 渲染…

Ubuntu 安装Telnet服务

1. 安装Telnet 客户端 sudo apt-get install telnet 2. 安装Telnet 服务器 &#xff08;这样才能用A电脑的客户端连接B电脑的Telnet服务&#xff09; sudo apt-get install telnetd 3. 这时候Telnet服务器是无法自我启动的&#xff0c;需要网络守护进程服务程序来管理…

AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月19日第113弹

从今天开始&#xff0c;咱们还是暂时基于旧的模型进行预测&#xff0c;好了&#xff0c;废话不多说&#xff0c;按照老办法&#xff0c;重点8-9码定位&#xff0c;配合三胆下1或下2&#xff0c;杀1-2个和尾&#xff0c;再杀4-5个和值&#xff0c;可以做到100-300注左右。 (1)定…