目录
研究动机:
模型实现:(encoder到decoder的层数按顺序依次实现即可)
前言
论文:《Deep Learning for Massive MIMO CSI Feedback》
文章地址:Deep Learning for Massive MIMO CSI Feedback | IEEE Journals & Magazine | IEEE Xplore
CsiNet仿真代码:GitHub - sydney222/Python_CsiNet: Python code for "Deep Learning for Massive MIMO CSI Feedback"数据集: https://www.dropbox.com/sh/edla5dodnn2ocwi/AADtPCCALXPOsOwYi_rjv3bda?dl=0.
最近在学习有关CSI反馈相关知识,整理了这一篇将深度学习引入CSI反馈的高引用论文,如果有理解不正确的地方,敬请回复。
文章主旨
本文使用深度学习技术来开发一种新的CSI感知和反馈机制CsiNet,它可以从训练样本中学习如何有效地利用信道结构,目的是为了提升性能和减少复杂度/开销。实验表明,相比于一些压缩感知(CS)算法,CsiNet可以极大地提高CSI恢复和重建的质量,甚至在一些压缩感知算法无法工作的极其低的压缩范围内,CsiNet也能够保持有效的波束形成增益。
文章背景
现有CSI反馈方法:
1. 基于码本的CSI反馈方法:
用户:通过码本计算并量化预编码矩阵,向基站反馈预编码矩阵索引
基站:通过码本重建CSI
问题:计算复杂度高,无环境信息辅助
2. 基于压缩感知的CSI反馈
用户:将信道矩阵变换至稀疏域,利用CS算法(AMP,LASSO,TVAL3....)进行压缩
基站:通过迭代算法重建CSI
问题:严重依赖信道稀疏性假设;CS使用随机投影,无法充分利用信道结构;实际应用中,重建算法通常是迭代的,重建速度较慢无法满足实时性要求。
深度学习具有较强的学习和拟合能力,可处理复杂信道条件来解决上述问题。
研究动机:
大规模MIMO系统中大量天线带来较大的反馈开销;图像压缩中,自编码器能够有效压缩图像信息;
创新点---将CSI视为”图像“!
在CSI反馈机制中引入深度学习自编码器架构,提出基于神经网络的CSI反馈架构CsiNet;
CsiNet具有以下特性:
Encoder: 不使用随机投影,而是通过训练数据学习原始通道矩阵的变换,以压缩表示(码字)。
Decoder: CsiNet学习从码字到原始信道的逆变换。
系统模型和CSI反馈
这篇文章假设完美的CSI已经被获取,只考虑CSI从用户侧到基站端的反馈。一旦用户侧获得了信道矩阵,就通过2D-DFT来获取截断的矩阵,然后使用编码器生成码字,再将码字反馈送入基站端,使用解码器获得,通过逆DFT变换便可得到空间频域的最终信道矩阵。
模型实现:(encoder到decoder的层数按顺序依次实现即可)
信道矩阵由实部和虚部构成,encoder端模型搭建具体流程如下:
1)输入数据大小为2*32*32,包括实部和虚部;
2)进行卷积,卷积核大小为3*3,个数为2,BN操作,使用LeakyReLU激活函数;
3)通过reshape将数据拉直;
再将数据通过dense进行压缩,变换为M维向量,数据压缩率=M/N。decoder端模型就不详细展开了,其中采用了类似ResNet的结构,通过两个RefineNet单元,进一步添加单元不会显著提高重建质量,只会增加计算复杂度。
def residual_network(x, residual_num, encoded_dim):
def add_common_layers(y):
y = BatchNormalization()(y)
y = LeakyReLU()(y)
return y
def residual_block_decoded(y):
shortcut = y
y = Conv2D(8, kernel_size=(3, 3), padding='same', data_format='channels_first')(y)
y = add_common_layers(y)
y = Conv2D(16, kernel_size=(3, 3), padding='same', data_format='channels_first')(y)
y = add_common_layers(y)
y = Conv2D(2, kernel_size=(3, 3), padding='same', data_format='channels_first')(y)
y = BatchNormalization()(y)
y = add([shortcut, y])
y = LeakyReLU()(y)
return y
x = Conv2D(2, (3, 3), padding='same', data_format="channels_first")(x)
x = add_common_layers(x)
x = Reshape((img_total,))(x)
encoded = Dense(encoded_dim, activation='linear')(x)
x = Dense(img_total, activation='linear')(encoded)
x = Reshape((img_channels, img_height, img_width,))(x)
for i in range(residual_num):
x = residual_block_decoded(x)
x = Conv2D(2, (3, 3), activation='sigmoid', padding='same', data_format="channels_first")(x)
return x
模型训练:
通过COST 2100数据集,创建两种类型的信道矩阵:
1)5.3 GHz频段的室内场景
2)300 MHz频段的室外场景。
的大小是32 × 32 (包含实部和虚部),训练集、验证集和测试集分别包括100000,30000,20000个样本;epoch,learning rate,batch size分别设置为1000,0.001,200。
定义一种归一化MSE(NMSE)来量化恢复后的和原始之间的差异:
定义余弦相似度来描述波束成形向量的值,令为重构信道向量的第n个子载波。
用NMSE和ρ评估CsiNet的输出数据与原始数据的准确度。
训练结果和结论
可以看出CsiNet在低压缩比下表现良好,并且降低了时间复杂度。