主要内容

神经网络对梁的选择

这个例子展示了如何使用一个神经网络来减少开销在波束选择的任务。在这个例子中,您仅使用接收器的位置,而不是知识的沟通渠道。而不是一个详尽的定向搜索所有梁双,你可以减少光束扫开销通过搜索中选择 K 梁对。考虑系统共有16梁对仿真结果在这个例子中展示设计的机器学习算法可以实现90%的准确性通过执行一个详尽的搜索在只有一半的梁对。

介绍

使毫米波(mmWave)通信、梁必须使用管理技术由于pathloss较高和堵塞在高频率。梁管理是一组图层1(物理层)和2(介质访问控制)层程序建立和保持一个最佳的梁副(传输光束和相应接收光束)连接好(1]。模拟5 g的新收音机(NR)梁管理程序,看到NR单边带束扫(5 g工具箱)使用CSI-RS NR下行发送端梁细化(5 g工具箱)的例子。

这个例子考虑梁的选择程序,当一个用户设备(UE)之间建立连接和访问网络节点(gNB)。5 g NR,梁选拔程序首次访问由梁席卷,这需要详尽的搜索所有光束发射器和接收器,然后选择梁副提供最有力的参考信号接收功率(RSRP)。因为mmWave通信需要许多天线元素,这意味着许多光束,一个详尽的搜索在所有光束成为计算昂贵,增加初始访问时间。

为了避免重复执行一个详尽的搜索和减少通信开销,机器学习应用于波束选择的问题。通常情况下,梁的选择问题是冒充一个分类任务,目标输出是最好的梁副指数。外在的信息,包括激光雷达、GPS信号,和路边摄像机图像,作为机器学习算法的输入(2]- [6]。具体地说,鉴于这种带外信息,推荐一组训练的机器学习模型 K 梁对好。而不是一个详尽的搜索所有梁双模拟光束扫开销减少了只搜索中选择 K 梁对。

这个示例使用神经网络进行波束选择只使用接收者的GPS坐标。修复发射机的位置和散射,生成一组训练样本的例子:每个样本由接收机定位(GPS数据)和真正的最优波束对指数(发现进行详尽的搜索在所有光束对发送和接收结束)。示例的设计和训练一个神经网络,使用接收器的位置作为输入和真正的最优波束对索引作为正确的标签。首先在测试阶段,神经网络输出 K 梁对好。一个详尽的搜索这些 K 梁双之后,梁副最高的平均RSRP选为最终的梁对预测的神经网络。

示例措施的有效性提出了方法使用两个指标:平均RSRP和最高K精度(2]- [6]。这个图展示了主要的处理步骤。

beamSelectionSchematic.png

rng (211);%设置RNG状态可重复性

生成的训练数据

在预先录制的数据中,接收器是随机分布在6米平方的周长,配置了16梁双(四梁两端,模拟beamformed 1射频链)。后设置一个MIMO散射通道,认为200年的例子不同的接收机位置在训练集和100年不同的接收机位置在测试集。预录的数据使用二维位置坐标。具体来说,每个样本的第三个GPS坐标永远是零。就像在NR单边带束扫例子中,对于每一个位置,SSB-based梁全面执行一个详尽的搜索在所有16梁双。自从AWGN添加在穷举搜索,对于每个位置,例子运行四个不同的试验并确定真正的最优波束对通过选择最高的梁副RSRP平均水平。

生成新的训练集和测试集,您可以调整useSavedDataSaveData逻辑值。请注意,重新生成数据时需要花费大量的时间。

useSavedData = true;saveData = false;如果useSavedData负载nnBS_prm.mat;%负载梁选择系统参数负载nnBS_TrainingData.mat;%加载预先录好的训练样本%(输入:接收机的位置;输出:最优波束配对指数)负载nnBS_TestData.mat;%加载预先录制的测试样品其他的

配置频率和梁全面角度

人口、难民和移民事务局。NCellID = 1;%细胞ID人口、难民和移民事务局。FreqRange =“FR1”;%频率范围:“FR1”或“FR2”人口、难民和移民事务局。CenterFreq = 2.5 e9;%赫兹人口、难民和移民事务局。SSBlockPattern =“案例B”;%例A / B / C / D / E人口、难民和移民事务局。SSBTransmitted = [1 (1、4) 0 (1,0)];% 4/8或64的长度人口、难民和移民事务局。TxArraySize = [8];%传输数组大小,行关口人口、难民和移民事务局。TxAZlim = (-163 - 177);%传送方位扫描限制人口、难民和移民事务局。TxELlim = (-90 0);%发射仰角扫描限制人口、难民和移民事务局。RxArraySize = (2 - 2);%接收数组大小,行关口人口、难民和移民事务局。RxAZlim = (-177 - 157);%接收方位扫描限制人口、难民和移民事务局。RxELlim = [0 90];%接收仰角扫描限制人口、难民和移民事务局。ElevationSweep = false;%启用/禁用仰角扫描人口、难民和移民事务局。SNRdB = 30;%信噪比,dB人口、难民和移民事务局。RSRPMode =“SSSwDMRS”;% {‘SSSwDMRS’,‘SSSonly}人口、难民和移民事务局= validateParams(人口、难民和移民事务局);

同步信号破裂配置

txBurst = nrWavegenSSBurstConfig;txBurst。BlockPattern = prm.SSBlockPattern;txBurst。TransmittedBlocks = prm.SSBTransmitted;txBurst。时间= 20;txBurst。SubcarrierSpacingCommon = prm.SubcarrierSpacingCommon;

散射体配置

c = physconst (“光速”);%传播速度人口、难民和移民事务局。λ= c / prm.CenterFreq;%的波长人口、难民和移民事务局。rightCoorMax = 10;%最大坐标人口、难民和移民事务局。topCoorMax = 10;%最大坐标人口、难民和移民事务局。posTx = (3.5, 4.2, 0);%传送阵位置,[x, y, z],米%散射体的位置%产生散射随机位置Nscat = 10;%的散射azRange = prm.TxAZlim (1): prm.TxAZlim (2);elRange = 90:90;%更均匀间隔的散射randAzOrder =圆(linspace(1、长度(azRange) Nscat));azAngInSph = azRange (randAzOrder (1: Nscat));%考虑二维区域,即。,the elevation angle is zeroelAngInSph = 0(大小(azAngInSph));r = 2;%半径[x, y, z] = sph2cart(函数(azAngInSph),函数(elAngInSph), r);人口、难民和移民事务局。ScatPos = [x, y, z] + [prm.rightCoorMax / 2; prm.topCoorMax / 2 0];

天线阵列的配置

%传输数组如果prm.IsTxURA%均匀矩形阵列arrayTx = phased.URA (0.5 * prm.lambda prm.TxArraySize,“元素”phased.IsotropicAntennaElement (“BackBaffled”,真的));其他的%均匀线性阵列arrayTx = phased.ULA (prm.NumTx,“ElementSpacing”0.5 * prm.lambda“元素”phased.IsotropicAntennaElement (“BackBaffled”,真的));结束%接收数组如果prm.IsRxURA%均匀矩形阵列arrayRx = phased.URA (0.5 * prm.lambda prm.RxArraySize,“元素”,phased.IsotropicAntennaElement);其他的%均匀线性阵列arrayRx = phased.ULA (prm.NumRx,“ElementSpacing”0.5 * prm.lambda“元素”,phased.IsotropicAntennaElement);结束

确定Tx / Rx的位置

%接收地点%训练数据:X点在一个矩形:每一方都随机点X / 4% X: X / 4平方左右,10 X /验证模块(10)= = > 20最小NDiffLocTrain = 200;pointsEachSideTrain = NDiffLocTrain / 4;人口、难民和移民事务局。NDiffLocTrain = NDiffLocTrain;locationX = 2 * 1 (pointsEachSideTrain, 1);locationY = 2 +(8 - 2) *兰德(pointsEachSideTrain, 1);locationX = [locationX;2 +(8 - 2)*兰德(pointsEachSideTrain, 1)];locationY = [locationY;8 * 1 (pointsEachSideTrain 1)]; locationX = [locationX; 8*ones(pointsEachSideTrain, 1)]; locationY = [locationY; 2 + (8-2)*rand(pointsEachSideTrain, 1)]; locationX = [locationX; 2 + (8-2)*rand(pointsEachSideTrain, 1)]; locationY = [locationY; 2*ones(pointsEachSideTrain, 1)]; locationZ = zeros(size(locationX)); locationMat = [locationX locationY locationZ];%确定接收机的位置,重复运行模拟需要考虑%不同的情况下实现人口、难民和移民事务局。NRepeatSameLoc = 4;人口、难民和移民事务局locationMatTrain = repelem (locationMat。NRepeatSameLoc, 1);%测试数据:Y点在一个矩形:每一方都随机点Y / 4比测试%不同的数据,但是一个更小的数字NDiffLocTest = 100;pointsEachSideTest = NDiffLocTest / 4;人口、难民和移民事务局。NDiffLocTest = NDiffLocTest;locationX = 2 * 1 (pointsEachSideTest, 1);locationY = 2 +(8 - 2) *兰德(pointsEachSideTest, 1);locationX = [locationX;2 +(8 - 2)*兰德(pointsEachSideTest, 1)];locationY = [locationY;8 * 1 (pointsEachSideTest 1)]; locationX = [locationX; 8*ones(pointsEachSideTest, 1)]; locationY = [locationY; 2 + (8-2)*rand(pointsEachSideTest, 1)]; locationX = [locationX; 2 + (8-2)*rand(pointsEachSideTest, 1)]; locationY = [locationY; 2*ones(pointsEachSideTest, 1)]; locationZ = zeros(size(locationX)); locationMat = [locationX locationY locationZ]; locationMatTest = repelem(locationMat,prm.NRepeatSameLoc,1); [optBeamPairIdxMatTrain,rsrpMatTrain] = hGenDataMIMOScatterChan(“培训”人口、难民和移民事务局,locationMatTrain txBurst、arrayTx arrayRx, 311);[optBeamPairIdxMatTest, rsrpMatTest] = hGenDataMIMOScatterChan (“测试”人口、难民和移民事务局,locationMatTest txBurst、arrayTx arrayRx, 411);%保存生成的数据如果saveData保存(“nnBS_prm.mat”,人口、难民和移民事务局的);保存(“nnBS_TrainingData.mat”,“optBeamPairIdxMatTrain”,“rsrpMatTrain”,“locationMatTrain”);保存(“nnBS_TestData.mat”,“optBeamPairIdxMatTest”,“rsrpMatTest”,“locationMatTest”);结束结束

情节发射机和散射体的位置

图散射(prm.posTx (1) prm.posTx(2), 100年,“r ^”,“填充”);持有;:散射(prm.ScatPos (1), prm.ScatPos (2:), 100, (0.9290 0.6940 0.1250),“年代”,“填充”);xlim (10 [0]) ylim([0 10])标题(“发射机和散射位置”)传说(“发射器”,“散射”)包含(“x (m)”)ylabel (“y (m)”)

图包含一个坐标轴对象。坐标轴对象标题发射机和散射位置,包含x (m), ylabel y (m)包含2散射类型的对象。这些对象代表发射机,散射。

数据处理和可视化

接下来,标签梁对最高的平均RSRP真正的最优波束。一个炎热的编码标签转换为分类数据用于分类。最后,增加16类的分类数据,以便匹配可能数量的梁总对类(尽管可能不平等数量的元素)。的增加是确保输出神经网络具有所需的尺寸16。

过程的训练数据

%选择最好的梁副RSRP通过选择最高的平均水平%(以平均超过NRepeatSameLoc不同试验在每个位置)avgOptBeamPairIdxCellTrain =细胞(大小(optBeamPairIdxMatTrain 1) /人口、难民和移民事务局。NRepeatSameLoc, 1);avgOptBeamPairIdxScalarTrain = 0(大小(optBeamPairIdxMatTrain 1) /人口、难民和移民事务局。NRepeatSameLoc, 1);locIdx = 1:尺寸(optBeamPairIdxMatTrain, 1) /人口、难民和移民事务局。NRepeatSameLoc avgRsrp =挤压(rsrpMatTrain (:,:, locIdx));[~,targetBeamIdx] = max (avgRsrp (:));avgOptBeamPairIdxScalarTrain (locIdx) = targetBeamIdx;avgOptBeamPairIdxCellTrain {locIdx} = num2str (targetBeamIdx);结束%虽然总共有16个梁对,由于固定拓扑%(发射机/散射/接收机位置),它是可能的%,一些梁双从来没有被选为最优波束%%因此,我们增加类别16类总在数据%(虽然有些课程可能有零个元素)allBeamPairIdxCell = cellstr(字符串((1:prm.numBeams ^ 2) '));avgOptBeamPairIdxCellTrain =分类(avgOptBeamPairIdxCellTrain allBeamPairIdxCell);NBeamPairInTrainData =元素个数(类别(avgOptBeamPairIdxCellTrain));%应该是16

处理测试数据

%决定最好的梁副RSRP挑选最高的avgavgOptBeamPairIdxCellTest =细胞(大小(optBeamPairIdxMatTest 1) /人口、难民和移民事务局。NRepeatSameLoc, 1);avgOptBeamPairIdxScalarTest = 0(大小(optBeamPairIdxMatTest 1) /人口、难民和移民事务局。NRepeatSameLoc, 1);locIdx = 1:尺寸(optBeamPairIdxMatTest, 1) /人口、难民和移民事务局。NRepeatSameLoc avgRsrp =挤压(rsrpMatTest (:,:, locIdx));[~,targetBeamIdx] = max (avgRsrp (:));avgOptBeamPairIdxScalarTest (locIdx) = targetBeamIdx;avgOptBeamPairIdxCellTest {locIdx} = num2str (targetBeamIdx);结束%增加类别的数据有16个类avgOptBeamPairIdxCellTest =分类(avgOptBeamPairIdxCellTest allBeamPairIdxCell);NBeamPairInTestData =元素个数(类别(avgOptBeamPairIdxCellTest));%应该是16

建立神经网络的输入/输出数据

trainDataLen = (locationMatTrain 1) / prm.NRepeatSameLoc大小;trainOut = avgOptBeamPairIdxCellTrain;sampledLocMatTrain = locationMatTrain(1:人口、难民和移民事务局。NRepeatSameLoc:最终,);trainInput = sampledLocMatTrain (1: trainDataLen,:);% 10%数据测试数据作为验证数据valTestDataLen = (locationMatTest 1) / prm.NRepeatSameLoc大小;valDataLen =圆(0.1 *大小(locationMatTest, 1)) / prm.NRepeatSameLoc;testDataLen = valTestDataLen-valDataLen;%随机洗牌等测试数据的分布%提取验证数据更接近测试数据rng (111) shuffledIdx = randperm (prm.NDiffLocTest);avgOptBeamPairIdxCellTest = avgOptBeamPairIdxCellTest (shuffledIdx);avgOptBeamPairIdxScalarTest = avgOptBeamPairIdxScalarTest (shuffledIdx);rsrpMatTest = rsrpMatTest (:,:, shuffledIdx);valOut = avgOptBeamPairIdxCellTest (1: valDataLen,:);testOutCat = avgOptBeamPairIdxCellTest (1 + valDataLen:最终,);sampledLocMatTest = locationMatTest(1:人口、难民和移民事务局。NRepeatSameLoc:最终,);sampledLocMatTest = sampledLocMatTest (shuffledIdx:);valInput = sampledLocMatTest (1: valDataLen,:);testInput = sampledLocMatTest (valDataLen + 1:最终,);

情节最优波束对训练数据的分布

情节的位置和最优波束对每个训练样本(200)。每一种颜色代表一个梁双指数。换句话说,相同颜色的数据点属于同一类。增加训练数据集可能包括每个梁副值,但实际分布的光束对将取决于散射体和发射机的位置。

图rng (111)%的颜色阴谋颜色=兰德(NBeamPairInTrainData, 3);uniqueOptBeamPairIdx =独特(avgOptBeamPairIdxScalarTrain);n = 1:长度(uniqueOptBeamPairIdx) beamPairIdx =找到(avgOptBeamPairIdxScalarTrain = = uniqueOptBeamPairIdx (n));locX = sampledLocMatTrain (beamPairIdx, 1);机车= sampledLocMatTrain (beamPairIdx 2);散射(locX机车,[],颜色(n,:));持有;结束散射(prm.posTx (1) prm.posTx(2), 100年,“r ^”,“填充”);:散射(prm.ScatPos (1), prm.ScatPos (2:), 100, (0.9290 0.6940 0.1250),“年代”,“填充”);持有包含(“x (m)”)ylabel (“y (m)”10)xlim ([0]) ylim([0 10])标题(“最优波束对指数(训练数据)”)

图包含一个坐标轴对象。坐标轴对象与标题优化梁双指数(训练数据),包含x (m), ylabel y (m)包含18个散射类型的对象。

图直方图(trainOut)标题(柱状图的最优波束对指数(训练数据))包含(“梁双指数”)ylabel (出现的数量)

图包含一个坐标轴对象。标题优化梁的柱状图的坐标轴对象对指数(训练数据),包含梁双指数ylabel出现包含一个categoricalhistogram类型的对象的数量。

情节最优波束对验证数据的分布

图rng (111)%的颜色阴谋颜色=兰德(NBeamPairInTestData, 3);uniqueOptBeamPairIdx =独特(avgOptBeamPairIdxScalarTest (1: valDataLen));n = 1:长度(uniqueOptBeamPairIdx) beamPairIdx =找到(avgOptBeamPairIdxScalarTest (1: valDataLen) = = uniqueOptBeamPairIdx (n));locX = sampledLocMatTest (beamPairIdx, 1);机车= sampledLocMatTest (beamPairIdx 2);散射(locX机车,[],颜色(n,:));持有;结束散射(prm.posTx (1) prm.posTx(2), 100年,“r ^”,“填充”);:散射(prm.ScatPos (1), prm.ScatPos (2:), 100, (0.9290 0.6940 0.1250),“年代”,“填充”);持有包含(“x (m)”)ylabel (“y (m)”10)xlim ([0]) ylim([0 10])标题(“最优波束对指数(验证数据)”)

图包含一个坐标轴对象。坐标轴对象与标题优化梁双指数(验证数据),包含x (m), ylabel y (m)包含9散射类型的对象。

图直方图(valOut)标题(柱状图的最优波束对指数(验证数据))包含(“梁双指数”)ylabel (出现的数量)

图包含一个坐标轴对象。标题优化梁的柱状图的坐标轴对象对指数(验证数据),包含梁双指数ylabel出现包含一个categoricalhistogram类型的对象的数量。

情节最优波束对分布测试数据

图rng (111)%的颜色块颜色=兰德(NBeamPairInTestData, 3);uniqueOptBeamPairIdx =独特(avgOptBeamPairIdxScalarTest (1 + valDataLen:结束));n = 1:长度(uniqueOptBeamPairIdx) beamPairIdx =找到(avgOptBeamPairIdxScalarTest (1 + valDataLen:结束)= = uniqueOptBeamPairIdx (n));locX = sampledLocMatTest (beamPairIdx, 1);机车= sampledLocMatTest (beamPairIdx 2);散射(locX机车,[],颜色(n,:));持有;结束散射(prm.posTx (1) prm.posTx(2), 100年,“r ^”,“填充”);:散射(prm.ScatPos (1), prm.ScatPos (2:), 100, (0.9290 0.6940 0.1250),“年代”,“填充”);持有包含(“x (m)”)ylabel (“y (m)”10)xlim ([0]) ylim([0 10])标题(的最优波束对指数(测试数据))

图包含一个坐标轴对象。坐标轴对象与标题优化梁双指数(测试数据),包含x (m), ylabel y (m)包含16个散射类型的对象。

图直方图(testOutCat)标题(柱状图的最优波束对指数(测试数据))包含(“梁双指数”)ylabel (出现的数量)

图包含一个坐标轴对象。标题优化梁的柱状图的坐标轴对象对指数(测试数据),包含梁双指数ylabel出现包含一个categoricalhistogram类型的对象的数量。

设计和训练神经网络

有四个隐藏层的神经网络进行训练。设计是出于3)(四个隐藏层)和(5)(128年两个隐藏层神经元在每一层)接收机的位置也被认为是作为神经网络的输入。使培训,调整doTraining合乎逻辑的。

这个例子还提供了一个选项来重量的类。类发生更频繁发生的较小的权重和类少经常有更大的权重。使用类权重调整useDiffClassWeights合乎逻辑的。

修改网络尝试不同的设计。如果你修改一个数据集提供的,你必须重新培训网络和修改后的数据集。培训网络需要大量的时间。调整saveNet在随后的运行逻辑使用训练网络。

doTraining = false;useDiffClassWeights = false;saveNet = false;如果doTraining如果useDiffClassWeights catCount = countcats (trainOut);catFreq = catCount /长度(trainOut);nnzIdx = (catFreq ~ = 0);medianCount =值(catFreq (nnzIdx));classWeights = 10 *的(大小(catFreq));classWeights (nnzIdx) = medianCount. / catFreq (nnzIdx);文件名=“nnBS_trainedNetwWeighting.mat”;其他的NBeamPairInTestData classWeights = 1 (1);文件名=“nnBS_trainedNet.mat”;结束%的神经网络设计层= [featureInputLayer (3“名字”,“输入”,“归一化”,“rescale-zero-one”)fullyConnectedLayer (96,“名字”,“linear1”)leakyReluLayer (0.01,“名字”,“leakyRelu1”)fullyConnectedLayer (96,“名字”,“linear2”)leakyReluLayer (0.01,“名字”,“leakyRelu2”)fullyConnectedLayer (96,“名字”,“linear3”)leakyReluLayer (0.01,“名字”,“leakyRelu3”)fullyConnectedLayer (96,“名字”,“linear4”)leakyReluLayer (0.01,“名字”,“leakyRelu4”)fullyConnectedLayer (NBeamPairInTrainData“名字”,“linear5”)softmaxLayer (“名字”,“softmax”)classificationLayer (“ClassWeights”classWeights,“类”allBeamPairIdxCell,“名字”,“输出”));maxEpochs = 1000;miniBatchSize = 256;选择= trainingOptions (“亚当”,“MaxEpochs”maxEpochs,“MiniBatchSize”miniBatchSize,“InitialLearnRate”1的军医,“ValidationData”{valInput, valOut},“ValidationFrequency”,500,“OutputNetwork”,“best-validation-loss”,“洗牌”,“every-epoch”,“阴谋”,“训练进步”,“ExecutionEnvironment”,“cpu”,“详细”,0);%训练网络网= trainNetwork (trainInput、trainOut层,选择);如果saveNet保存(文件名,“净”);结束其他的如果useDiffClassWeights负载“nnBS_trainedNetwWeighting.mat”;其他的负载“nnBS_trainedNet.mat”;结束结束

比较不同的方法:-K精度

本节测试用看不见的测试数据训练网络考虑top-K精度指标。top-K精度指标已广泛应用于神经网络梁选择任务(2]- [6]。

首先给定一个接收器的位置,神经网络输出 K 推荐梁对。然后执行一个详尽的顺序搜索这些 K 梁双并选择最高的平均RSRP作为最终的预测。如果真正的最优波束对最终选定梁,然后成功的预测发生。同样,成功发生在真正的最优波束是其中一个 K 推荐梁对神经网络。

三个基准进行比较。每个计划生产 K 推荐梁对。

  1. 然而——一个测试样本,这种方法首先收集 K 基于GPS坐标最近的训练样本。然后建议所有的梁方法对与这些有关 K 训练样本。因为每个训练样本有一个对应的最优梁,梁对推荐的数量最多 K (一些梁对可能是相同的)。

  2. 统计信息(5)——这种方法首先梁对排名根据他们的训练集的相对频率,然后总是选择第一个 K 梁对。

  3. 随机(5)——一个测试样本,该方法随机选择 K 梁对。

图显示 K = 8 准确性已经超过90%,这突显出的有效性使用波束选择的神经网络训练的任务。当 K = 1 6 ,每个方案(除了资讯是放松在所有16个梁对穷举搜索,从而达到100%的精度。然而,当 K = 1 6 , 然而,认为16最近的训练样本,数量截然不同的梁对从这些样本通常小于16。因此,然而,并没有达到100%的精度。

rng (111)%的重复性“随机”的政策testOut = avgOptBeamPairIdxScalarTest (1 + valDataLen:最终,);statisticCount = countcats (testOutCat);testInput predTestOutput =预测(净,“ExecutionEnvironment”,“cpu”);K = prm.numBeams ^ 2;accNeural = 0 (1、K);accKNN = 0 (1、K);accStatistic = 0 (1、K);accRandom = 0 (1、K);k = 1: k predCorrectNeural = 0 (testDataLen, 1);predCorrectKNN = 0 (testDataLen, 1);predCorrectStats = 0 (testDataLen, 1);predCorrectRandom = 0 (testDataLen, 1);knnIdx = knnsearch (trainInput testInput,“K”、k);n = 1: testDataLen trueOptBeamIdx = testOut (n);%的神经网络[~,topKPredOptBeamIdx] = maxk (predTestOutput (n:), k);如果总和(topKPredOptBeamIdx = = trueOptBeamIdx) > 0%如果这是真的,那么真正的正确指数属于K预测指标之一predCorrectNeural (n - 1) = 1;结束%资讯:neighborsIdxInTrainData = knnIdx (n);topKPredOptBeamIdx = avgOptBeamPairIdxScalarTrain (neighborsIdxInTrainData);如果总和(topKPredOptBeamIdx = = trueOptBeamIdx) > 0%如果这是真的,那么真正的正确指数属于K预测指标之一predCorrectKNN (n - 1) = 1;结束%的统计信息[~,topKPredOptBeamIdx] = maxk (statisticCount k);如果总和(topKPredOptBeamIdx = = trueOptBeamIdx) > 0%如果这是真的,那么真正的正确指数属于K预测指标之一predCorrectStats (n - 1) = 1;结束%随机topKPredOptBeamIdx = randperm (prm.numBeams * prm.numBeams k);如果总和(topKPredOptBeamIdx = = trueOptBeamIdx) > 0%如果这是真的,那么真正的正确指数属于K预测指标之一predCorrectRandom (n - 1) = 1;结束结束accNeural (k) = (predCorrectNeural) / testDataLen总和* 100;accKNN (k) = (predCorrectKNN) / testDataLen总和* 100;accStatistic (k) = (predCorrectStats) / testDataLen总和* 100;accRandom (k) = (predCorrectRandom) / testDataLen总和* 100;结束图线宽= 1.5;colorNeural = 0.4470 - 0.7410 [0];colorKNN = (0.8500 0.3250 0.0980);colorStats = (0.4940 0.1840 0.5560);colorRandom = (0.4660 0.6740 0.1880);阴谋(1:K accNeural”——*’,“线宽”线宽,“颜色”colorNeural)举行阴谋(1:K accKNN“- o”,“线宽”线宽,“颜色”colorKNN)阴谋(1:K accStatistic——年代”,“线宽”线宽,“颜色”colorStats)阴谋(1:K accRandom“- d”,“线宽”线宽,“颜色”colorRandom)举行网格xticks (1: K)包含(“K美元”,“翻译”,“乳胶”)ylabel (“前K美元准确性”,“翻译”,“乳胶”)标题(不同的光束对选择方案的性能比较)传说(“神经网络”,“资讯”,的统计信息,“随机”,“位置”,“最佳”)

图包含一个坐标轴对象。坐标轴对象标题不同梁对选择方案的性能比较,包含$ K美元,ylabel - K美元精度包含4线类型的对象。这些对象代表了神经网络,然而,统计信息,随机的。

比较不同的方法:平均RSRP

用看不见的测试数据,计算出平均RSRP通过神经网络和三个基准。情节中使用神经网络训练结果表明,平均RSRP接近最优详尽的搜索。

rng (111)%的重复性“随机”的政策K = prm.numBeams ^ 2;rsrpOptimal = 0 (1、K);rsrpNeural = 0 (1、K);rsrpKNN = 0 (1、K);rsrpStatistic = 0 (1、K);rsrpRandom = 0 (1、K);k = 1: k rsrpSumOpt = 0;rsrpSumNeural = 0;rsrpSumKNN = 0;rsrpSumStatistic = 0;rsrpSumRandom = 0;knnIdx = knnsearch (trainInput testInput,“K”、k);n = 1: testDataLen%穷举搜索trueOptBeamIdx = testOut (n);rsrp = rsrpMatTest (:,:, valDataLen + n);rsrpSumOpt = rsrpSumOpt + rsrp (trueOptBeamIdx);%的神经网络[~,topKPredOptCatIdx] = maxk (predTestOutput (n:), k);rsrpSumNeural = rsrpSumNeural + max (rsrp (topKPredOptCatIdx));%资讯:neighborsIdxInTrainData = knnIdx (n);topKPredOptBeamIdxKNN = avgOptBeamPairIdxScalarTrain (neighborsIdxInTrainData);rsrpSumKNN = rsrpSumKNN + max (rsrp (topKPredOptBeamIdxKNN));%的统计信息[~,topKPredOptCatIdxStat] = maxk (statisticCount k);rsrpSumStatistic = rsrpSumStatistic + max (rsrp (topKPredOptCatIdxStat));%随机topKPredOptBeamIdxRand = randperm (prm.numBeams * prm.numBeams k);rsrpSumRandom = rsrpSumRandom + max (rsrp (topKPredOptBeamIdxRand));结束rsrpOptimal (k) = rsrpSumOpt / testDataLen / prm.NRepeatSameLoc;rsrpNeural (k) = rsrpSumNeural / testDataLen / prm.NRepeatSameLoc;rsrpKNN (k) = rsrpSumKNN / testDataLen / prm.NRepeatSameLoc;rsrpStatistic (k) = rsrpSumStatistic / testDataLen / prm.NRepeatSameLoc;rsrpRandom (k) = rsrpSumRandom / testDataLen / prm.NRepeatSameLoc;结束图线宽= 1.5;阴谋(1:K rsrpOptimal“——h”,“线宽”线宽,“颜色”[0.6350 0.0780 0.1840]);持有阴谋(1:K rsrpNeural”——*’,“线宽”线宽,“颜色”colorNeural)阴谋(1:K rsrpKNN“- o”,“线宽”线宽,“颜色”colorKNN)阴谋(1:K rsrpStatistic——年代”,“线宽”线宽,“颜色”colorStats)阴谋(1:K rsrpRandom“- d”,“线宽”线宽,“颜色”colorRandom)举行网格xticks (1: K)包含(“K美元”,“翻译”,“乳胶”)ylabel (“平均RSRP”)标题(不同的光束对选择方案的性能比较)传说(“穷举搜索”,“神经网络”,“资讯”,的统计信息,“随机”,“位置”,“最佳”)

图包含一个坐标轴对象。坐标轴对象标题不同梁对选择方案的性能比较,包含K美元,ylabel RSRP平均含5线类型的对象。这些对象代表穷举搜索,神经网络,然而,统计信息,随机的。

最终的最优值比较,神经网络和资讯的方法。

[rsrpOptimal end-3:结束);rsrpNeural (end-3:结束);rsrpKNN (end-3:结束),)
ans =3×480.7363 80.7363 80.7363 80.7363 80.7363 80.7363 80.7363 80.7363 80.5067 80.5068 80.5069 80.5212

资讯和最优方法之间的性能差距表明,然而,即使在一个更大的性能可能不好的梁对被认为是,说,256。

情节混淆矩阵

用更少的元素是我们观察到的类和训练网络的负面影响。对不同类型使用不同的权重可以避免这种情况。探索的相同useDiffClassWeights逻辑并指定自定义权重每个类。

testInput predLabels =分类(净,“ExecutionEnvironment”,“cpu”);图;厘米= confusionchart (testOutCat predLabels);标题(混淆矩阵的)

图包含一个ConfusionMatrixChart类型的对象。ConfusionMatrixChart类型的图表标题混淆矩阵。

结论和进一步勘探

这个例子描述了神经网络的应用波束选择任务5 g NR系统。你可以设计和训练神经网络,输出一组 K 梁对好。梁席卷开销可以减少一个详尽的搜索只在那些选择 K 梁对。

示例允许您指定MIMO信道的散射。看到梁上的渠道选择的影响,尝试不同的场景。这个例子还提供presaved数据集,可用于hyperparameters尝试不同的网络结构和训练。

从仿真结果,预录的MIMO散射通道16梁双,该算法可以达到最高K90%的准确性 K = 8 。这表明神经网络它足以执行一个详尽的搜索只有一半以上的光束,光束扫开销减少了50%。不同其他系统参数进行试验,以查看网络的有效性通过重新生成数据,然后再培训和重新测试网络。

引用

  1. 3 gpp TR 38.802”,研究新的无线接入技术物理层方面。”3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

  2. Klautau,。,González-Prelcic, N., and Heath, R. W., "LIDAR data for deep learning-based mmWave beam-selection," IEEE Wireless Communications Letters, vol. 8, no. 3, pp. 909–912, Jun. 2019.

  3. 恒,Y。,和Andrews, J. G., "Machine Learning-Assisted Beam Alignment for mmWave Systems," 2019 IEEE Global Communications Conference (GLOBECOM), 2019, pp. 1-6, doi: 10.1109/GLOBECOM38437.2019.9013296.

  4. Klautau,。,Batista, P., González-Prelcic, N., Wang, Y., and Heath, R. W., "5G MIMO Data for Machine Learning: Application to Beam-Selection Using Deep Learning," 2018 Information Theory and Applications Workshop (ITA), 2018, pp. 1-9, doi: 10.1109/ITA.2018.8503086.

  5. 马特奥,Z。< https://github.com/itu - ai - ml - - 5 g - challenge/ps - 012 - ml5g - phy -梁- selection_beamsoup>(这是团队实现最高的测试成绩ITU人工智能/机器学习在5 g的挑战在2020年)。

  6. Sim, m . S。Lim, Y。,Park, S. H., Dai, L., and Chae, C., "Deep Learning-Based mmWave Beam Selection for 5G NR/6G With Sub-6 GHz Channel Information: Algorithms and Prototype Validation," IEEE Access, vol. 8, pp. 51634-51646, 2020.

本地函数

函数人口、难民和移民事务局= validateParams(人口、难民和移民事务局)%验证用户指定参数和返回更新参数%%只有cross-dependent检查参数的一致性。如果strcmpi (prm.FreqRange“FR1”)如果人口、难民和移民事务局。CenterFreq > 7.125 e9 | |人口、难民和移民事务局。CenterFreq < 410 e6错误([“指定的中心频率是FR1外”,的频率范围(410 MHz - 7.125 GHz)。”]);结束如果strcmpi (prm.SSBlockPattern“D”)| |strcmpi (prm.SSBlockPattern“E”)错误(对选定的无效SSBlockPattern FR1频率”的范围内。SSBlockPattern必须“案例”或“之一”案例B”和“C”FR1。]);结束如果~ (((prm.SSBTransmitted)长度= = 4)| |(长度(prm.SSBTransmitted) = = 8))错误([SSBTransmitted必须一个向量的长度4或8”,“FR1频率范围。”]);结束如果(人口、难民和移民事务局。CenterFreq < = 3 e9) & &(长度(prm.SSBTransmitted) ~ = 4)错误([SSBTransmitted必须一个向量的长度4”的中心频率小于或等于3 ghz。]);结束如果(人口、难民和移民事务局。CenterFreq > 3 e9) & &(长度(prm.SSBTransmitted) ~ = 8)错误([SSBTransmitted必须一个向量的长度8的,的中心频率大于3 ghz,小于的,或等于7.125 ghz。]);结束其他的%的FR2如果人口、难民和移民事务局。CenterFreq > 52.6 e9 | |人口、难民和移民事务局。CenterFreq < 24.25 e9错误([“指定的中心频率是FR2外”,的频率范围(24.25 GHz - 52.6 GHz)。”]);结束如果~ (strcmpi (prm.SSBlockPattern,“D”)| |strcmpi (prm.SSBlockPattern“E”)错误([对选定的无效SSBlockPattern FR2频率”的范围内。SSBlockPattern必须“D”或““E”FR2。]);结束如果长度(prm.SSBTransmitted) ~ = 64错误([SSBTransmitted必须一个向量的长度为64的,FR2频率范围。]);结束结束%的光束传输/接收结束人口、难民和移民事务局。numBeams =总和(prm.SSBTransmitted);人口、难民和移民事务局。NumTx = prod (prm.TxArraySize);人口、难民和移民事务局。NumRx = prod (prm.RxArraySize);如果人口、难民和移民事务局。NumTx = = 1 | |人口、难民和移民事务局。错误([NumRx = = 1许多传输或接收天线元素必须是“,大于1。]);结束prm.IsTxURA=(人口、难民和移民事务局。TxArraySize(1)>1) && (prm.TxArraySize(2)>1); prm.IsRxURA = (prm.RxArraySize(1)>1) && (prm.RxArraySize(2)>1);如果~ (strcmpi (prm.RSRPMode,“SSSonly”)| |strcmpi (prm.RSRPMode“SSSwDMRS”)错误([“无效RSRP测量模式。要么指定的,“SSSonly”或“SSSwDMRS”模式。]);结束%选择基于SSBlockPattern SCS开关低(prm.SSBlockPattern)情况下的情况下scs = 15;生化武器= 10;scsCommon = 15;情况下{“案例b”,“案例c”}scs = 30;生化武器= 25;scsCommon = 30;情况下“d”scs = 120;生化武器= 100;scsCommon = 120;情况下“e”scs = 240;生化武器= 200;scsCommon = 120;结束人口、难民和移民事务局。SCS = SCS;人口、难民和移民事务局。ChannelBandwidth =生化武器;人口、难民和移民事务局。SubcarrierSpacingCommon = scsCommon;结束

另请参阅

功能

对象

相关的话题

Baidu
map