主要内容

无线通信的自动编码器

这个例子展示了如何使用自动编码器对端到端通信系统建模,以便通过无线信道可靠地传输信息位。

简介

传统的自动编码器是一个学习如何有效压缩数据的无监督神经网络,这也被称为编码。自动编码器还学习如何从压缩表示中重建数据,从而使原始数据和重构数据之间的差异最小。

传统的无线通信系统被设计成在一个信道上提供可靠的数据传输,该信道会削弱传输的信号。这些系统有多种组成部分,如信道编码、调制、均衡、同步等。每个组件都是根据数学模型独立优化的,这些数学模型经过简化,得到了闭合形式的表达式。相反,一个自动编码器联合优化发射机和接收机作为一个整体。这种联合优化有可能提供比传统系统更好的性能[1][2]

传统的自动编码器通常用于压缩图像,换句话说,去除图像中的冗余并降低其维数。另一方面,无线通信系统使用信道编码和调制技术来增加信息位的冗余。有了这种增加的冗余,系统可以恢复被无线信道损坏的信息位。因此,无线自动编码器实际上增加了冗余,并试图最小化给定信道接收信息中的错误数量,同时学习以无监督的方式应用信道编码和调制。

基本Autoencoder系统

下面是一个无线自动编码器系统的框图。编码器(发射机)首先映射 k 信息是这样的 年代 1 ... ,在那里 2 k .然后将消息s映射到n个实数来创建 x f 年代 R n .编码器的最后一层对 x 进一步限制编码的符号。以下是可能的这样的约束,并使用规范化层实现:

  • 能源约束: x 2 2 n

  • 平均功率约束: E | x | 2 1

autoencoder_v2.png

定义此系统的通信速率为 R k / n [比特/通道使用],其中(nk)表示系统发送一个 2 k 信息使用n通道使用。信道影响编码(即传输)的符号生成 y R n .解码器(即接收器)产生一个估计, 年代 ˆ ,表示所传送的讯息, 年代

输入消息被定义为一个单热向量 1 年代 R ,它被定义为一个元素都是0的向量 年代 th 一个。信道是加性高斯白噪声(AWGN),它添加噪声以实现给定的每数据位能量与噪声功率密度比, E b / N o

autoencoder地图 k 数据位成 n 信道的使用,使得有效编码率为 R k / n 每个通道使用的数据位。然后,将两个通道使用映射到一个符号中,结果是每个符号有两个通道使用。将通道使用的每个通道符号值映射到BitsPerSymbolAWGN通道参数。

定义一个具有能量归一化和训练的(7,4)自编码器网络 E b / N o 3 dB。在[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/在dB中没有使用码率将Eb/No转换为通道Eb/No值R = k / n;EbNo + 10*log10(R);无线自动编码器= [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 Layer array with layers:1' One-hot input' Feature input 16 features 2' fc_1'全连接16全连接layer 3' relu_1' ReLU ReLU 4' fc_2'全连接7全连接layer 5 'wnorm'无线归一化能量归一化layer 6 'channel' AWGN channel AWGN channel with EbNo = 0.56962 7 'fc_3'全连接16全连接layer 8 'relu_2' ReLU ReLU 9 'fc_4'全连接16全连接layer 10 'softmax' softmax softmax 11 'classoutput'分类输出crossentropyex

helperAEWTrainWirelessAutoencoder.m函数根据(n,k),归一化方法和 E b / N o 值。

火车Autoencoder

运行helperAEWTrainWirelessAutoencoder.m函数用于训练具有能量归一化的(2,2)自动编码器。此函数使用trainingOptions(深度学习工具箱)功能选择

  • Adam(自适应矩估计)优化器,

  • 初始学习率0.08,

  • 最长时间为10,

  • 100*M的小批量,

  • 跌落周期为5,跌落因子为0.1的分段学习调度。

然后,helperAEWTrainWirelessAutoencoder.m函数运行trainNetwork(深度学习工具箱)函数用所选选项训练自动编码器网络。最后,该函数将网络分为编码器和解码器两部分。编码器从输入层开始,在归一化层之后结束。解码器在信道层之后开始,在分类层结束。在解码器的开始添加一个特征输入层。

训练自动编码器 E b / N o 值,该值低到足以导致一些错误,但又不会太低,以至于训练算法无法从接收到的符号y中提取任何有用的信息 E b / N o 3 dB。

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%以上,而验证损失持续缓慢下降。这种行为说明训练 E b / N o 值低到足以引起一些误差,但又不会低到避免收敛。有关验证精度和验证损失的定义,请参见监控深度学习培训进度(深度学习工具箱)部分。

图helperAEWPlotTrainingPerformance(信息(1))

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。

使用训练过的网络对象的plot对象函数来显示全自动编码器、编码器网络(即发射机)和解码器网络(即接收机)的层图。

图tiledlayout(2,2) nexttile([2 1]) plot(wirelessAutoEncoder(1)) title(“Autoencoder”下一个图(txNet(1))“编码器/ Tx”下一个图(rxNet(1))“译码器/ Rx”

图中包含3个轴对象。带有标题Autoencoder的axis对象1包含一个graphplot类型的对象。带有标题Encoder/Tx的Axes对象2包含一个graphplot类型的对象。带有标题Decoder/Rx的Axes对象3包含一个graphplot类型的对象。

模拟提单性能

模拟(2,2)自动编码器的块错误率(BLER)性能。设置仿真参数。

simParams。EbNoVec = 0:0.5:8; simParams.MinNumErrors = 10; simParams.MaxNumFrames = 300; simParams.NumSymbolsPerFrame = 10000; simParams.SignalPower = 1;

在[0 .]中生成随机整数 -1]表示 k 随机比特的信息。将这些信息位编码成复杂的符号helperAEWEncode函数。的helperAEWEncode函数运行自动编码器的编码器部分,然后映射实值 x 向量转换成复值 x c 向量,使奇数和偶数元素分别映射到复符号的同相分量和正交分量,其中 x c x 1 2 e n d + j x 2 2 e n d .换句话说,对待 x 数组作为交错的复数组。

通过AWGN通道传递复杂符号。解码信道受损的复杂符号helperAEWDecode函数。下面的代码分别运行模拟 E b / N o 指向至少10个块错误。要获得更准确的结果,请将最小误差数增加到至少100。如果并行计算工具箱™已安装且许可证可用,取消注释parfor行,在并行池上运行模拟。

绘制由自动编码器学习到的星座,通过AWGN信道与接收到的星座一起发送符号。对于(2,2)配置,自动编码器学习QPSK ( 2 k 4 )有相位旋转的星座。

R = k / n;EbNoChannelVec = simParams。EbNoVec + 10 * log10 (R);M = 2 ^ k;txConst = comm.ConstellationDiagram (ShowReferenceConstellation = false,...ShowLegend = true, ChannelNames = {“Tx星座”});rxConst = comm.ConstellationDiagram (ShowReferenceConstellation = false,...ShowLegend = true, ChannelNames = {“Rx星座”});提单= 0(大小(EbNoChannelVec));%parfor trainingEbNoIdx = 1:length(EbNoChannelVec)trainingEbNoIdx = 1:length(EbNoChannelVec) EbNo = EbNoChannelVec(trainingEbNoIdx);陈= comm.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,“——”)举行1 ylim([1]的军医)网格包含(“E_b /当(dB)”) ylabel (“提单”)传说(sprintf (“AE (% d % d)”, n, k), sprintf (“QPSK (% d % d)”, n, k))

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。这些对象代表AE (2,2), QPSK(2,2)。

形成良好的星座和BLER结果表明,训练10期足以得到满意的收敛。

比较星座图

比较几种归一化到单位能量和单位平均功率的自编码器的学习星座。训练(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 mapping is obtained using the t-Distributed Stochastic Neighbor Embedding (t-SNE) method (seetsne(统计和机器学习工具箱)功能)。

图subplot(2,2,1) helperAEWPlotConstellation(txNet(1)) title(sprintf(1))”(% 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的、信息(3).信息(3)同意,信息(3).Normalization)次要情节(2,2,4)helperAEWPlotConstellation (txNet (4),“t-sne”)标题(sprintf (”(% d % d) % s的、信息(4).信息(4)同意,信息(4).Normalization))

图中包含4个轴对象。标题为(2,2)的axis对象1 Energy包含一个类型为line的对象。axis对象2的标题(2,4)Energy包含一个类型为line的对象。平均功率包含一个类型为line的对象。标题为(7,4)的axis对象4包含16个类型为line的对象。

比较编码和非编码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)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网格([1 e-5 1])包含(“E_b /当(dB)”) ylabel (“提单”)传说(“理论非编码QPSK(4,4)”“未编码的QPSK(4, 4)”《汉明(7,4)艰难抉择》...“Autoencoder(7,4)”“汉明(7,4)毫升”“位置”“西南”)标题('(7,4)自动编码器的BLER比较'

图中包含一个axes对象。标题为(7,4)Autoencoder的BLER比较的axes对象包含5个类型为line的对象。这些对象代表理论非编码QPSK(4,4),非编码QPSK(4,4),汉明(7,4)硬决策,自动编码器(7,4),汉明(7,4)ML。

正如预期的那样,硬决策(7,4)汉明码与QPSK调制提供约0.6 dB E b / N o 相比未编码的QPSK, QPSK调制的(7,4)汉明码的ML解码为的BLER提供了1.5 dB的优势 1 0 - 3. .当用3 dB训练时,(7,4)自动编码器BLER的性能接近(7,4)汉明码的ML解码 E b / N o .这种BLER性能表明,该自动编码器不仅能够学习调制,而且能够学习信道编码,在编码率为R=4/7的情况下,实现约2 dB的编码增益。

接下来,用非编码QPSK系统模拟R=1的自动编码器的BLER性能。使用未编码的(2,2)和(8,8)QPSK作为基线。将这些系统的BLER性能与(2,2),(4,4)和(8,8)自动编码器进行比较。

负载uncodedBLERResults.matqpsk22BLERTh = 1 - (1-berawgn (simParams。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网格([1 e-5 1])包含(“E_b /当(dB)”) ylabel (“提单”)传说(“未编码的QPSK(2, 2)”“未编码的QPSK(8、8)”“理论非编码QPSK(8,8)”...“Autoencoder(2, 2)”“Autoencoder(4, 4)”“Autoencoder(8、8)”“位置”“西南”)标题(' R=1自动编码器的BLER性能'

图中包含一个axes对象。具有标题BLER性能的R=1 Autoencoders的axes对象包含6个类型为line的对象。这些对象表示非编码QPSK(2,2),非编码QPSK(8,8),理论非编码QPSK(8,8),自动编码器(2,2),自动编码器(4,4),自动编码器(8,8)。

在(8,8)和(2,2)情况下,QPSK的误码率是相同的。然而,BLER取决于块长度, n ,然后变得更糟 n 增加由 B l E R 1 - 1 - B E R n .正如预期的那样,(8,8)QPSK的BLER性能比(2,2)QPSK系统差。(2,2)自动编码器的BLER性能与(2,2)QPSK的BLER性能相匹配。另一方面,(4,4)和(8,8)自编码器联合优化信道编码器和星座,以获得相对于相应的未编码QPSK系统的编码增益。

训练Eb/No对BLER性能的影响

对(7,4)自编码器进行能量归一化训练 E b / N o 值,并比较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 >结束

绘制硬决策解码汉明(7,4)码的BLER性能与理论上界以及最大似然解码(MLD)汉明(7,4)码的模拟BLER。以MLD作为训练的(7,4)自编码器的BLER性能更接近于Hamming(7,4)码 E b / N o 从10 dB下降到1 dB,在这一点上它几乎匹配MLD Hamming(7,4)代码。

berHamming = bercoding (simParams。EbNoVec,“汉明”“硬”n);blerHamming = 1 - (1-berHamming)。^ k;hammingBLER =负载(“codedBLERResults”);图semilogy (simParams。EbNoVec blerHamming,”:k”) legendStr = sprintf('(%d,%d) Hamming HDD Upper', n, k);持有linespec = {“- *”“- d”“o”“s”};trainingEbNoIdx=length(traningEbNoVec):-1:1 semilogy(simParams.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”)传奇str =[传奇str {“汉明(7,4)MLD”});持有xlim ([min (simParams.EbNoVec)马克斯(simParams.EbNoVec)])网格包含(“E_b /当(dB)”) ylabel (“提单”)传说(legendStr {:},“位置”“西南”

图中包含一个axes对象。axis对象包含5个类型为line的对象。这些对象代表(7,4)Hamming HDD Upper, (7,4) AE - Training Eb/No=7.0, (7,4) AE - Training Eb/No=2.0, (7,4) AE - Training Eb/No=-3.0, Hamming (7,4) MLD。

结论与进一步探索

BLER的结果表明,自动编码器可以以无监督的方式学习联合编码和调制方案。与传统方法相比,它甚至可以训练R=1的自动编码器来获得编码增益。该示例还显示了超参数的效果,例如 E b / N o 对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,归一化和 E b / N o 值。参见帮助helperAEWTrainWirelessAutoencoder.mhelperAEWPrepareAutoencoders.mlx而且helperAEWAutoencoderBLER.m为更多的信息。

辅助函数列表

参考文献

T. O 'Shea和J. Hoydis,“面向物理层的深度学习导论”,载于《IEEE认知通信与网络汇刊》,第3卷第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。

另请参阅

(深度学习工具箱)|(深度学习工具箱)|(深度学习工具箱)|(深度学习工具箱)|(深度学习工具箱)

相关的话题

Baidu
map