AI赋能5G,利用神经网络进行信道估计

FPGA算法工程师 2022-03-07

信道估计神经网络模型5g网络

3584 字丨阅读本文需 11 分钟

随着5G和AI技术不断成熟和发展,如今基于AI辅助的无线通信正逐步从学术界走向产业界落地。

1、2022MWC上的5G+AI

近日举行的2022年世界移动通信大会(MWC)上,各大通信玩家纷纷拿出自己的新产品亮相。

高通公司在2022MWC巴塞罗那展上,宣布发布第5代调制解调器到天线5G解决方案——骁龙 X70 5G调制解调器及射频系统。骁龙X70在调制解调器及射频系统中引入全球首个5G AI处理器,利用AI能力实现突破性的5G性能,包括10Gbps 5G下载速度、更快的上传速度、低时延、更好的网络覆盖和能效,一定程度上缓解或者解决5G网络给手机等移动设备带来的功耗问题。

高通的5G AI套件展示创新的AI辅助调制解调器及射频技术,包括AI辅助信道状态反馈(CSI)和AI辅助波束管理,以此提升5G速度、网络覆盖、移动性和稳健性。

毫无疑问,高通这一5G+AI的技术创新,将给移动通信的发展带来重大影响。

虽然目前国内外都在积极研究将AI融入无线通信系统,但产业界的产品落地显然不能一步到位。

我们可以看到,MWC上华为推出业界首款FDD超宽频多天线系列产品,将Sub-3GHz频谱的中、低频的多个频段结合在一个射频模块中,支持4T4R、8T8R以及Massive MIMO多天线技术。

从目前的创新态势上看,AI技术将逐步进入无线通信系统设计中,这也是未来6G的重要发展方向。

2、5G+AI如何开始?

传统通信链路设计时,人们采取分而治之的方法,将各功能模块进行独立的设计和优化,无线通信链路如下图所示。

在某些功能模块的设计和优化过程中,可能存在着性能损失。例如,为了降低设计复杂度,将某些非线性处理简化假设为线性操作。

此时,使用AI/ML 方法替换这些模块可以带来性能的提升以及处理时延的降低。这也是将AI/ML 方法用于空口技术设计的最直接方式。

目前,AI/ML 在无线物理层中的应用包括利用神经网络来取代传统发射机和接收机中的基本功能模块,或者将物理层通信看作一个端到端的信号重构问题,并应用自编码器概念来表示物理层通信过程,进行端到端通信的联合优化。

AI/ML 在无线物理层中的应用主要可以分为两种方式。其一为数据驱动方式。目前现有的深度学习网络大多数是基于这种方式的,它使用标准的神经网络结构作为黑匣子并通过大量数据进行训练。然而,训练标准的神经网络除了需要庞大的数据集之外,还需要大量的训练时间。

另一种方式为模型驱动深度学习方法,该方法基于已知的物理机制和领域知识构建网络拓扑,因此需要较少的训练数据和较短的训练时间,成为实现智能通信的有效手段。

针对模型驱动深度学习的无线物理层设计问题,研究者分别研究了基于模型驱动深度学习的大规模MIMO 信道估计、信号检测、信道译码、CSI 反馈和多用户预编码等。

我们知道,AI中的深度学习研究已经持续很多年了,特别是在近年来的图像视觉领域,得到极大的推广应用。

作为一名AI爱好者兼无线通信小玩家,如何体验一下AI技术给无线通信带来的乐趣呢?

为了直观感到AI在无线通信中的好处,我们通过本文的一个示例,体验利用深度学习中的神经网络训练方法来进行信道估计。

为了跟上本文所述的体验过程,需要你做准备一台电脑,安装好MATLAB软件(最好R2021a/R2021b版本),然后结合深度学习工具箱和5G工具箱进行今天的体验。

3、深度学习+信道估计概述

现在我们开始使用深度学习工具箱和5G工具箱生成的数据,训练卷积神经网络(CNN)进行信道估计。使用训练好的CNN或者在线CNN训练,在单输入单输出(SISO)模式下,利用物理下行共享信道(PDSCH)解调参考信号(DM-RS)进行信道估计。

众所周知,信道估计的一般方法是将已知的参考导频符号插入到传输数据流中,然后在接收端利用这些导频符号,除以与发射端相同的DMRS序列得到导频信号的信道值,通过插值,求得其余信号的信道响应。

除此之外,我们还可以使用深度学习技术来执行信道估计。例如,通过将PDSCH资源网格看作一个2-D图像,可以将信道估计问题转化为图像处理问题,类似于去噪或超分辨率,这种情况下,CNN将是有效的。

使用5G工具箱,我们可以定制和生成标准兼容的波形和通道模型,以用作训练数据。使用深度学习工具箱,可以使用这个训练数据来训练一个信道估计CNN。这个例子展示了如何生成这样的训练数据,以及如何训练一个信道估计CNN。这个例子也展示了如何使用信道估计CNN来处理包含线性插值接收到的导频符号的图像。最后,将神经网络信道估计器的结果与实际估计器和完美估计器的结果进行了比较。利用CNN进行信道估计过程如下图所示。

此处,利用CNN恢复图像分辨率和降噪的性能,使用CNN 拟合信道时频点间的非线性关系,提升插值估计精度,降低导频开销。

估计流程如图所示。

那么,我们怎样进行神经网络训练呢?

4、神经网络训练

神经网络训练包括以下步骤:

· 数据生成

· 将生成的数据拆分为训练集和验证集

· 定义CNN架构

· 指定训练选项、优化器和学习速度

· 训练网络

由于大量的信号和可能的场景,训练可能需要几分钟。若为了节省时间,我们可以禁用训练,使用预训练的模型。我们也可以通过将trainModel设置为true来启用训练。

trainModel = true;

如果安装了并行计算工具箱(Parallel Computing Toolbox),并设置了支持CUDA的NVIDIA GPU,那么网络训练默认使用GPU加速。trainNetwork(深度学习工具箱)函数允许你覆盖这个默认行为。支持的GPU列表,请参见GPU支持的版本(并行计算工具箱)。

数据生成设置为生成256个训练示例或训练数据集。这样的数据量足以在合理的时间内训练CPU上的功能性信道估计网络。为了比较,预训练模型基于16384个训练实例。

MATLAB示例的CNN模型的训练数据具有固定的尺寸维数,网络只能接受612×14×1的网格,即612个子载波,14个OFDM符号和1个天线。因此,该模型只能工作在固定带宽分配、循环前缀长度和单个接收天线上。因此,考虑到实际情况,需要支持100MHz带宽的有效子载波以及多天线收发,该模型需要定制设计。

CNN将资源网格视为二维图像,因此网格中的每个元素必须是实数。在信道估计场景中,资源网格数据复杂。因此,将这些网格的实部和虚部分别输入到CNN中。在这个例子中,训练数据从一个复杂的612×14矩阵转换为一个实值的612×14×2矩阵,其中第三维表示实分量和虚分量。因为在进行预测时,必须将实部网格和虚部网格分别输入到神经网络中,因此示例将训练数据转换为612×14 ×1×2N的4-D数组,其中N是训练示例的数量。

为了保证CNN不会过度拟合训练数据,训练数据被分割成验证集和训练集。验证数据用于定期监测训练神经网络的性能,如valFrequency定义的,大约5次/epoch。当验证损失停止改善时,停止训练。在本例中,由于数据集的大小较小,验证数据大小与单个微小批处理的大小相同。

返回的信道估计CNN在不同的信道配置下进行训练,基于不同的延迟扩展、多普勒频移和0 ~ 10 dB的信噪比范围。

代码:

% Set the random seed for reproducibility (this has no effect if a GPU is

% used)

rng(42)


if trainModel 

   % Generate the training data

 [trainData,trainLabels] = hGenerateTrainingData(256);
   

   % Set the number of examples per mini-batch

   batchSize = 32;


   % Split real and imaginary grids into 2 image sets, then concatenate

   trainData = cat(4,trainData(:,:,1,:),trainData(:,:,2,:));

   trainLabels = cat(4,trainLabels(:,:,1,:),trainLabels(:,:,2,:));

   % Split into training and validation sets

   valData = trainData(:,:,:,1:batchSize);

   valLabels = trainLabels(:,:,:,1:batchSize);

 

   trainData = trainData(:,:,:,batchSize+1:end);

   trainLabels = trainLabels(:,:,:,batchSize+1:end);

   % Validate roughly 5 times every epoch

   valFrequency = round(size(trainData,4)/batchSize/5); 


   % Define the CNN structure

   layers = [ ...

        imageInputLayer([612 14 1],'Normalization','none')

        convolution2dLayer(9,64,'Padding',4)

        reluLayer 

        convolution2dLayer(5,64,'Padding',2,'NumChannels',64)

        reluLayer

        convolution2dLayer(5,64,'Padding',2,'NumChannels',64)

        reluLayer

        convolution2dLayer(5,32,'Padding',2,'NumChannels',64)

        reluLayer

        convolution2dLayer(5,1,'Padding',2,'NumChannels',32)

        regressionLayer

    ];

   % Set up a training policy

   options = trainingOptions('adam', ...

        'InitialLearnRate',3e-4, ...

        'MaxEpochs',5, ...

        'Shuffle','every-epoch', ...

        'Verbose',false, ...

        'Plots','training-progress', ...

        'MiniBatchSize',batchSize, ...

        'ValidationData',{valData, valLabels}, ...

        'ValidationFrequency',valFrequency, ...

        'ValidationPatience',5);

   % Train the network. The saved structure trainingInfo contains the

    % training progress for later inspection. This structure is useful for

    % comparing optimal convergence speeds of different optimization

    % methods.    [channelEstimationCNN,trainingInfo] = trainNetwork(trainData, ...        trainLabels,layers,options);


else

    % Load pretrained network if trainModel is set to false

    load('trainedChannelEstimationNetwork.mat')

end


5、创建仿真信道模型

设置仿真噪声电平(dB):

SNRdB = 10;

加载预定义的仿真参数,包括PDSCH参数和DM-RS配置。返回的对象载波是一个有效的载波配置对象,PDSCH是为SISO传输设置的PDSCH配置结构。

[gnb,carrier,pdsch] = hDeepLearningChanEstSimParameters();

创建TDL信道模型并设置信道参数。为了比较估计器的不同信道响应,可以更改这些参数。

通过信道多路径组件获取延迟样本的最大数量。这个数字是从具有最大延迟的信道路径和信道滤波器的实现延迟计算出来的。当获取接收到的信号时,需要这个数字来刷新信道滤波器。

代码:

%%

% Create a TDL channel model and set channel parameters. To compare

% different channel responses of the estimators, you can change these

% parameters later.

channel = nrTDLChannel;

channel.Seed = 0;

channel.DelayProfile = 'TDL-A';

channel.DelaySpread = 3e-7;

channel.MaximumDopplerShift = 50;

% This example supports only SISO configuration

channel.NumTransmitAntennas = 1;

channel.NumReceiveAntennas = 1;

waveformInfo = nrOFDMInfo(carrier);

channel.SampleRate = waveformInfo.SampleRate;

%% 

% Get the maximum number of delayed samples by a channel multipath

% component. This number is calculated from the channel path with the

% largest delay and the implementation delay of the channel filter. This

% number is needed to flush the channel filter when obtaining the received

% signal.

chInfo = info(channel);

maxChDelay = ceil(max(chInfo.PathDelays*channel.SampleRate))+chInfo.ChannelFilterDelay;

6、模拟PDSCH传输过程

通过执行以下步骤模拟PDSCH传输:

· 生成PDSCH资源网格

· 插入DM-RS符号

· 执行OFDM调制

· 通过信道模型发送调制波形

· 添加AWGN

· 理想的定时同步

· 执行OFDM解调

若要刷新信道内容,在传输波形的末尾加零。这些零考虑了信道中引入的任何延迟,比如多路径和实现延迟。0的数量取决于采样率、延迟配置文件和延迟扩展。

在时域波形中加入加性高斯白噪声(AWGN)。为了考虑采样率,对噪声功率进行归一化处理。信噪比针对每个接收天线的每个资源元素(RE) (3GPP TS 38.101-4)进行定义。

执行完美的同步。要找到最强的多径分量,使用信道提供的信息。

OFDM解调接收到的数据以重建资源网格。

% Generate DM-RS indices and symbols

[~,dmrsIndices,dmrsSymbols,pdschIndicesInfo] = hPDSCHResources(gnb,pdsch);


% Create PDSCH resource grid

pdschGrid = nrResourceGrid(carrier);

% Map PDSCH DM-RS symbols to the grid

pdschGrid(dmrsIndices) = pdschGrid(dmrsIndices)+dmrsSymbols;

% OFDM-modulate associated resource element

stxWaveform = nrOFDMModulate(carrier,pdschGrid);

txWaveform = [txWaveform; zeros(maxChDelay,size(txWaveform,2))];

%%

% Send data through the TDL channel model.

[rxWaveform,pathGains,sampleTimes] = channel(txWaveform);


SNR = 10^(SNRdB/20); % Calculate linear noise gain

N0 = 1/(sqrt(2.0*gnb.NRxAnts*double(waveformInfo.Nfft))*SNR);

noise = N0*complex(randn(size(rxWaveform)),randn(size(rxWaveform)));

rxWaveform = rxWaveform + noise;

% Get path filters for perfect channel estimation

pathFilters = getPathFilters(channel); 

[offset,~] = nrPerfectTimingEstimate(pathGains,pathFilters);

rxWaveform = rxWaveform(1+offset:end, :);

rxGrid = nrOFDMDemodulate(carrier,rxWaveform);

% Pad the grid with zeros in case an incomplete slot has been demodulated

[K,L,R] = size(rxGrid);if (L < carrier.SymbolsPerSlot)

      rxGrid = cat(2,rxGrid,zeros(K,carrier.SymbolsPerSlot-L,R));

end

7、比较和可视化各种信道估计效果

我们可以执行和比较相同信道模型的完美、实际和神经网络估计的结果。

要执行完美的信道估计,使用nrPerfectChannelEstimate函数,使用信道提供的路径增益值。

为了进行实际的信道估计,使用nrChannelEstimate函数。

要使用神经网络执行信道估计,必须插值接收的网格。然后将插值后的图像分割成实部和虚部,并将这些图像作为单个批量输入神经网络。使用predict (Deep Learning Toolbox)函数对真实和想象的图像进行预测。最后,将结果串并转换回复数。

计算每个估计方法的均方误差(MSE)。

代码:

estChannelGridPerfect = nrPerfectChannelEstimate(carrier,pathGains, ...

    pathFilters,offset,sampleTimes);

%%

% To perform practical channel estimation, use the

% <docid:5g_ref#mw_function_nrChannelEstimate nrChannelEstimate> function.

[estChannelGrid,~] = nrChannelEstimate(carrier,rxGrid,dmrsIndices, ...

    dmrsSymbols,'CDMLengths',pdschIndicesInfo.CDMLengths);


  % Interpolate the received resource grid using pilot symbol locations

interpChannelGrid = hPreprocessInput(rxGrid,dmrsIndices,dmrsSymbols);

% Concatenate the real and imaginary grids along the batch dimension

nnInput = cat(4,real(interpChannelGrid),imag(interpChannelGrid));


% Use the neural network to estimate the channel

estChannelGridNN = predict(channelEstimationCNN,nnInput);

% Convert results to complex 

estChannelGridNN = complex(estChannelGridNN(:,:,:,1),estChannelGridNN(:,:,:,2));

%% 

% Calculate the mean squared error (MSE) of each estimation method.

neural_mse = mean(abs(estChannelGridPerfect(:) - estChannelGridNN(:)).^2);

interp_mse = mean(abs(estChannelGridPerfect(:) - interpChannelGrid(:)).^2);

practical_mse = mean(abs(estChannelGridPerfect(:) - estChannelGrid(:)).^2);

%%

% Plot the individual channel estimations and the actual channel

% realization obtained from the channel filter taps. Both the practical

% estimator and the neural network estimator outperform linear

% interpolation.


plotChEstimates(interpChannelGrid,estChannelGrid,estChannelGridNN,estChannelGridPerfect,...

    interp_mse,practical_mse,neural_mse);

8、演示效果

我们通过MATLAB写好代码后,运行程序,采用在线CNN训练,获得最终各种信道估计的MSE图示。绘制单个信道估计和从信道滤波器点位获得的实际信道实现。通过下图,我们可以看出,实用估计器和神经网络估计器都优于线性插值。

虽然我们可以通过CNN模型进行训练,并且得到比较好的效果。但是,真正将AI技术应用到通信产品中,仍然还有一段路要走。

参考

[1].IMT-2030(6G)推进组,无线人工智能(AI)技术研究报告-发布版

[2].MATLAB,Deep Learning Data Synthesis for 5G Channel Estimation.

[3].QualCommm中国

[4].华为中国

---END---

免责声明:凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处本网。非本网作品均来自其他媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如您发现有任何侵权内容,请依照下方联系方式进行沟通,我们将第一时间进行处理。

0赞 好资讯,需要你的鼓励
来自:FPGA算法工程师
0

参与评论

登录后参与讨论 0/1000

为你推荐

加载中...