无线通信自动编码器
这个例子展示了如何用自动编码器建模端到端通信系统,从而在无线信道上可靠地传输信息位。
简介
传统的自编码器是一种无监督的神经网络,它学习如何有效地压缩数据,也称为编码。该自编码器还学习如何从压缩表示中重建数据,以便原始数据和重建数据之间的差异最小。
传统的无线通信系统被设计为通过削弱传输信号的信道提供可靠的数据传输。这些系统有多种组成部分,如信道编码、调制、均衡、同步等。每个组件都是基于数学模型进行独立优化的,这些数学模型被简化以达到封闭形式的表达式。相反,自动编码器联合优化发射机和接收机作为一个整体。这种联合优化有可能提供比传统系统更好的性能[1],[2].
传统的自动编码器通常用于压缩图像,换句话说,消除图像中的冗余并降低图像的维数。另一方面,无线通信系统使用信道编码和调制技术来增加信息位的冗余。通过增加冗余,系统可以恢复被无线信道损坏的信息位。因此,无线自动编码器实际上增加了冗余,并试图最小化给定信道接收信息中的错误数量,同时学习以无监督的方式应用信道编码和调制。
基本自动编码器系统
下面是无线自动编码器系统的框图。编码器(发送器)首先映射 信息被分割成这样的信息 ,在那里 .然后将消息s映射到n个实数来创建 .编码器的最后一层对 进一步限制编码的符号。以下是可能的约束,并使用规范化层实现:
能源约束:
平均功率约束:
定义此系统的通信速率为 [比特/信道使用],其中(n,k)表示系统发送一个 信息使用n通道使用。信道影响编码(即传输)符号的生成 .解码器(即接收机)产生估计值, ,所传送的讯息, .
输入消息被定义为one-hot vector ,它被定义为一个除了元素都是零的向量 一个。信道是加性高斯白噪声(AWGN),它添加噪声以实现每个数据位给定的能量与噪声功率密度之比, .
自动编码器映射
数据位转换为
信道使用,这导致有效编码率为
每个通道使用的数据位。然后,2个通道使用被映射到一个符号,这导致每个符号有2个通道使用。将通道使用的每个通道符号值映射到BitsPerSymbol
AWGN信道参数。
定义一个具有能量归一化和训练的(7,4)自编码器网络
3分贝。在[1],作者展示了编码器(发射器)和解码器(接收器)的两个全连接层以最小的复杂性提供了最佳结果。输入层(featureInputLayer
(深度学习工具箱))接受长度为m的单热向量。编码器有两个完全连接的层(fullyConnectedLayer
(深度学习工具箱)).第一个有M个输入和M个输出,后面是一个ReLU层(reluLayer
(深度学习工具箱)).第二层全连接层有M个输入和n个输出,后面是归一化层(helperAEWNormalizationLayer.m).编码器层之后是AWGN通道层(helperAEWAWGNLayer.m).通道的输出被传递到解码器层。第一个解码器层是一个完全连接的层,有n个输入和M个输出,后面是一个ReLU层。第二层全连接层有M个输入和M个输出,后面是一个softmax层(softmaxLayer
(深度学习工具箱)),输出每个M个符号的概率。分类层(classificationLayer
(深度学习工具箱))输出从0到M-1的最可能传输的符号。
K = 4;%输入比特数M = 2^k;可能输入符号的百分比N = 7;通道使用的百分比EbNo = 3;% Eb/No in dB使用码率将Eb/No转换为通道Eb/No值R = k/n;EbNoChannel = EbNo + 10*log10(R);wirelessAutoencoder = [featureInputLayer(M,“名称”,“一个炎热的输入”,“归一化”,“没有”) fullyConnectedLayer (M,“名称”,“fc_1”) reluLayer (“名称”,“relu_1”) fullyConnectedLayer (n,“名称”,“fc_2”) helperAEWNormalizationLayer (“方法”,“能量”,“名称”,“wnorm”) helperAEWAWGNLayer (“名称”,“通道”,...“NoiseMethod”,“EbNo”,...“EbNo”EbNoChannel,...“BitsPerSymbol”,2,...每个信道符号使用的信道百分比“SignalPower”, 1) fullyConnectedLayer (M,“名称”,“fc_3”) reluLayer (“名称”,“relu_2”) fullyConnectedLayer (M,“名称”,“fc_4”) softmaxLayer (“名称”,“softmax”) classificationLayer (“名称”,“classoutput”)]
wirelessAutoencoder = 11x1层数组与层:1'单热输入'特征输入16特征2' fc_1'全连接16全连接层3' relu_1' ReLU ReLU 4' fc_2'全连接7全连接层5 'wnorm'无线归一化能量归一化层6 'channel' AWGN channel AWGN channel with EbNo = 0.56962 7 'fc_3'全连接16全连接层8 'relu_2' ReLU ReLU 9 'fc_4'全连接16全连接层10 'softmax' softmax softmax 11 'classoutput'分类输出crossentropyex
的helperAEWTrainWirelessAutoencoder.m
函数基于(n,k),归一化方法和
值。
火车Autoencoder
运行helperAEWTrainWirelessAutoencoder.m
函数训练一个能量归一化的(2,2)自编码器。此函数使用trainingOptions
(深度学习工具箱)功能选择
Adam(自适应矩估计)优化器,
初始学习率为0.08,
最大epoch为10,
小批量尺寸100*M,
drop period为5,drop factor为0.1的分段学习计划。
然后,helperAEWTrainWirelessAutoencoder.m
函数运行trainNetwork
(深度学习工具箱)函数用所选选项训练自动编码器网络。最后,该函数将网络分离为编码器和解码器部分。编码器从输入层开始,在规范化层结束。解码器从信道层开始,到分类层结束。在解码器的开头添加特征输入层。
训练自动编码器 值,低到足以导致一些错误,但又不会太低,以至于训练算法不能从接收的符号中提取任何有用的信息,y. Set 至3分贝。
N = 2;通道使用的百分比K = 2;%输入比特数EbNo = 3;% dB归一化=“能量”;%归一化“能量”|“平均功率”[txNet (1) rxNet (1) infoTemp, wirelessAutoEncoder (1)] =...helperAEWTrainWirelessAutoencoder (n, k,规范化,EbNo);infoTemp。N = N;infoTemp。K = K;infoTemp。EbNo=EbNo;infoTemp。Normalization = normalization; info = infoTemp;
绘制培训进度图。验证精度迅速达到90%以上,而验证损失持续缓慢下降。这种行为说明训练的效果 值低到足以引起一些错误,但又不至于低到避免收敛。有关验证精度和验证损失的定义,请参见监控深度学习训练进度(深度学习工具箱)部分。
图helperAEWPlotTrainingPerformance(信息(1))
使用训练好的网络对象的plot对象函数来显示全自动编码器、编码器网络(即发射机)和解码器网络(即接收机)的层图。
图tiledlayout(2,2) nexttile([2 1]) plot(wirelessAutoEncoder(1)) title(“Autoencoder”nexttile (txNet(1))“编码器/ Tx”nexttile plot(rxNet(1))“译码器/ Rx”)
模拟BLER性能
模拟(2,2)自动编码器的块错误率(BLER)性能。设置仿真参数。
simParams。EbNoVec = 0:0.5:8; simParams.MinNumErrors = 10; simParams.MaxNumFrames = 300; simParams.NumSymbolsPerFrame = 10000; simParams.SignalPower = 1;
在[0 .]中生成随机整数
-1]表示
随机信息位。将这些信息位编码成复杂的符号helperAEWEncode
函数。的helperAEWEncode
函数运行自动编码器的编码器部分,然后映射实值
向量转化为复值
使奇数和偶数元素分别映射到复符号的同相分量和正交分量的矢量,其中
.换句话说,治疗
数组作为交错的复杂数组。
通过AWGN通道传递复杂符号。解码信道受损的复杂符号helperAEWDecode
函数。下面的代码运行每种模拟
指出至少10个块错误。为了获得更准确的结果,将最小错误数增加到至少100。如果并行计算工具箱已安装且许可证可用,请取消注释parfor
行,在并行池上运行模拟。
绘制自编码器学习到的星座,与接收到的星座一起通过AWGN信道发送符号。对于(2,2)配置,自动编码器学习QPSK ( )具有相位旋转的星座。
R = k/n;EbNoChannelVec = simParams。EbNoVec + 10*log10(R);M = 2^k;txConst = com . constellationdiagram (ShowReferenceConstellation=false,...ShowLegend = true, ChannelNames = {“Tx星座”});rxConst = com . constellationdiagram (ShowReferenceConstellation=false,...ShowLegend = true, ChannelNames = {“Rx星座”});BLER = 0 (size(EbNoChannelVec));%parfor trainingEbNoIdx = 1:length(EbNoChannelVec)为trainingEbNoIdx = 1:length(EbNoChannelVec) EbNo = EbNoChannelVec(trainingEbNoIdx);chan = com . awgnchannel (“BitsPerSymbol”,2,...“EbNo”EbNo,“SamplesPerSymbol”, 1“SignalPower”1);numBlockErrors = 0;frameCnt = 0;而(numBlockErrors < simParams.MinNumErrors)...&& (frameCnt < simParams.MaxNumFrames) d = randi([0 M-1],simParams.NumSymbolsPerFrame,1);%随机信息位x = helperAEWEncode(d,txNet(1));%编码器txConst(x) y = chan(x);%的通道rxConst(y) dHat = helperAEWDecode(y,rxNet(1));%译码器numBlockErrors = numBlockErrors + sum(d ~= dHat);frameCnt = frameCnt + 1;结束BLER(trainingEbNoIdx) = numBlockErrors / (frameCnt*simParams.NumSymbolsPerFrame);结束
将结果与块长度n=2的未编码QPSK系统进行比较。对于这个n值,自动编码器得到与未编码的QPSK系统相同的BLER。
图semilogy (simParams。EbNoVec,提单,“- - -”)举行在计算未编码块错误率(R=k/n=1)pskBLER = 1-(1-berawgn(EbNoChannelVec,相移键控的2 ^ k,“nondiff”)) ^ n;semilogy (simParams。EbNoVec pskBLER,“——”)举行从Ylim ([1e-4 1])网格在包含(“E_b /当(dB)”) ylabel (“提单”)传说(sprintf (“AE (% d % d)”, n, k), sprintf (“QPSK (% d % d)”, n, k))
良好形成的星座和BLER的结果表明,训练10个epoch足以获得令人满意的收敛。
比较星座图
比较几种归一化到单位能量和单位平均功率的自编码器的学习星座。训练(2,4)自编码器归一化为单位能量。
N = 2;通道使用的百分比K = 4;%输入比特数EbNo = 9;% dB归一化=“能量”;[txNet (2), rxNet (2), infoTemp, wirelessAutoEncoder (2)] =...helperAEWTrainWirelessAutoencoder (n, k,规范化,EbNo);infoTemp。N = N;infoTemp。K = K;infoTemp。EbNo=EbNo;infoTemp。Normalization = normalization; info(2) = infoTemp;
训练(2,4)自编码器归一化到单位平均功率。
N = 2;通道使用的百分比K = 4;%输入比特数EbNo = 6;% dB归一化=“平均功率”;[txNet (3), rxNet (3), infoTemp, wirelessAutoEncoder (3)] =...helperAEWTrainWirelessAutoencoder (n, k,规范化,EbNo);infoTemp。N = N;infoTemp。K = K;infoTemp。EbNo=EbNo;infoTemp。Normalization = normalization; info(3) = infoTemp;
训练(7,4)自编码器归一化为单位能量。
N = 7;通道使用的百分比K = 4;%输入比特数EbNo = 3;% dB归一化=“能量”;[txNet (4), rxNet (4), infoTemp, wirelessAutoEncoder (4)] =...helperAEWTrainWirelessAutoencoder (n, k,规范化,EbNo);infoTemp。N = N;infoTemp。K = K;infoTemp。EbNo=EbNo;infoTemp。Normalization = normalization; info(4) = infoTemp;
元素绘制星座helperAEWPlotConstellation.m
函数。经过训练的(2,2)自编码器收敛于具有相移的QPSK星座,作为所经历的信道条件的最佳星座。能量归一化的(2,4)自编码器收敛到具有相移的16PSK星座。注意,能量归一化迫使每个符号具有单位能量,并将符号放置在单位圆上。在此约束条件下,最佳星座是符号间角距离相等的PSK星座。具有平均功率归一化的(2,4)自编码器收敛到由1-6-9符号组成的三层星座。平均功率归一化迫使符号随时间具有统一的平均功率。这种约束导致了APSK星座,这与传统的QAM或APSK方案不同。请注意,基于训练期间使用的随机初始条件,该网络配置也可以收敛到具有7-9个符号的两层星座。最后一个图显示了(7,4)自编码器在能量约束下生成的7- d星座的2-D映射。 2-D mapping is obtained using the t-Distributed Stochastic Neighbor Embedding (t-SNE) method (seetsne
(统计和机器学习工具箱)功能)。
图subplot(2,2,1) helperAEWPlotConstellation(txNet(1)) title(sprintf(”(% d % d) % s的,info(1).n,info(1).k,info(1).Normalization)) subplot(2,2,2) helperAEWPlotConstellation(txNet(2)) title(sprintf(”(% d % d) % s的,info(2).n,info(2).k,info(2).Normalization)) subplot(2,2,3) helperAEWPlotConstellation(txNet(3)) title(sprintf(”(% d % d) % s的,info(3).n,info(3).k,info(3).Normalization)) subplot(2,2,4) helperAEWPlotConstellation(txNet(4),“t-sne”)标题(sprintf (”(% d % d) % s的、信息(4).信息(4)同意,信息(4).Normalization))
比较编码QPSK和非编码QPSK自编码器的BLER性能
用QPSK调制的(7,4)汉明码模拟(7,4)自编码器的BLER性能,以实现硬决策和最大似然(ML)解码。使用未编码的(4,4)QPSK作为基线。(4,4)非编码QPSK基本上是一个QPSK调制系统,发送4位块并测量BLER。下图数据为使用helperAEWSimulateBLER.mlx而且helperAEWPrepareAutoencoders.mlx文件。
负载codedBLERResults.mat图qpsk44BLERTh = 1-(1-berawgn(simParams. fig)EbNoVec,相移键控的4“nondiff”)) ^ 4;semilogy (simParams。EbNoVec,qpsk44BLERTh,”:*’)举行在semilogy (simParams。EbNoVec qpsk44BLER,”:o ') semilogy (simParams。EbNoVec,hammingHard74BLER,——年代”) semilogy (simParams。EbNoVec ae74eBLER,“- - -”) semilogy (simParams。EbNoVec,hammingML74BLER,“- d”)举行从Ylim ([1e-5 1])网格在包含(“E_b /当(dB)”) ylabel (“提单”)传说(“理论未编码QPSK(4,4)”,'Uncoded QPSK (4,4)',《汉明(7,4)艰难抉择》,...“Autoencoder(7,4)”,“汉明(7,4)ML”,“位置”,“西南”)标题((7,4)自动编码器的BLER比较)
正如预期的那样,硬决策(7,4)汉明码与QPSK调制提供约0.6 dB 与未编码的QPSK相比,QPSK调制的(7,4)汉明码的ML解码为BLER提供了1.5 dB的优势 .(7,4)自编码器BLER的性能接近(7,4)汉明码的ML解码,当训练为3 dB时 .这种BLER性能表明,自编码器不仅能够学习调制,而且能够学习信道编码,以实现约2 dB的编码增益,编码率为R=4/7。
接下来,用未编码的QPSK系统模拟R=1的自编码器的BLER性能。使用未编码的(2,2)和(8,8)QPSK作为基线。将这些系统的BLER性能与(2,2),(4,4)和(8,8)自编码器进行比较。
负载uncodedBLERResults.matqpsk22BLERTh = 1-(1-berawgn(simParams. qpsk22BLERTh = 1-(1-berawgn)EbNoVec,相移键控的4“nondiff”)) ^ 2;semilogy (simParams。EbNoVec,qpsk22BLERTh,”:*’)举行在semilogy (simParams。EbNoVec qpsk88BLER,”——*’qpsk88BLERTh = 1-(1-berawgn(simParams。EbNoVec,相移键控的4“nondiff”)) ^ 8;semilogy (simParams。EbNoVec,qpsk88BLERTh,”:o ') semilogy (simParams。EbNoVec ae22eBLER,“o”) semilogy (simParams。EbNoVec ae44eBLER,“- d”) semilogy (simParams。EbNoVec ae88eBLER,“s”)举行从Ylim ([1e-5 1])网格在包含(“E_b /当(dB)”) ylabel (“提单”)传说(“未编码QPSK(2,2)”,'Uncoded QPSK (8,8)',“理论未编码QPSK(8,8)”,...“Autoencoder(2, 2)”,“Autoencoder(4, 4)”,“Autoencoder(8、8)”,“位置”,“西南”)标题(R=1自动编码器的BLER性能)
在(8,8)和(2,2)两种情况下,QPSK的误码率相同。然而,BLER取决于块的长度, ,并且变得更糟 增量由 .正如预期的那样,(8,8)QPSK的BLER性能比(2,2)QPSK系统差。(2,2)自动编码器的BLER性能与(2,2)QPSK的BLER性能相匹配。另一方面,(4,4)和(8,8)自编码器联合优化信道编码器和星座以获得相对于相应的未编码QPSK系统的编码增益。
训练Eb/No对BLER性能的影响
对(7,4)自编码器进行能量归一化训练 值并比较BLER性能。若要扩展BLER曲线,请设置simParams。EbNoVec到-2:0.5:8。
N = 7;K = 4;归一化=“能源”;traningEbNoVec = -3:5:7;simParams。EbNoVec = 0:4;为trainingEbNoIdx = 1:length(traningEbNoVec) trainingEbNo = traningEbNoVec(trainingEbNoIdx);[txNetVec {trainingEbNoIdx}, rxNetVec {trainingEbNoIdx}, infoVec {trainingEbNoIdx}, trainedNetVec {trainingEbNoIdx}] =...helperAEWTrainWirelessAutoencoder (n, k,规范化,trainingEbNo);% #好< SAGROW >BLERVec{trainingEbNoIdx} = helperAEWAutoencoderBLER(txNetVec{trainingEbNoIdx},rxNetVec{trainingEbNoIdx},simParams);% #好< SAGROW >结束
将BLER性能与硬决策解码汉明(7,4)码的理论上界和最大似然解码(MLD)汉明(7,4)码的模拟BLER绘制在一起。(7,4)自编码器的BLER性能与以MLD为训练的Hamming(7,4)编码更加接近 从10 dB下降到1 dB,在这一点上它几乎匹配MLD Hamming(7,4)代码。
berHamming = bercoding(simParams。EbNoVec,“汉明”,“硬”n);blerHamming = 1-(1- berhamming).^k;负载(“codedBLERResults”);图semilogy (simParams。EbNoVec blerHamming,”:k”)'(%d,%d) Hamming HDD Upper', n, k);持有在Linespec = {“- *”,“- d”,“o”,“s”};为trainingEbNoIdx=length(traningEbNoVec):-1:1 semilogy(simparam . ebnovec,BLERVec{trainingEbNoIdx},linespec{trainingEbNoIdx}) legendStr = [legendStr {sprintf('(%d,%d) AE - Training Eb/No=%1.1f',...n, k, traningEbNoVec (trainingEbNoIdx))});% #好< AGROW >结束semilogy (hammingBLER.simParams.EbNoVec hammingBLER.hammingML74BLER,“——vk”) legendStr = [legendStr {“汉明(7,4)MLD”});持有从xlim([min(simParams.EbNoVec) max(simParams.EbNoVec)]在包含(“E_b /当(dB)”) ylabel (“提单”)传说(legendStr {:},“位置”,“西南”)
结论与进一步探索
BLER的结果表明,自编码器可以以无监督的方式学习联合编码和调制方案。与传统方法相比,甚至可以训练R=1的自动编码器来获得编码增益。该示例还显示了超参数的效果,例如 BLER的性能。
使用以下默认设置进行训练和BLER模拟得到的结果:
trainParams。情节=“没有”;trainParams。Verbose = false;trainParams。米axEpochs = 10; trainParams.InitialLearnRate = 0.08; trainParams.LearnRateSchedule =“分段”;trainParams。learnRateDropPeriod = 5; trainParams.LearnRateDropFactor = 0.1; trainParams.MiniBatchSize = 100*2^k; simParams.EbNoVec = -2:0.5:8; simParams.MinNumErrors = 100; simParams.MaxNumFrames = 300; simParams.NumSymbolsPerFrame = 10000; simParams.SignalPower = 1;
改变这些参数来训练不同的自动编码器并测试它们的BLER性能。实验用不同的n, k,归一化和 值。参见帮助helperAEWTrainWirelessAutoencoder.m,helperAEWPrepareAutoencoders.mlx而且helperAEWAutoencoderBLER.m获取更多信息。
Helper函数列表
参考文献
T. O 'Shea和J. Hoydis,“物理层深度学习介绍”,载于IEEE认知通信与网络汇刊,第3卷,no. 3。4, pp. 563-575, 2017年12月,doi: 10.1109/TCCN.2017.2758370。
[2] S. Dörner, S. Cammerer, J. Hoydis和S. t. Brink,“基于深度学习的空中通信”,在IEEE信号处理专题杂志,第12卷,no。1, pp. 132-143, 2018年2月,doi: 10.1109/JSTSP.2017.2784180。
另请参阅
classificationLayer
(深度学习工具箱)|featureInputLayer
(深度学习工具箱)|fullyConnectedLayer
(深度学习工具箱)|reluLayer
(深度学习工具箱)|softmaxLayer
(深度学习工具箱)
相关的话题
- MATLAB深度学习(深度学习工具箱)