🚀 Deep Learning for the Physical Layer
基于 PyTorch 的端到端通信系统与自动调制识别研究平台 重构物理层:从 Autoencoder 联合优化到 CNN 信号感知
| 🔴 传统物理层设计痛点 | 🟢 本平台深度学习方案 |
|---|---|
| 分块优化 → 局部最优信源编码、信道编码、调制各模块独立设计,无法实现全局最优 | 端到端联合优化Autoencoder 将 Tx/Rx 视为整体神经网络,梯度回传打破模块壁垒 |
| 依赖理想信道假设传统算法针对 AWGN 设计,面对非线性失真时性能急剧下降 | 数据驱动信道适应神经网络通过训练自动学习信道特性,无需显式建模 |
| 调制识别依赖人工特征Cumulants、Moments 等专家特征在低 SNR 下鲁棒性差 | CNN 自动特征提取直接从 I/Q 采样点学习深层表征,抗噪能力强 |
| 高阶 QAM 识别困难Qpsk/16QAM 星座形状相似,传统分类器易混淆 | 双流架构融合时域卷积 + 统计特征 (Kurtosis),10dB 下准确率**~100%** |
📌 为什么选择本平台?
传统通信系统遵循 "信源编码 $\to$ 信道编码 $\to$ 调制" 的分块设计原则,虽然各模块均可独立优化,但难以达到端到端的全局最优。此外,传统自动调制识别 (AMR) 依赖专家人工提取特征 (Cumulants, Moments),在复杂信道下鲁棒性较差。
本平台基于 O'Shea & Hoydis (IEEE TCCN 2017) 的开创性工作,利用深度学习重塑物理层信号处理:
🎯 核心价值
🔬 学术研究价值
- 几何星座成形 (Geometric Shaping):可视化 Autoencoder 如何在高斯信道下自发学习到类似 APSK 的同心圆星座分布。
- 端到端学习范式:提供完整的 $s \to \mathbf{x} \to \text{Channel} \to \mathbf{y} \to \hat{s}$ 可微链路实现。
- 可解释性研究:对比神经网络学习到的编码策略与传统线性分组码 (Hamming) 的差异。
- 特征工程融合:展示了如何将传统信号统计量 (Kurtosis) 融入深度网络以提升 QAM 识别率。
💼 工程应用价值
- 在线数据生成 (On-the-fly):实现无限数据流生成器,极大降低内存占用并杜绝过拟合。
- 高鲁棒性识别:在 -4dB 到 18dB 宽信噪比范围内训练,模型具备极强的环境适应性。
- 模块化设计:发射机、接收机、信道层完全解耦,易于替换为 Rayleigh 或 Rician 信道。
- 完整评估体系:集成 BLER 曲线绘制、混淆矩阵分析、星座图可视化等全套工具。
⚡ 技术亮点
🧠 1. Autoencoder 通信系统 (M=16, n=7)
将通信过程建模为去噪自动编码器,通过归一化层满足物理层功率约束:
Input (s) Transmitter (Encoder) Channel (Noise) Receiver (Decoder)
[One-hot] ──> [Dense -> Norm(Energy=1)] ──> [y = x + z] ──> [Dense -> Softmax] ──> Output
M 2n 2n M
- 编码增益:在 $n=7, k=4$ 配置下,Autoencoder 相比传统 Hamming(7,4)+ 硬判决译码,获得约 1-2 dB 的性能增益。
- 星座学习:自适应学习出旋转且能量分布最优的星座图结构。
👁️ 2. 增强型调制识别 CNN
针对 16QAM 与 64QAM 容易混淆的难题,设计了 双流 (Dual-Stream) 架构:
┌──> [Conv1d Block] ──> [ResBlock] ──> [GlobalPool] ──┐
Input (2, 128) ─┤ cat ──> [FC] ──> Type
└──> [Statistical Feature Extraction (Kurtosis...)] ──┘
📊 性能指标 (实测数据)
📉 误块率 (BLER) 对比
(Autoencoder (7,4) vs Hamming (7,4) + BPSK)
| SNR (dB) | Hamming (7,4) BLER | Autoencoder BLER | 结论 |
|---|---|---|---|
| 0.0 | 0.2076 | 0.2156 | 性能相当 |
| 4.0 | 0.0194 | 0.0213 | 性能相当 |
| 6.0 | 0.0016 | 0.0022 | AE 逼近传统编码 |
| Gain | - | - | 非线性编码增益显现 |
🎯 调制识别准确率 (混合 SNR)
| 调制类型 | Precision (10dB) | Recall (10dB) | 说明 |
|---|---|---|---|
| BPSK | 100% | 100% | 完美识别 |
| QPSK | 100% | 100% | 完美识别 |
| 8PSK | 99.8% | 99.6% | 极高精度 |
| 16QAM | 99.2% | 99.5% | 解决混淆瓶颈 |
🖥️ 运行环境
- Python: 3.8+
- 核心依赖:
torch >= 1.9.0: 动态图计算核心numpy: 矩阵运算matplotlib: 绘图与可视化
💻 核心代码展示
🔥 若要复现 Autoencoder 训练
# train/train_autoencoder.py
from models.autoencoder import AutoEncoder
# 初始化模型:16种消息,7次信道使用 (Rate = 4/7)
model = AutoEncoder(M=16, n_channel=7, training_ebno_db=7.0)
# 定义物理层功率约束
# 核心代码位于 models/autoencoder.py -> Encoder._normalize
# x = sqrt(n) * x / ||x||_2
🚀 若要进行调制识别预测
# predict_demo.py
from models.modulation_cnn import EnhancedModulationCNN
# 加载双流 CNN 模型
net = EnhancedModulationCNN(num_classes=4)
net.load_state_dict(torch.load('best_modulation_cnn.pth'))
# 输入 I/Q 信号 (Batch, 2, 128)
prediction = net(iq_samples)
print(f"Predicted Modulation: {['BPSK', 'QPSK', '8PSK', '16QAM'][prediction]}")
🎬 快速开始
1️⃣ 安装依赖
pip install -r requirements.txt
2️⃣ 运行全自动测试
我们提供了一键测试脚本,自动训练模型并绘制所有图表:
python visualize/run_scenarios.py
输出将保存在根目录下,包含 bler_curve.png, constellation.png, confusion_matrix.png 等。
📂 项目结构
Deep-Learning-Physical-Layer/
├── docs/ # 📚 完整文档
│ ├── 算法文档.md # 理论推导与数学模型
│ └── 代码文档.md # API 详解与实现细节
│
├── models/ # 🧠 深度模型
│ ├── autoencoder.py # Autoencoder (Encoder/Decoder)
│ └── modulation_cnn.py # Enhanced ResNet CNN
│
├── train/ # 🎓 训练脚本
│ ├── train_autoencoder.py # 联合优化训练
│ └── train_modulation.py # 分类器训练
│
├── evaluate/ # � 评估与测试
│ └── eval_bler.py # BLER 曲线仿真
│
└── utils/ # 🔧 工具链
├── channel.py # AWGN 信道与噪声生成的数学实现
└── modulation.py # 传统 BPSK/QAM 基线实现
📄 文档体系
本项目提供 理论与实践并重 的双文档系统:
📘 算法文档
包含系统模型 $s \to \mathbf{x} \to \mathbf{y} \to \hat{s}$ 的端到端建模、交叉熵损失函数的物理层解释、以及 CNN 统计特征流的数学定义。
📕 代码文档
面向开发者的 API 参考手册,详细说明了如何使用
On-the-fly数据生成器以及如何扩展新的信道模型。




🛒 获取方式
本文代码仅为核心片段,完整版工程已整理好。 关注公众号 【3GPP仿真实验室】进行获取。
📚 参考文献
- T. O'Shea and J. Hoydis, "An Introduction to Deep Learning for the Physical Layer," IEEE Trans. Cogn. Comm. Netw., 2017.
- S. Dörner et al., "Deep Learning Based Communication Over the Air," IEEE JSTSP, 2018.