第【49期】--一种高效的深度学习的MIMO接收端检测标签编码方案--matlab完整代码+参考文章
摘要
MIMO检测的核心矛盾是最优性能(ML检测)与指数级复杂度之间的不可调和性。深度学习通过离线训练、在线推理的模式,将复杂度从在线搜索转移到离线学习,是突破该瓶颈的有效路径。然而,神经网络的检测精度高度依赖于标签的信息表示方式——不同的编码策略决定了网络输出层的任务形式(分类 or 多标签回归),进而影响学习难度和泛化能力。本文分析了三种标签策略的设计动机和内在折中。实验验证了该折中关系的存在,并为资源自适应系统提供了明确的设计准则 。
一、背景和意义
1.1 研究背景
在传统MIMO接收机中,最优ML检测器通过穷举所有可能符号组合来最小化错误概率,其计算量随发射天线数和调制阶数呈爆炸式增长。为此,研究者提出了多种次优算法(如ZF、MMSE、球形译码、K-best等),但这些算法要么牺牲性能,要么在最坏情况下仍难以承受高维搜索。
深度学习的介入带来了范式的根本转变:将检测从“在线优化问题”转化为“离线学习问题”。神经网络通过海量标注数据(接收信号→发射符号组合)训练,将信道和噪声的统计特性隐式地编码在权重中。在线阶段仅需若干矩阵乘法(前向传播),复杂度固定且远低于ML搜索。这种“用训练时间换在线时间”的策略,使得深度学习成为大规模MIMO极具潜力的检测方案。
1.2 意义
然而,神经网络的性能并非凭空而来,其上限取决于训练数据的信息质量——尤其是标签y的表示方式。标签编码不仅是将符号组合转换为数字向量的技术手段,更从根本上决定了网络要“学什么”以及“怎么学”。不同的编码会改变输出层的激活函数选择(Softmax vs. Sigmoid)、损失函数的形态以及梯度传播的路径,最终影响收敛速度和检测精度。因此,研究标签编码策略是深度学习检测设计中不可忽视的一环。
本文深入解析三种典型标签策略的设计逻辑与性能折中:
- 每天线独热编码(OHA)和直接符号编码(DSE),与传统的独热编码(OH)方案进行对比;
- 展示了所提策略在BER性能与检测复杂度之间的灵活折中,可根据硬件资源限制进行选择;
二、MIMO系统模型
2.1 MIMO模式

2.2 最优ML检测

ML检测在BER性能上是最优的,但其指数级复杂度使其在实际系统中难以实现。
2.3 神经网络输入
对于接收信号
2.4 神经网络检测的数学形式

三、三种标签编码策略[1]
标签编码策略的核心在于如何将 M N t M^{N_t} MNt种发射组合映射到输出向量。本文对于标签编码基本思想是:在训练数据生成阶段,不仅构造输入特征 X \mathbf{X} X(接收信号的实部和虚部),还设计不同的方式将发射符号组合映射为标签向量 y \mathbf{y} y,从而为神经网络提供更有效的学习信号。
3.1 独热编码(One-Hot Encoding, OH)最高信息密度,但维数灾难

OH策略将每种发射符号组合编码为一个独热向量,向量长度为 M N t M^{N_t} MNt,仅在与该组合对应的位置为1,其余为0。例如,对于 N t = 2 N_t=2 Nt=2、4-QAM系统,共有 4 2 = 16 4^2=16 42=16种组合,标签向量长度为16。
可以看到有如下特点:
- 输出层激活函数:Softmax(适用于多分类问题)
- 复杂度: O ( M N t ) \mathcal{O}(M^{N_t}) O(MNt)(指数级)
- 特点:从信息论角度看,OH编码的信息密度(每个输出神经元携带的平均信息量)最高,因为没有冗余位;但高密度也意味着分类边界复杂,需要大量数据才能学习到有效的决策区域
3.2 每天线独热编码(One-Hot per Antenna, OHA)

OHA策略为每个天线独立生成一个长度为 M M M的独热向量,然后拼接成总长度为 M × N t M \times N_t M×Nt的标签向量。例如, N t = 2 N_t=2 Nt=2、4-QAM时,每个天线用4比特表示,总标签长度为8。
-
输出层激活函数:Sigmoid(每个天线独立分类)
-
复杂度: O ( M ⋅ N t ) \mathcal{O}(M \cdot N_t) O(M⋅Nt)(线性级)
-
特点:将联合检测分解为 N t N_t Nt个独立的 M M M类分类子任务,这利用了天线间的统计独立性(在ZF均衡后,各天线的噪声近似独立,尽管实际仍有相关性,但工程上可近似)。
-
但分解也带来了信息损失:由于各个天线的分类是独立进行的,网络无法显式地建模天线间符号的联合分布(例如某些组合可能同时受到信道相关性影响)。在BER性能和复杂度之间取得良好折中。
3.3 直接符号编码(Direct Symbol Encoding, DSE)进一步压缩为比特级二分类

表1:4-QAM符号的比特标签映射
| 符号 | 复数值 | 比特标签 |
|---|---|---|
| s 1 s_1 s1 | − 1 + j -1+j −1+j | 10 |
| s 2 s_2 s2 | − 1 − j -1-j −1−j | 11 |
| s 3 s_3 s3 | + 1 + j +1+j +1+j | 00 |
| s 4 s_4 s4 | + 1 − j +1-j +1−j | 01 |
- 特点:DSE将检测任务进一步转化为比特级的多标签二分类问题。每个比特只依赖其对应天线的符号,且比特之间独立建模。复杂度最低,适合资源受限系统
- 输出层激活函数:Sigmoid(适用于多标签二分类)
- 复杂度: O ( log 2 ( M ) ⋅ N t ) \mathcal{O}(\log_2(M) \cdot N_t) O(log2(M)⋅Nt)(对数级)
- 然而,比特级独立判决忽略了比特之间的相关性和错误传播。例如,某个天线的两个比特如果都被错判,可能导致符号误判到距离很远的区域,造成突发错误。
3.4 三种标签编码的综合对比
表2:三种标签编码策略的全面对比(以 N t = 2 , M = 4 N_t=2, M=4 Nt=2,M=4 为例)
| 对比维度 | 独热编码(OH) | 每天线独热(OHA) | 直接符号编码(DSE) |
|---|---|---|---|
| 输出维数 N c N_c Nc | M N t = 16 M^{N_t} = 16 MNt=16 | M ⋅ N t = 8 M \cdot N_t = 8 M⋅Nt=8 | log 2 M ⋅ N t = 4 \log_2 M \cdot N_t = 4 log2M⋅Nt=4 |
| 任务类型 | 单分类( M N t M^{N_t} MNt 类) | 多任务分类( N t N_t Nt 个独立的 M M M 类子任务) | 多标签二分类( log 2 M ⋅ N t \log_2 M \cdot N_t log2M⋅Nt 个独立比特) |
| 输出层激活函数 | Softmax | Sigmoid(或分组 Softmax) | Sigmoid |
| 判决方式 | 取最大概率类别 | 逐天线取最大概率符号 | 每个比特阈值判决(0.5)后映射回符号 |
| 信息保留 | 完全保留联合分布信息 | 保留各天线边缘分布,忽略天线间相关性 | 保留比特级信息,忽略比特间相关性 |
| 复杂度(前向) | O ( N r ⋅ d h + d h ⋅ M N t ) \mathcal{O}(N_r \cdot d_h + d_h \cdot M^{N_t}) O(Nr⋅dh+dh⋅MNt) | O ( N r ⋅ d h + d h ⋅ M N t ) \mathcal{O}(N_r \cdot d_h + d_h \cdot M N_t) O(Nr⋅dh+dh⋅MNt) | O ( N r ⋅ d h + d h ⋅ log 2 M ⋅ N t ) \mathcal{O}(N_r \cdot d_h + d_h \cdot \log_2 M \cdot N_t) O(Nr⋅dh+dh⋅log2M⋅Nt) |
| 参数量(输出层) | d h × M N t d_h \times M^{N_t} dh×MNt(指数级) | d h × ( M N t ) d_h \times (M N_t) dh×(MNt)(线性级) | d h × ( log 2 M ⋅ N t ) d_h \times (\log_2 M \cdot N_t) dh×(log2M⋅Nt)(对数级) |
| 训练难度 | 最难(类别多,需大量数据) | 中等(子任务独立,收敛较快) | 较易(二分类任务简单,但存在饱和区) |
| BER 性能(相对 ML) | 最优(gap < 0.5 dB) | 良好(gap ~ 0.5~1 dB) | 可接受(gap ~ 2 dB) |
| F1‑score(2×2) | 0.97 | 0.93 | 0.96 |
| 推荐场景 | 宏基站、边缘服务器(算力充足) | 小基站、CPE(平衡型) | IoT 传感器、可穿戴设备(资源极限) |
显然,从OH到DSE,输出维数呈指数→线性→对数下降,而性能也随之递减。这正是本文的研究目的:看能否用微小的性能损失换取复杂度降低。
四、神经网络架构与训练
4.1 超参数
| 超参数 | 2×2 配置 | 4×4 配置 |
|---|---|---|
| 输入层神经元数 | 2 N r = 4 2N_r = 4 2Nr=4(4个特征) | 2 N r = 8 2N_r = 8 2Nr=8(8个特征) |
| 隐藏层数量 | 1 | 2 |
| 每层神经元数 | 100 | 1000(每层) |
| 输出层神经元数 | 取决于标签策略: • OH: M N t = 16 M^{N_t}=16 MNt=16 • OHA: M ⋅ N t = 8 M\cdot N_t=8 M⋅Nt=8 • DSE: log 2 M ⋅ N t = 4 \log_2 M \cdot N_t = 4 log2M⋅Nt=4 |
取决于标签策略: • OH: M N t = 256 M^{N_t}=256 MNt=256 • OHA: M ⋅ N t = 16 M\cdot N_t=16 M⋅Nt=16 • DSE: log 2 M ⋅ N t = 8 \log_2 M \cdot N_t = 8 log2M⋅Nt=8 |
| 隐藏层激活函数 | ReLU | ReLU |
| 输出层激活函数 | • OH: Softmax • OHA: Sigmoid • DSE: Sigmoid |
同左 |
| 训练轮数(Epochs) | 2000 | 50000 |
| 学习率( α \alpha α) | 0.01 | 0.01 |
| 权重初始化 | Xavier(均匀分布,范围 [ − 6 / ( n i n + n o u t ) , 6 / ( n i n + n o u t ) ] [-\sqrt{6/(n_{in}+n_{out})}, \sqrt{6/(n_{in}+n_{out})}] [−6/(nin+nout),6/(nin+nout)]) | 同左 |
| 损失函数 | 归一化均方误差(NRMSE) | 同左 |
| 优化算法 | 随机梯度下降(SGD) | 同左 |
| 训练集大小 | 0.8 × 10 4 = 8000 0.8 \times 10^4 = 8000 0.8×104=8000 样本 | 0.8 × 10 5 = 80000 0.8 \times 10^5 = 80000 0.8×105=80000 样本 |
| 测试集大小 | 0.2 × 10 4 = 2000 0.2 \times 10^4 = 2000 0.2×104=2000 样本 | 0.2 × 10 5 = 20000 0.2 \times 10^5 = 20000 0.2×105=20000 样本 |
| 训练信噪比(SNR) | 3 dB | 3 dB |
| 数据预处理 | 全局均值归零,方差归一化 | 同左 |
| 批量处理 | 全批量(Full-batch,即每次迭代使用全部训练集) | 同左 |
4.2 训练过程
数据生成:代码首先生成所有 M N t M^{N_t} MNt种发射符号组合,然后为每个训练样本随机选择一种组合,通过瑞利信道并添加AWGN后,将接收信号经迫零均衡后的实部和虚部作为输入特征 X \mathbf{X} X。
标签生成:三种策略的标签生成方式不同——
- OH:将组合索引编码为独热向量
- DSE:将每个符号的比特标签拼接
- OHA:为每个天线独立生成独热向量
前向传播:实现了两层全连接网络( 2 × 2 2 \times 2 2×2配置),隐藏层使用ReLU激活,输出层根据策略选择Softmax或Sigmoid。
反向传播:采用SGD更新权重。
五、实验结果与分析
5.1 损失函数收敛性

可以看到:
- 训练集与测试集的损失曲线之间无明显差距,表明模型未出现过拟合。
5.2 BER性能


可以看到
- OH方案最接近最优ML检测器;
- OHA方案与ML检测器约有0.5 dB的差距(BER = 10 − 4 = 10^{-4} =10−4时);
- DSE方案与ML检测器约有2 dB的差距。
5.3 分类性能
三种策略的F1-score、精确率和召回率如下:
| MIMO配置 | 标签策略 | 精确率 | 召回率 | F1-score |
|---|---|---|---|---|
| 2 × 2 2 \times 2 2×2 | OH | 0.97 | 0.98 | 0.97 |
| 2 × 2 2 \times 2 2×2 | OHA | 0.93 | 0.93 | 0.93 |
| 2 × 2 2 \times 2 2×2 | DSE | 0.96 | 0.98 | 0.96 |
| 4 × 4 4 \times 4 4×4 | OH | 0.96 | 0.94 | 0.95 |
| 4 × 4 4 \times 4 4×4 | OHA | 0.89 | 0.89 | 0.91 |
| 4 × 4 4 \times 4 4×4 | DSE | 0.91 | 0.92 | 0.93 |
所有方案的F1-score均达到0.9以上,表明深度学习检测器具有良好的分类性能。
5.4 复杂度分析
ML检测的复杂度为 O ( N t ⋅ N r ⋅ M N t ) \mathcal{O}(N_t \cdot N_r \cdot M^{N_t}) O(Nt⋅Nr⋅MNt)。DL检测器的复杂度主要来自前向传播的矩阵乘法:
| 标签策略 | 复杂度( 2 × 2 2 \times 2 2×2) | 复杂度( 4 × 4 4 \times 4 4×4) |
|---|---|---|
| OH | O ( 2 ( N r + d ℓ + 1 ) + M N t ) \mathcal{O}(2(N_r + d_{\ell+1}) + M^{N_t}) O(2(Nr+dℓ+1)+MNt) | O ( d ℓ + 1 ( 2 N r + M N t ) ) \mathcal{O}(d_{\ell+1}(2N_r + M^{N_t})) O(dℓ+1(2Nr+MNt)) |
| OHA | O ( 2 ( N r + d ℓ + 1 ) + M ⋅ N t ) \mathcal{O}(2(N_r + d_{\ell+1}) + M \cdot N_t) O(2(Nr+dℓ+1)+M⋅Nt) | O ( d ℓ + 1 ( 2 N r + M ⋅ N t ) ) \mathcal{O}(d_{\ell+1}(2N_r + M \cdot N_t)) O(dℓ+1(2Nr+M⋅Nt)) |
| DSE | O ( 2 ( N r + d ℓ + 1 ) + log 2 ( M ) ⋅ N t ) \mathcal{O}(2(N_r + d_{\ell+1}) + \log_2(M) \cdot N_t) O(2(Nr+dℓ+1)+log2(M)⋅Nt) | O ( d ℓ + 1 ( 2 N r + log 2 ( M ) ⋅ N t ) ) \mathcal{O}(d_{\ell+1}(2N_r + \log_2(M) \cdot N_t)) O(dℓ+1(2Nr+log2(M)⋅Nt)) |
OHA将复杂度从指数级 M N t M^{N_t} MNt降为线性级 M ⋅ N t M \cdot N_t M⋅Nt,DSE进一步降为对数级 log 2 ( M ) ⋅ N t \log_2(M) \cdot N_t log2(M)⋅Nt。
部分代码:
clear
close all
clc
% 生成训练数据集所用的QAM符号
N = 1e4; % 训练符号数量
M = 4; % 调制阶数
qam_idx = 0:M-1; % QAM调制索引
Nt = 2; % 发射天线数
Nr = 2; % 接收天线数
% 神经网络初始参数
n_neuronas_oculta = 100; % 隐藏层神经元数
input_size = 2*Nt; % 输入特征数(实部+虚部)
output_size = log2(M)*Nt; % 输出位数(每个天线log2(M)比特)
n_epocas = 2000; % 训练轮数
% 随机选择符号组合的索引(共M^Nt种组合)
rand_sym_idx = randi(M^Nt,1,N);
% 初始化标签和输入数据
y = zeros(N,output_size); % 标签:每个天线对应的比特
X = zeros(N,input_size); % 输入:均衡后的接收信号实虚部
qam_sym = qammod(qam_idx,M); % QAM符号表
alpha = 0.01; % 学习率
% 计算所有可能的发射符号组合(笛卡尔积)
[Xx, Yy] = meshgrid(qam_sym,qam_sym);
prod_cart = [Xx(:) Yy(:)];
% 提取每个符号的实部和虚部符号位(用于直接编码)
real_sign = real(prod_cart)<0;
imag_sign = imag(prod_cart)<0;
idx_sign = [real_sign(:,1) imag_sign(:,1) real_sign(:,2) imag_sign(:,2)];
SNR_dB = 3; % 训练数据信噪比(dB)
SNR_l = 10.^(SNR_dB./10);
No = 1;
% 生成训练数据
for i=1:N
sel_symbol = prod_cart(rand_sym_idx(i),:); % 选择一组符号
y(i,:) = idx_sign(rand_sym_idx(i),:); % 标签为该组合的符号位
H = (1/sqrt(2))*(randn(Nr,Nt) + 1i*randn(Nr,Nt)); % 瑞利信道
n = (No/sqrt(2))*(randn(Nr,1) + 1i*randn(Nr,1));
n = (1/sqrt(SNR_l))*n;
r_x = H*sel_symbol.';
H_inv = pinv(H);
r_x = H_inv*r_x + n; % 迫零均衡
X(i,:) = [real(r_x.') imag(r_x.')];
end
% 重排顺序:[real(r1) imag(r1) real(r2) imag(r2)]
orden = [1,3,2,4];
X = X(:,orden);
% 数据归一化(零均值单位方差)
X = X - mean(X(:));
X = X ./ std(X(:));
% 划分训练集和测试集(80%训练,20%测试)
train_qty = round(0.8*length(X));
test_qty = N - train_qty;
Xtrain = X(1:train_qty,:);
ytrain = y(1:train_qty,:);
idx_train = rand_sym_idx(1:train_qty);
Xtest = X(train_qty+1:end,:);
ytest = y(train_qty+1:end,:);
idx_test = rand_sym_idx(train_qty+1:end);
% 神经网络架构:输入(4) → 隐藏(100) → 输出(4比特)
% Xavier初始化
xavier_limit = sqrt(6)/sqrt(input_size+output_size);
W1 = rand(n_neuronas_oculta,input_size);
W1 = -xavier_limit + 2*xavier_limit*W1;
b1 = randn(n_neuronas_oculta,1);
W2 = rand(output_size,n_neuronas_oculta);
W2 = -xavier_limit + 2*xavier_limit*W2;
b2 = randn(output_size,1);
% 记录损失和准确率
train_loss = zeros(1,n_epocas);
test_loss = zeros(1,n_epocas);
train_acc = zeros(1,n_epocas);
test_acc = zeros(1,n_epocas);
for i=1:n_epocas
% **************************
% 前向传播
% **************************
Z1 = W1*Xtrain';
b1_rep = repmat(b1,1,train_qty);
Z1 = Z1 + b1_rep;
A1 = max(0,Z1); % ReLU激活
Z2 = W2*A1;
b2_rep = repmat(b2,1,train_qty);
Z2 = Z2 + b2_rep;
A2 = 1./(1+exp(-Z2)); % Sigmoid激活(输出比特)
% 将输出(>0.5)转换为对应的符号组合索引
[~, y_hat] = ismember((A2>0.5)', idx_sign, 'rows');
y_hat = y_hat';
% 计算训练损失(均方误差,比较索引)
train_loss(i) = (1/train_qty)*sum((y_hat - idx_train).^2);
f = (y_hat == idx_train);
train_acc(i) = length(find(f==1))/train_qty;
% **************************
% 反向传播
% **************************
dZ2 = A2 - ytrain'; % 输出层梯度(Sigmoid导数已包含)
dW2 = (1/train_qty)*(dZ2*A1');
db2 = (1/train_qty)*(sum(dZ2,2));
dZ1_prev = (W2'*dZ2);
dZ1 = dZ1_prev .* (Z1>0); % ReLU导数
dW1 = (1/train_qty)*(dZ1*Xtrain);
db1 = (1/train_qty)*sum(dZ1,2);
% 恢复b1,b2为列向量(因之前repmat)
b1 = b1(:,1);
b2 = b2(:,1);
% 更新权重
W1 = W1 - alpha*dW1;
b1 = b1 - alpha*db1;
W2 = W2 - alpha*dW2;
b2 = b2 - alpha*db2;
% ****************************
% 测试集验证
% ****************************
Z1_V = W1*Xtest';
b1_rep = repmat(b1,1,test_qty);
Z1_V = Z1_V + b1_rep;
A1_V = max(0,Z1_V);
Z2_V = W2*A1_V;
b2_rep = repmat(b2,1,test_qty);
Z2_V = Z2_V + b2_rep;
A2_V = 1./(1+exp(-Z2_V));
[~, y_hat_v] = ismember((A2_V>0.5)', idx_sign, 'rows');
y_hat_v = y_hat_v';
test_loss(i) = (1/test_qty)*sum((y_hat_v - idx_test).^2);
f_test = (y_hat_v == idx_test);
test_acc(i) = length(find(f_test==1))/test_qty;
% 每100轮输出一次状态
if rem(i,100)==0
fprintf('******************************** \n');
txt = '轮次 %d | 训练损失 %2.2f | 测试损失 %2.2f | 训练准确率 %2.2f | 测试准确率 %2.2f \n';
fprintf(txt,i,train_loss(i),test_loss(i), train_acc(i), test_acc(i));
end
% 恢复b1,b2
b1 = b1(:,1);
b2 = b2(:,1);
end
% 绘制损失曲线
figure
title('损失曲线')
plot(train_loss,'LineWidth',2), grid on, hold on,
plot(test_loss,'--r','LineWidth',2),
xlabel('轮次')
ylabel('损失')
legend('训练损失','测试损失')
% 绘制准确率曲线
figure
title('准确率曲线')
plot(train_acc, 'LineWidth',2), grid on, hold on,
plot(test_acc,'--r','LineWidth',2),
xlabel('轮次')
ylabel('准确率')
legend('训练准确率','测试准确率')
% 保存模型(可选)
% save('modelMIMO2x2_4QAMNoOneHot_3dB.mat','W1','W2','b1','b2');
% 计算混淆矩阵和F1分数(宏平均)
ytrue = idx_test;
ypred = y_hat_v;
clases = output_size;
cm = zeros(clases);
for i=1:clases
for j=1:clases
for l=1:length(ytrue)
if (ytrue(l) == i) && (ypred(l) == j)
cm(i,j) = cm(i,j) + 1;
end
end
end
end
F1 = 0;
sum_prec = 0;
sum_recall = 0;
for ii=1:clases
if (cm(ii,ii)==0)
Prec = 0;
Recall = 0;
F1 = F1 + 0;
else
Prec = cm(ii,ii)/sum((cm(ii,:)));
Recall = cm(ii,ii)/sum((cm(:,ii)));
F1 = F1 + (2*Prec*Recall)/(Prec+Recall);
sum_prec = sum_prec + Prec;
sum_recall = sum_recall + Recall;
end
end
F1_macro = F1/clases;
Prec_macro = sum_prec/clases;
Recall_macro = sum_recall/clases;
fprintf('------ 分类报告 -------------------------------- \n');
txt2 = ' 宏平均F1: %2.2f | 宏平均精确率: %2.2f | 宏平均召回率: %2.2f \n';
fprintf(txt2,F1_macro,Prec_macro,Recall_macro);
六、结论与展望
本文分析了基于深度学习的MIMO信号检测方案。主要结论如下:
-
深度学习能够有效解决MIMO检测的复杂度问题,以较低的在线计算代价实现接近最优ML检测的BER性能。
-
标签编码策略对检测性能有显著影响:OH策略BER性能最优但复杂度最高;OHA策略在性能和复杂度间取得良好平衡(BER损失<1 dB);DSE策略复杂度最低但BER损失约2 dB。
-
所提方案适用于资源受限的自适应系统:可根据硬件条件和性能需求灵活选择标签策略。
未来的研究方向包括:测试更高阶QAM调制方案、超参数调优以优化系统资源、以及考虑非理想信道估计的影响。
参考文献
[1] Ibarra-Hernández, R.F.; Castillo-Soria, F.R.; Gutiérrez, C.A.; Del-Puerto-Flores, J.A; Acosta-Elías J., Rodríguez-Abdalá V. and Palacios-Luengas L. Efficient Deep Learning-Based Detection Scheme for MIMO Communication Systems.
仿真代码可见文末VX公众号,所见即所得
更多推荐




所有评论(0)