主要内容

用于LLR估计的神经网络的训练和测试

这个例子展示了如何产生信号和信道损伤来训练一个名为LLRNet的神经网络来估计精确的对数似然比(LLR)。

大多数现代通信系统,如5G新无线电(NR)和第二代卫星数字视频广播(DVB-S.2)使用受益于软解调比特值的前向纠错算法。这些系统使用LLR方法计算软比特值。LLR定义为比特为0的概率与比特为1或1的概率之比的对数

L 日志 ( P R ( C = 0 | s ˆ ) P R ( C = 1. | s ˆ ) ) , = 1. , . . . , K

哪里 s ˆ 是k位接收符号,并且 C T H 符号位。假设加性高斯白噪声(AWGN)信道,LLR表达式的精确计算为

L 日志 ( s C 0 经验 ( - s ˆ - s 2. 2. σ 2. ) s C 1. 经验 ( - s ˆ - s 2. 2. σ 2. ) )

哪里 σ 2. 是噪声方差。指数和对数计算非常昂贵,尤其是在嵌入式系统中。因此,大多数实际系统使用最大对数近似。对于给定的数组 x ,最大对数近似值为

日志 ( J 经验 ( - x J 2. ) ) 最大值 J ( - x J 2. ) .

在精确的LLR表达式中替换该值将得到最大对数LLR近似值[1]

L 1. σ 2. ( s C 1. s ˆ - s 2. 2. - s C 0 s ˆ - s 2. 2. ) .

LLRNet使用神经网络来估计给定SNR值的基带复数接收符号的准确LLR值。具有少量隐藏层的浅层网络具有以类似于近似LLR算法的复杂度估计准确LLR值的潜力[1].

比较M元QAM的精确LLR、最大对数近似LLR和LLRNet

5G NR采用m进制QAM调制。本节探讨了LLRNet在估计16-、64-和256-QAM调制的LLR值时的准确性。假设一个M-ary QAM系统在AWGN信道条件下运行。这个假设是有效的,即使信道是频率选择性的,但符号是均衡的。以下是三种算法的计算LLR值:

  • 精确LLR

  • 最大对数近似LLR

  • 网络

16-QAM LLR估计性能

计算覆盖99.7%的符号值的精确和近似LLR值( ± 3. σ )可能接收到的符号。假设AWGN为99.7%( ± 3. σ )接收到的信号数量将在范围内 [ 最大值 s C ( R E ( s ) + 3. σ ) s C ( R E ( s ) - 3. σ ) ] + [ 最大值 s C ( M ( s ) + 3. σ ) s C ( M ( s ) - 3. σ ) ] .在该空间上生成均匀分布的I/Q符号并使用昌德(通讯工具箱)函数计算精确的LLR和近似的LLR值。

M=16;%调制顺序k=log2(M);%每符号位数SNRValues=-5:5:5;%分贝numSymbols=1e4;numSNRValues=length(SNRValues);symOrder=llrnetQAMSymbolMapping(M);const=qammod(0:15,M,symOrder,“单位平均功率”,1); maxConstReal=max(实(常数));maxconstitmag=max(imag(const));numBits=numSymbols*k;exactLLR=零(numBits,numSNRValues);approxLLR=零(numBits,numSNRValues);rxSym=零(numSymbols,numSNRValues);对于snrIdx=1:numSNRValues SNR=SNRValues(snrIdx);噪声方差=10^(-SNR/10);西格玛=sqrt(噪音衰减);maxReal=MaxConstral+3*sigma;minReal=-maxReal;最大值=最大值+3*西格玛;最小值=-最大值;r=(兰特(numSymbols,1)*(maxReal-minReal)+minReal)+...1i*(rand(numSymbols,1)*(maxImag-minImag)+minImag);rxSym(:,snrIdx)=r;exactLLR(:,snrIdx)=qamdemod(r,M,symborder,...“单位平均功率”1.“输出类型”,“llr”,“噪音回避”,噪音衰减);近似值lr(:,snrIdx)=qamdemod(r,M,符号顺序,...“单位平均功率”1.“输出类型”,“approxllr”,“噪音回避”,隔声);终止

神经网络的建立与训练

建立一个具有一个输入层、一个隐藏层和一个输出层的浅层神经网络。将接收到的符号输入网络,并对其进行训练以估计准确的LLR值。由于网络需要实际输入,因此创建一个两列向量,其中第一列是接收符号的实际值,第二列是图像接收符号的y值。此外,输出必须是 K × N 向量,在哪里 K 是每个符号的位数,并且 N 是符号的数量。

nnInput=零(numSymbols,2,numSNRValues);nnOutput=零(numSymbols,k,numSNRValues);对于snrIdx=1:numSNRValues rxTemp=rxSym(:,snrIdx);rxTemp=[real(rxTemp)imag(rxTemp)];nnInput(:,:,snrIdx)=rxTemp;llrTemp=exactLLR(:,snrIdx);nnOutput(:,:,snrIdx)=重塑(llrTemp,k,numSymbols);终止

对于16-QAM符号,隐藏层有8个神经元,输出层有4个神经元,对应于每个符号的位数无线网络函数返回预配置的神经网络。针对三个不同的信噪比值训练神经网络。使用使用以下公式计算的精确LLR值:昌德函数作为预期的输出值。

hiddenLayerSize=8;训练网络=单元(1,numsnr值);对于snrIdx=1:numSNRValues fprintf('训练神经网络的信噪比=%1.1fdB\n',...SNRValues(snrIdx))x=nnInput(:,:,snrIdx);,y=nnOutput(:,:,snrIdx);,msexactlr=mean(y(:).^2);fprintf(“\t平方米LLR=%1.2f\n”,msexactlr)%训练网络。如果可用,使用并行池。训练三次%挑一个最好的。mse=inf;对于p=1:3 netTemp=llrnetNeuralNetwork(隐藏层化);如果ParallelComputingLicenseXists()[netTemp,tr]=列车(netTemp,x,y,“使用并行”,“是的”);其他的[netTemp,tr]=列车(netTemp,x,y);终止%测试网络predictedLLRSNR=netTemp(x);mstemp=perform(netTemp,y,predictedLLRSNR);fprintf('\t\t序列%d:MSE=%1.2e\n'、p mseTemp)如果mse>mseTemp mse=mseTemp;net=netTemp;终止终止%存储经过培训的网络训练网络{snrIdx}=net;fprintf(“\t测试MSE=%1.2e\n”,mse)终止
训练信噪比为-5.0dB的神经网络
均方LLR=4.42
试验1:MSE=1.95e-06试验2:MSE=1.22e-04试验3:MSE=4.54e-06
最佳均方误差=1.95e-06
训练SNR=0.0dB的神经网络
均方LLR=15.63
试验1:MSE = 1.90e-03试验2:MSE = 5.03 -03试验3:MSE = 8.95e-05
最佳MSE=8.95e-05
训练SNR=5.0dB的神经网络
均方LLR=59.29
试验1:MSE=2.25e-02试验2:MSE=2.23e-02试验3:MSE=7.40e-02
最佳均方误差=2.23e-02

该网络的性能指标是均方误差(MSE)。最终的MSE值表明,神经网络收敛到的MSE值至少比均方精确LLR值小40 dB。请注意,随着信噪比的增加,LLR值也随之增加,从而导致相对较高的MSE值。

16-QAM的结果

比较LLRNet的LLR估计值与精确LLR和近似LLR的LLR估计值。模拟1e4 16-QAM符号,并使用所有三种方法计算LLR值。不要使用我们在上一节中生成的符号,以免给LLRNet带来不公平的优势,因为这些符号用于训练LLRNet。

numBits=numSymbols*k;d=randi([01],numBits,1);txSym=qammod(d,M,符号顺序,“输入类型”,“比特”,“单位平均功率”,1); exactLLR=零(numBits,numSNRValues);approxLLR=零(numBits,numSNRValues);predictedLLR=零(numBits,numSNRValues);rxSym=零(长度(txSym),numsnr值);对于snrIdx=1:numSNRValues SNR=SNRValues(snrIdx);sigmas=10^(-SNR/10);r=awgn(txSym,SNR);rxSym(:,snrIdx)=r;exactLLR(:,snrIdx)=qamdemod(r,M,symoder,...“单位平均功率”1.“输出类型”,“llr”,“噪音回避”,sigmas);近似lr(:,snrIdx)=qamdemod(r,M,symborder,...“单位平均功率”1.“输出类型”,“approxllr”,“噪音回避”net=trainedNetworks{snrIdx};x=[real(r)imag(r)]';templr=net(x);predictedLLR(:,snrIdx)=重塑(templr,numBits,1);终止qam16Results.exactLLR=exactLLR;qam16Results.approxLLR=approxLLR;qam16Results.predictedLLR=predictedLLR;qam16Results.RxSymbols=rxSym;qam16Results.SNRValues=SNRValues;qam16Results.HiddenLayerSize=HiddenLayerSize;qam16Results.NumSymbols=NumSymbols;

下图显示了LLR值相对于奇数位接收符号实部的精确LLR、最大对数近似LLR和LLRNet估计。LLRNet匹配精确LLR值,即使是低SNR值。

llrnetPlotLLR(QAM16结果,“16-QAM LLR比较”)

64-QAM和256-QAM LLR估计性能

检查LLRNet是否可以估计高阶QAM的LLR值。使用llrnetQAMLLR下图显示了LLR值相对于奇数位接收符号实部的精确LLR、最大对数近似LLR和LLRNet估计。

特莱恩诺=错误的;如果特莱恩诺%64-QAM的参数simParams(1).M=64;%#好的simParams(1).SNRValues=0:5:10;simParams(1).HiddenLayerSize=16;simParams(1)。NumSymbols=1e4;simParams(1).UseReLU=false;%256-QAM的参数simParams(2).M=256;simParams(2).SNRValues=0:10:20;simParams(2).HiddenLayerSize=32;simParams(2)。NumSymbols=1e4;simParams(2).UseReLU=false;simResults=llrnetQAMLLR(simParams);llrnetPlotLLR(simResults(1),sprintf(“%d-QAM LLR比较”,simResults(1.M))llrnetPlotLLR(simResults(2),sprintf(“%d-QAM LLR比较”,simResults(2.M))其他的装载(“llrnetAmpPerformanceComparison.mat”,“模拟结果”)对于p=1:length(simResults)llrnetPlotLLR(simResults(p),sprintf(“%d-QAM LLR比较”,simResults(p.M))终止终止

DVB-S.2数据包错误率

DVB-S.2系统使用软解调器为LDPC解码器生成输入。使用精确LLR、近似LLR和LLRNet使用16-APSK调制和2/3 LDPC码模拟DVB-S.2系统的分组错误率(PER)llrNetDVBS2PER函数。此函数使用通信PSKDemodulator(通讯工具箱)系统对象和dvbsapskdemod(通讯工具箱)函数计算精确和近似的LLR值以及通信信道(通讯工具箱)系统对象来模拟通道。

设置模拟诺要为true(或在下拉列表中选择“模拟”),请针对以下值运行PER模拟:子系统类型,埃斯诺瓦利斯符号使用llrnetDVBS2PER作用如果并行计算工具箱™如果已安装,则此函数使用帕弗命令以并行运行模拟。在3.6GHz的英特尔至强W-2133 CPU上运行在并行池上运行代码(并行计算工具箱)尺寸为6,模拟大约需要40分钟。设置模拟诺错误的(或在下拉列表中选择“打印保存的结果”),以加载子系统类型=‘16APSK 2/3’,埃斯诺瓦利斯=8.6:0.1:8.9符号=10000.

设置特莱恩诺符合事实的(或在下拉列表中选择“训练LLRNet”)为每个值训练LLR神经网络埃斯诺瓦利斯,对于给定的子系统类型符号如果并行计算工具箱™安装后火车可以使用可选的名称-值对调用函数“使用并行”着手“是的”并行运行模拟。在英特尔至强W-2133 CPU@3.6GHz上运行在并行池上运行代码(并行计算工具箱)尺寸为6的模拟大约需要21分钟。设置特莱恩诺若要为false(或在下拉列表中选择“使用已保存的网络”),请加载为其训练的LLR神经网络子系统类型=‘16APSK 2/3’,埃斯诺瓦利斯=8.6:0.1:8.9.

有关每个模拟的DVB-S.2的更多信息,请参阅DVB-S.2链路,包括Simulink中的LDPC编码万博1manbetx(通讯工具箱)有关网络培训的更多信息,请参阅LLRNettrainDVBS2LLR网络功能与[1].

模拟诺=错误的;如果模拟无子系统类型=‘16APSK 2/3’;%#好的EsNoValues=8.6:0.1:8.9;%分贝numFrames=10000;numerors=200;trainNow=错误的;如果trainNow&(~strcmp)(子系统类型,‘16APSK 2/3’)| | ~isequal(EsNoValues,8.6:0.1:9))%针对每个EsNo值对网络进行培训numTrainSymbols=1e4;hiddenLayerSize=64;llrNets=LLRNettrainDVBS2LLR网络(子系统类型、EsNoValues、numTrainSymbols、hiddenLayerSize);其他的装载(“LLRNETDVBS2网络”,“网络”,“子系统类型”,“EsNoValues”);终止%使用精确LLR、近似LLR和LLRNet模拟PER[perLLR,perapproxlr,perLLRNet]=llrnetDVBS2PER(子系统类型,EsNoValues,llrNets,numFrames,numorr);llrnetplertrvsesno(perLLR,perapproxlr,perLLRNet,EsNoValues,subsystemType)其他的装载(“llrnetDVBS2PERResults.mat”,“perapproxlr”,“帕尔尔”,“珀尔内特”,...“子系统类型”,“EsNoValues”); llrnetPlotLLRvsEsNo(perLLR、perApproxLLR、perLLRNet、EsNoValues、子系统类型)终止

结果表明,LLRNet在不使用对数和指数等昂贵运算的情况下,几乎与精确LLR的性能相匹配。

进一步探索

为DVB-S.2系统尝试不同的调制和编码方案。调制类型和编码速率的完整列表在DVB-S.2链路,包括Simulink中的LDPC编码万博1manbetx(通讯工具箱)实例您还可以为网络的隐藏层尝试不同的大小,以减少操作数量,并测量与精确LLR相比的性能损失。

本示例使用这些帮助函数。请检查这些文件以了解实现的详细信息。

参考文献

[1] O. Shental and J. Hoydis, "Machine LLRning": Learning to soft解调," 2019 IEEE Globecom workshop (GC Wkshps), Waikoloa, HI, USA, 2019, pp. 1-7。

相关话题