这个例子展示了如何产生信号和信道损伤来训练一个名为LLRNet的神经网络来估计精确的对数似然比(LLR)。
大多数现代通信系统,如5G新无线电(NR)和第二代卫星数字视频广播(DVB-S.2)使用受益于软解调比特值的前向纠错算法。这些系统使用LLR方法计算软比特值。LLR定义为比特为0的概率与比特为1或1的概率之比的对数
,
哪里 是k位接收符号,并且 是 符号位。假设加性高斯白噪声(AWGN)信道,LLR表达式的精确计算为
哪里 是噪声方差。指数和对数计算非常昂贵,尤其是在嵌入式系统中。因此,大多数实际系统使用最大对数近似。对于给定的数组 ,最大对数近似值为
.
在精确的LLR表达式中替换该值将得到最大对数LLR近似值[1]
.
LLRNet使用神经网络来估计给定SNR值的基带复数接收符号的准确LLR值。具有少量隐藏层的浅层网络具有以类似于近似LLR算法的复杂度估计准确LLR值的潜力[1].
5G NR采用m进制QAM调制。本节探讨了LLRNet在估计16-、64-和256-QAM调制的LLR值时的准确性。假设一个M-ary QAM系统在AWGN信道条件下运行。这个假设是有效的,即使信道是频率选择性的,但符号是均衡的。以下是三种算法的计算LLR值:
精确LLR
最大对数近似LLR
网络
计算覆盖99.7%的符号值的精确和近似LLR值(
)可能接收到的符号。假设AWGN为99.7%(
)接收到的信号数量将在范围内
.在该空间上生成均匀分布的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值。此外,输出必须是 向量,在哪里 是每个符号的位数,并且 是符号的数量。
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值。
比较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比较”)
检查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系统使用软解调器为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相比的性能损失。
本示例使用这些帮助函数。请检查这些文件以了解实现的详细信息。
llrnetDVBS2PER.m:使用精确LLR、近似LLR和LLRNet LLR模拟DVB-S.2 PER
llrnetTrainDVBS2LLRNetwork.m:训练用于DVB-S.2 LLR估计的神经网络
llrnetQAMLLR.m:训练用于M元QAM LLR估计的神经网络,并计算精确LLR、近似LLR和LLRNet LLR
llrnetNeuralNetwork.m:配置用于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。