通信/信息理论相关
信号
在PyTorch中,可以使用tensor来表示信号。通常情况下,我们可以将一个信号看做是一个一维的向量,其中向量的每个元素代表信号在某个时刻的幅度或者功率。
例如,如果我们有一个包含5个时刻的信号,可以使用以下代码来创建一个PyTorch tensor表示该信号:
下面展示一些 内联代码片
。
import torch
# 创建一个包含5个元素的tensor来表示信号
signal = torch.tensor([0.1, 0.2, 0.3, 0.2, 0.1])
# 打印信号的值
print(signal)
# 输出
tensor([0.1000, 0.2000, 0.3000, 0.2000, 0.1000])
可以看到,这个tensor包含了5个元素,每个元素代表信号在某个时刻的幅度。可以通过索引来访问每个元素,例如 signal[0] 表示信号在第一个时刻的幅度。
信道
AWGN
Rayleigh 信道
噪声
添加噪声可以使用PyTorch中的torch.normal函数生成高斯噪声,并将其加到原始信号上,如下所示:
import torch
# 原始信号
signal = torch.tensor([1, 2, 3, 4, 5])
# 添加高斯噪声
noise = torch.normal(mean=0.0, std=0.1, size=signal.shape)
noisy_signal = signal + noise
其中,mean参数表示噪声的均值,std参数表示噪声的标准差,size参数表示噪声的大小(与signal的shape相同)。
添加功率约束可以将信号进行归一化,使其平均功率为特定值,如下所示:
import torch
# 原始信号
signal = torch.tensor([1, 2, 3, 4, 5])
# 归一化信号
avg_power = torch.mean(signal ** 2)
power_constraint = 10 # 设置平均功率为10
normalized_signal = torch.sqrt(power_constraint / avg_power) * signal
其中,torch.mean函数用于计算信号的平均功率,torch.sqrt函数用于计算归一化因子。归一化后的信号平均功率为power_constraint。
编码
带宽资源
非线性变换
非线性变换是指一种将输入信号映射到输出信号的数学函数,不满足线性关系的变换。在信号处理和通信系统中,非线性变换常用于将原始数据转换为更适合在噪声信道上传输的形式。
相比线性变换,非线性变换具有更强的表达能力,可以更好地捕捉数据的特征和语义信息。由于信道噪声和失真等因素的存在,非线性变换通常可以提高数据在信道上传输时的鲁棒性和可靠性。
在语义通信中非线性变换被用于将源编码后的数据进行转换,以提取数据的语义信息并提高数据在信道上传输时的可靠性。通常使用一些非线性函数来实现非线性变换,例如Sigmoid函数、ReLU(修正线性单元)函数和Softmax函数等。这些函数具有不同的特点和应用场景,可以根据实际需要进行选择和调整。
机器/深度学习相关
特征增强
**位置嵌入增强:**在 x = x + self.pos_embed(x) 步骤中,通过将位置嵌入添加到输入特征中,每个位置的特征将包含其在图像中的位置信息,从而帮助模型学习更好的空间关系。
**注意力机制增强:**不同的注意力机制(如双层路由注意力、常规注意力、注意力与位置编码、伪注意力)可以捕获不同尺度的信息和语义相关性。通过在 x = x + self.attn(…) 步骤中使用注意力机制,模型可以聚焦于图像中的重要区域,同时保留更全局的上下文信息。
**MLP增强:**多层感知机(MLP)在 x = x + self.mlp(…) 步骤中用于非线性变换。MLP能够通过多个全连接层和激活函数捕获复杂的特征映射,从而增强模型对输入的表示能力。
**残差连接和DropPath:**在 x = x + self.drop_path(…) 步骤中,通过残差连接和DropPath操作,模型能够从浅层到深层逐渐引入更多的增强信息,避免过拟合,并提高训练的稳定性。
注意力
伪注意力
伪注意力(Pseudo Attention)是一种在神经网络中用于替代标准自注意力机制的技术。标准的自注意力机制(如Transformer中的Multihead Attention)在计算过程中需要大量的计算资源和内存,并且计算复杂度随着序列长度的增加而增加。为了降低计算成本,研究人员提出了一种更轻量级的注意力机制,即伪注意力。
伪注意力通过一系列的卷积层和操作来模拟标准自注意力的效果,但计算复杂度较低。它通常包括以下步骤:
伪QKV线性层(Pseudo QKV Linear): 将输入特征通过一层卷积层映射为查询(Q)、键(K)和值(V)向量。这些向量模拟了标准自注意力中的Q、K、V矩阵。
伪注意力层(Pseudo Attention): 通过一系列卷积操作来代替标准的注意力计算。这些卷积操作可以捕捉局部特征和上下文信息,从而模拟了注意力机制。
伪输出线性层(Pseudo Out Linear): 最终,通过另一层卷积层将伪注意力的输出映射回原始特征维度。
维度变换(Rearrange): 由于卷积操作可能会改变特征的维度,所以需要在适当的位置进行维度变换,以保持与原始特征维度一致。
语义相关
背景知识
语义信息
语义编码/解码
语义感知
语义评价指标
基于误差的语义度量
文本数据的语义度量
BLEU 最初,BLEU是一种用于机器翻译自动评估的方法,它符合SEMCOM系统中语义测量的需要。
CIDEr CIDER是一种图像描述质量的自动一致性度量,最初用于度量一个生成的句子与一组由人类书写的地面真值句子之间的相似性。 因此,它也可以作为文本传输的语义度量。
语义相似度 句子相似度是为SEMCOM初始化的一个新的度量,它基于来自Transformer(BERT)的双向编码器表示。 BERT是一个最先进的微调词表示模型,它使用了一个庞大的预先训练的模型,包括用于提取SI的数十亿个参数, 在数十亿个句子的喂养下,SI抽取的性能已经得到了证明。 为此,直接基于Bert提取的语义特征的余弦相似度计算句子相似度。
音频数据的语义度量
Signal-to-distortion ratio (SDR) 文献将恢复信号作为一种性能指标引入到SEMCOM中,它用传输语音信号与恢复信号之间的
L
2
\mathcal{L} _2
L2误差来表示。
Perceptual evaluation of speech quality (PESQ)
图片数据的语义度量
PSNR: PSNR (Peak Signal-to-Noise Ratio) 是一种用于衡量图像或视频质量的指标,通常用于评估图像或视频编码的性能。它的计算公式如下:
P
S
N
R
=
10
⋅
log
10
(
M
A
X
I
2
M
S
E
)
PSNR=10\cdot \log _{10}\left( \frac{MAX_{I}^{2}}{MSE} \right)
PSNR=10⋅log10(MSEMAXI2)
其中,
M
A
X
I
MAX_I
MAXI 表示像素值的最大值(例如对于 8 位灰度图像,
M
A
X
I
=
255
MAX_I=255
MAXI=255),
M
S
E
MSE
MSE 表示均方误差(Mean Squared Error),即:
M
S
E
=
1
M
N
∑
i
=
0
M
−
1
∑
j
=
0
N
−
1
(
I
i
j
−
K
i
j
)
2
MSE=\frac{1}{MN}\sum\nolimits_{i=0}^{M-1}{\sum\nolimits_{j=0}^{N-1}{\left( I_{ij}-K_{ij} \right) ^2}}
MSE=MN1∑i=0M−1∑j=0N−1(Iij−Kij)2
其中,
I
I
I 表示原始图像,
K
K
K 表示压缩后恢复的图像,
M
M
M 和
N
N
N 分别表示图像的宽度和高度。简单来说,PSNR 的计算公式是将原始图像和压缩后的图像之间的均方误差转化为对数尺度,并将结果乘以一个常数因子 10。