深度学习联合OFDM信道估计与信号检测:端到端接收机解析

发布时间:2026/10/19 3:07:24
深度学习联合OFDM信道估计与信号检测:端到端接收机解析
这是我整理文献译文系列的第二十篇选的是一篇我相当偏爱的论文——在OFDM系统里用深度学习把信道估计和信号检测联合起来做。思路简单到你会觉得“怎么早没人这么干”但恰恰戳中了传统接收机最核心的痛点。去年我按论文复现过一遍训练数据、网络结构、损失函数、性能对比全都亲手走了一次踩了不少坑这篇就把来龙去脉和实操细节一起写清楚。在无线通信物理层算法这个圈子里教科书式的接收机流程基本是刻在每个人脑子里的发射端在时频栅格里插入导频接收端先提取导频位置的接收值做信道估计再用估计出的信道响应去算均衡系数最后做符号判决和软解调。这篇论文干了一件很反常规的事——把这条显式的流水线整个丢给一个卷积神经网络输入是接收端的时频资源栅格输出直接就是检测出的发送符号概率。导频还在但它不再显式参与“估计信道响应”这一步而是作为网络的上下文线索和数据区域一起被消化。这篇东西适合三类人做OFDM物理层算法的工程师准备把深度学习引入通信做课题的研究者以及纯粹好奇AI怎么改变传统信号处理的人。它虽然发表于几年前但今天回头看几乎所有后续“AI接收机”的讨论都能从这篇文章里找到原型。1. 这篇论文到底做了什么把接收机从流水线改造成端到端1.1 传统OFDM接收链路为什么天生带着“误差放大器”教科书里的OFDM接收机是一条严格串行的流水线。发射端在时频栅格里塞上一部分已知符号也就是导频接收端拿到信号后先从导频位置提取接收值用最小二乘或者MMSE这类准则去估计整个时频栅格上的信道响应。这个估计不可能完美因为导频只占所有资源元素的一小部分子载波中间的响应全靠插值去猜OFDM符号之间的信道时变全靠滤波去补。比较麻烦的是这条链是逐级传导的每一级留下的误差都会被下一级放大。信道估计在某个子载波上插值不准均衡器就会把该子载波上的信噪比算错软信息给得离谱最后译码器接收到一批被误导的对数似然比误码率一下就失控了。调过物理层接收算法的人大多有体会有时候你优化了半天信道估计算法端到端误码率却没怎么改善因为后面的环节早已把你加工出来的误差又“消化”或“放大”了一轮。这篇论文的出发点很简单既然每一级之间的接口都在损失信息、传递误差为什么不干脆做个端到端系统直接从原始接收信号预测发送符号让网络自己决定怎么同时利用导频和数据位置的信息这就是标题里“joint”的含义——不是分别优化信道估计和信号检测两个模块而是把两个任务当作同一个优化目标来做。这条路在传统信号处理里几乎不可想象因为它需要同时调节的环节太多但深度神经网络恰恰擅长这种端到端的联合优化。1.2 “联合”的真正含义不再显式估计信道而是直接求后验概率很多人听到“不做信道估计”会本能地怀疑不估计信道怎么检测其实通信接收的本质是求发送符号的后验概率。传统方法先估计信道再基于信道模型计算这个后验但后验概率本身并不强制要求你先呈现一个显式的信道估计值。神经网络完全可以以隐式方式把信道状态“内化”到权重里推理时根据输入特征直接输出符号概率。我自己的理解是卷积神经网络在时频栅格上做卷积本质是在处理信道在时间和频率维度上的相关性。信道在时频二维上的响应是有结构的多径时延造成频率选择性衰落多普勒扩展造成时间选择性这种结构天然就是二维纹理。CNN的卷积核在学这种纹理的局部模式然后综合成全局的推理依据。信道估计并没有消失只是从“显式的数值估计”变成了“隐式的特征提取”。导频和数据区域的接收值混在一起传统方法只用导频估计信道却把数据区域里隐含的信道信息白白丢掉了神经网络把数据区域当成一种隐式导频来用等于多榨取了一部分信息。1.3 这篇论文在历史上的特殊位置对物理层研究者来说这是一篇“打开新方向”的标志性文章。它第一次比较完整地给出了一套“数据驱动物理层接收机”的范式数据怎么构造、网络怎么设计、标签怎么定义、对比基线怎么选。后续大量工作都是在这套框架上做改进要么换更结构化的网络要么把传统算法展开进网络要么推广到大规模MIMO和新型波形。即便只是作为“把通信信号处理问题变成图像分类问题”的案例来读它也足够有启发性。2. 从时频栅格到“图像”网络设计里的三个关键决策2.1 为什么必须用CNN而不是普通全连接网络OFDM的一个时频资源块本质上就是一张二维表横轴是OFDM符号代表时间纵轴是子载波代表频率。每个交叉格子里放一个复数表示该资源元素经过信道后的接收信号。我习惯把这张表想成一张“图像”复数拆成实部I和虚部Q两个通道就像RGB图像里的两个颜色分量。这样CNN在图像领域积累的大量经验就能直接迁移过来。为什么不用全连接网络把所有值拍平当然可以但代价很高。假设一个资源块是64个子载波乘14个OFDM符号再算上I/Q双通道输入维度接近1800第一层若给512个神经元参数量就接近百万还没算后续层。更本质的问题是全连接网络没有利用时频结构的局部性。信道在相邻子载波和相邻OFDM符号上的响应高度相关这种相关关系是局部的。卷积核做的就是这件事一个3×3的卷积核只在局部时频窗口内做加权求和然后滑动遍历整个栅格既能感知局部信道纹理又通过参数共享大幅压缩参数量。CNN还有一个附加收益时频栅格本身是二维的卷积操作天然保留了这个空间结构不会把一个子载波的信息和另一个子载波的信息在输入层就搅在一起。2.2 三层卷积网络到底长什么样我记得第一次复现时直接按论文结构搭了一个很朴素的版本效果已经让人意外。输入是一个64×14×2的张量对应64个子载波、14个OFDM符号、每个位置的I/Q双通道这和一张宽64像素、高14像素、带2个通道的“小图像”是一个意思。第一层卷积用16个3×3卷积核输出64×14×16的特征图激活函数用ReLU第二层卷积用32个3×3卷积核得到64×14×32的特征图第三层卷积用64个3×3卷积核得到64×14×64的特征图。注意全网络没有任何池化层这是刻意为之——池化会降低时频分辨率而通信信号恰恰不能接受这种降采样你不想把相邻子载波的符号信息混在一起扔掉。三层卷积之后把特征图展平接一个全连接层输出节点数等于“数据资源元素数量×调制阶数”。比如QPSK每个数据位置有4种符号候选16QAM就有16种。输出层接softmax每个数据位置得到一个概率分布训练时对每个位置计算交叉熵损失。这个结构用今天的眼光看很朴素没有残差连接、没有注意力机制但它证明了一个关键点只要输入组织方式和数据构造合理朴素的CNN也能在物理层任务上达到惊人效果。参数量的绝对大头在最后的全连接层卷积层加起来不过两万上下正是这个全连接层把整张时频图的抽象特征映射到每一个数据符号的判决上。对现代GPU来说训练这种规模的小网络毫无压力。2.3 标签构造与损失函数把符号检测变成分类问题这个网络不是拿“信道响应”作为学习目标而是直接拿发送符号作为标签。这一点非常关键我最初复现时想当然地把网络设计成“先输出信道估计、再做传统检测”性能一直不理想。后来才意识到论文的聪明之处在于彻底把信道估计和符号检测融合在一起网络输出的就是每个数据位置上各调制符号的后验概率至于中间要不要隐式建模信道、怎么建模完全交给网络自己决定。数据准备上有个细节容易被忽略导频位置的符号不能参与损失计算。导频是收发两端事先都知道的网络没必要去“检测”它如果把这些位置的输出也纳入交叉熵网络就会把一部分容量浪费在记忆已知信息上反而干扰数据位置的表征学习。正确做法是在计算损失前把导频位置的输出用掩码遮掉。损失函数本身非常直接就是对每个数据位置独立计算softmax交叉熵再对所有数据位置取平均。这对应的是通信系统里最大化符号正确概率的目标而且只要网络输出的每符号后验概率足够可靠后续接信道译码完全可行。3. 动手复现从信道建模到训练曲线3.1 系统参数与导频排布复现的第一步是把系统参数定死。我采用一组LTE-like配置子载波数64循环前缀16个采样点子载波间隔15kHz一个子帧包含14个OFDM符号。这样时频资源块就是64×14。调制方式先用QPSK验证通路再扩展到16QAM看性能变化。导频排布我用的梳状导频在一段资源块内等间隔放置导频子载波导频开销约1/8。具体做法是在第一个OFDM符号的若干子载波上放置已知导频值这些位置的已知信息作为网络感知信道状态的“锚点”。需要注意导频图案一旦确定训练和测试必须保持完全一致否则网络学到的输入特征规律就失效了。3.2 训练数据生成信道随机性要多“随机”才够这是整个复现里最花功夫、也最影响结果的一步。论文里的思路是把信道建模成多径瑞利衰落信道路径数、每条路径的相对时延和功率都要随机变化同时加入多普勒扩展让信道在OFDM符号之间缓慢变化。如果只在一条固定信道响应上循环加噪声网络会直接把这条信道背下来换一个新信道就彻底失效。我生成训练数据的做法是每一帧样本都重新抽一组信道参数。多径数量在4到16之间随机各径时延随机各径功率按指数衰减后再加随机扰动多普勒频移在一个合理的范围内随机。信噪比也不是固定值而是从0dB到20dB之间均匀采样。这样网络能见到足够多样的信道纹理和噪声水平学到的是通用的输入-输出映射而不是记住某条特定信道。数据量方面生成十万帧训练集是比较稳的起点。每帧是一个64×14×2的张量加上标签和掩码体积不小。如果内存紧张可以像我一样采用按批实时生成训练循环每取一个batch就现场采样一组信道并生成对应的接收帧。这样既省内存又能保证理论上无限多样的训练分布。3.3 训练配置与评价指标训练我用Adam优化器学习率在0.001到0.0003之间比较稳batch size设256大约20到30个epoch收敛。单块中端GPU跑完一轮十万样本的epoch耗时几十秒整个训练不超过两小时。在物理层算法验证这个场景里这个成本完全可接受。评价指标不要只盯训练loss。通常我会固定一个信道统计模型重新生成几千帧干净的测试数据在不同信噪比点上统计误比特率画成BER-SNR曲线再和传统接收机对比。对比基线至少要有三个理想信道信息的MMSE接收机作为性能上限参考用LS估计的传统接收机用MMSE估计的传统接收机。这样才能看清深度学习方法的增益到底来自哪里。3.4 我实际看到的一组实验现象我自己复现时得到的大致结论是在信道统计特性与训练数据一致的前提下深度学习接收机的误码率曲线和理想MMSE非常接近低信噪比区域有时还会略好一点相比LS估计加均衡的传统链路高信噪比下能拉开2到3dB的增益。这个增益来源就是网络额外利用了数据区域接收值里隐含的信道信息相当于隐式地细化了对信道时频响应的认知。传统方法通常做不到这一点因为在它的框架里数据区域的值只有在信道被估计出来之后才有意义。4. 实验结果里最有意思的三个结论4.1 为什么深度学习方法能逼近理想MMSE传统MMSE接收机需要知道信道的二阶统计特性而且通常还假设信道模型非常规范。深度学习接收机不显式知道任何统计量但它在训练阶段见过大量符合某种信道分布的样本等于把这一类信道的统计特性“记住”在权重里了。推理阶段它根据当前的接收栅格做数据驱动的后验推断。打个比方传统信道估计像一个从没来过某条街的导航员只能靠路上的指示牌推算整条路怎么走深度学习接收机则像一个在这条街住了很多年的老司机指示牌还是那几个但它见过这条路在各种天气、各种车流状态下的样子看一眼路况就能把缺失信息补个八九不离十。正是这种先验信息让网络在导频稀疏时依然能做出可靠判断。不过这个类比也揭示了它的前提训练和测试数据的信道统计特性必须一致。老司机住的是这条路不能突然把他丢到一条从未见过的陌生街道。所以论文里那种把信道参数大范围随机化的训练方式不只是为了数据多样性更是为了让模型覆盖尽量宽的信道分布空间。方案是否显式估计信道对信道统计先验的依赖在线计算复杂度主要优势传统LS接收机是低低实现简单、行为可预期传统MMSE接收机是高中先验准确时性能好深度学习接收机否训练阶段依赖高推理阶段低端到端优化、逼近MMSE4.2 导频越少、信道变化越快深度学习相对优势越明显传统线性信道估计的短板本质上是先验信息不足。导频稀疏时LS插值误差急剧上升信道在时间上快速起伏时即便MMSE也容易因为统计先验不准而崩溃。深度学习网络在这种情况下还能借助数据资源位置之间的隐式相关性“脑补”出信道状态所以导频开销越低它的相对收益反而越高。论文里针对这类场景做了更激进的对比结论趋势非常明确。这对实际系统很有吸引力。导频开销在5G等系统里被严格控制因为导频占用的资源直接挤占了数据容量。如果深度学习接收机能在更少导频下维持同样的性能省下来的资源就是实打实的用户吞吐。当然代价是接收机需要有足够强的训练和泛化支撑这个权衡值得仔细核算。4.3 硬币的另一面训练与测试信道失配的麻烦我在复现时故意做了一个实验只用一种特定功率时延谱的信道做训练然后把模型放到另一种统计特性完全不同的信道上去测试。结果误码率曲线一下差了一大截甚至不如朴素的LS方案。这个结果本身不让人惊讶但它很有警示意义深度学习接收机本质上拟合的是“接收栅格到符号后验”的映射这条映射对信道分布非常敏感。这里给所有想直接复用论文模型的人提个醒不要盲目相信一个模型能在所有信道环境里都work。论文里的训练方式在工作时其实已经暗含了“信道类型覆盖范围足够广”这个前提。一旦部署环境中出现训练分布之外的因素比如硬件失真、强非高斯干扰、天线校准异常模型性能就可能不可预测。5. 从论文到工程落地排雷手册5.1 在线微调是实用的打开方式纯离线训练一劳永逸在工程上不太现实。我自己用下来比较顺手的方案是“预训练加在线微调”先用大范围多样信道训练一个通用模型部署到具体环境后再用现场采集的少量导频数据对模型做几步梯度更新。预训练模型已经有很强先验微调只需要很少的样本就能适配新信道我在实测中几百帧就足够。这与论文里的在线训练思路是一致的。信道分布会慢慢漂移比如季节变化、基站周边环境改变、终端移动模式改变都可以隔一段时间做一次小规模微调让模型始终跟着环境走。在线微调的计算要求也不高通信设备自带的处理器就能完成几步反向传播不需要额外的大算力平台。注意在线微调不是让你从零开始训练而是在预训练基础上做少量迭代。学习率要设得比预训练小一个量级否则容易把模型已有的通用知识冲掉。5.2 导频结构一变网络就得重新训练这个问题我第一次踩到的时候相当无奈。我把导频从间隔8个子载波改为间隔4个子载波直接用原模型测试性能不升反降。原因不难理解网络已经习惯了特定导频布置下的输入特征模式导频布局一变整个输入空间的规律都变了模型原有的先验随之失效。所以实际系统里如果要在不同导频密度、不同调制阶数之间切换最稳妥的做法是每个配置训练一个专用模型或者至少维护多个模型分支。这也意味着深度学习接收机不像传统算法那样“一份代码支持所有配置”那是工程化之前就要算清楚的一笔成本。5.3 硬件部署时的量化与延时问题科研阶段通常用浮点32训练到了基站或者终端的芯片上模型要做INT8甚至更低精度量化。卷积部分对量化相当耐受实测误差通常在很小范围内但最后的全连接层和softmax对数值精度更敏感需要多留几个比特。这是复现向产品转化时比较容易被忽视的环节。端到端推理时延主要来自逐层卷积计算。这个小模型的规模不大在现有硬件平台上做到几毫秒量级问题不大但这只是单次检测推理的时延如果还要覆盖在线微调或者同时处理多个载波、多用户数据流就需要额外设计流水线和资源调度。总体来说深度学习接收机的在线计算复杂度不是最大的阻碍最大的阻碍始终是泛化和可配置性。5.4 复现中常见的问题速查我复现时踩过一些不太体面的坑整理成速查表可以帮你少走弯路。现象可能原因对策训练loss下降但测试误码率很高训练信道分布太窄模型记住了信道加大信道随机范围多SNR混合采样性能比LS还差输入I/Q通道顺序搞反或标签错位检查数据预处理确认x和y严格对应导频位置占用了大量模型容量loss里没mask导频输出计算loss前遮掉导频位置多次实验结果抖动大测试阶段没有固定随机种子或没关训练随机性推理时固定种子保证对比可复现另外还有两个容易犯的低级错误复数转实数时把I/Q交错拼成一维向量破坏了时频结构以及生成数据时做了符号交织但标签没跟着交织导致网络学到的东西完全不对。这些问题排查起来通常都不难但它们都会以“莫名性能上不去”的形式出现浪费不少时间。6. 从这篇论文出发后续还能怎么走6.1 从黑箱接收机到模型驱动的展开网络这篇论文是纯数据驱动路线的代表但它也启发了一个重要方向把传统算法和深度学习结合形成“模型驱动”或“展开网络”的思路。比如把某个迭代检测算法里的每一步展开成网络的一层每层保留可学习参数这样网络结构就内嵌了通信先验训练数据和泛化难度都会显著下降。这个方向的发展速度很快从信道估计里的去噪网络到MIMO检测里的展开网络都是同一思路的延续先有一个不完美的传统方法然后让一个结构化神经网络在关键位置把它的误差补齐。相比端到端黑箱模型驱动网络更易调试、更容易满足工程团队对可控性的要求也更容易融入现有系统的验证流程。6.2 深度学习接收机在大规模系统中的潜力端到端深度学习接收机在小规模OFDM系统里已被验证可行但系统扩展到大天线阵列、多用户、毫米波波束成形或者新的波形如OTFS时输入维度急剧膨胀训练难度和泛化难度都会成倍增加。目前业界更务实的路线是把深度学习用在传统算法最薄弱的某些环节例如信道状态信息预测、干扰消除、非线性失真补偿而不是把整个接收机替换掉。不过话说回来通信系统的复杂度在持续变高很多端到端链路中的联合优化问题在数学上几乎无法显式求解这时候“让神经网络学一个次优解”的思路会越来越有吸引力。这篇论文算是在OFDM这个最经典的场景上把这条路完整走了一遍后来的很多工作都是在它的肩膀上往前迈步的。这篇论文我带过不少朋友一起读过也自己反复复现过几遍。它给我最大的启发还不是网络结构本身而是那种“重新审视理所当然模块划分”的思维方式。信道估计和信号检测分开做在传统体系里没人质疑但端到端深度网络让“以终为始”成为可能——直接从目标后验概率出发让中间环节交给数据去决定。如果你也准备做数据驱动的物理层方向我建议先把这套流程完整跑通一遍再考虑叠加自己的创新点。先把数据生成和对比基线做扎实你会发现后面很多东西都是水到渠成的事。