Feedback Code: the Modulo-SK Scheme

本文中我们介绍一些经典的 feedback codes. 主要是 the SK scheme and the modulo-SK scheme.

Introduction

在点对点信道中,shannon早已证明加入feedback信道不会影响前向信道的capacity,但是the SK scheme证明了如果发送端有无噪的feedback信息,那么前向编码将会变得异常简单而且能够在有限码长时大大提升误码率性能。但是不幸的是,一旦feedback有一丁点儿噪声,the SK scheme does not work! 前人也有一些工作致力于解决noisy feedback的问题,但是他们的方法繁杂而差。

本文的motivation就是,存不存在简单的编码方案使得 the SK scheme 在noisy feedback 时照样work. 当然,如果我们的目的是approaching capacity 这个任务不太容易做到. 即, 提出一种码长 N N N 无限的编码方案使得 Pe goes to 0 且 rate 接近capacity
C = 1 2 log ⁡ 2 ( 1 + SNR ) C=\frac{1}{2}\log_2(1+\text{SNR}) C=21log2(1+SNR).
Instead, 本文考虑的setup是: 给定一个target Pe (很小), 怎么设计一个方案使得capacity gap最小, where
capacity gap = 其达到 Pe 所需的 SNR − optimal Shannon scheme 达到 Pe 所需的 SNR \text{capacity gap}=\text{其达到 Pe 所需的 SNR}-\text{optimal Shannon scheme 达到 Pe 所需的 SNR} capacity gap=其达到 Pe 所需的 SNRoptimal Shannon scheme 达到 Pe 所需的 SNR
注意这里没有定义码长。对于本文提出的MSK scheme, 一般码长很短就能达到 target Pe。对于 optimal Shannon scheme,码长可以是无限。更严谨的定义参见下一个section Setup中 Γ \Gamma Γ 的定义。

我们的设计基于以下的观察:

  1. Noiseless feedback, the SK scheme 的capacity gap 与 N N N 成反比,因此, N N N 不用很大就能接近 capacity. Comment: 这个描述有点歧义,因为毕竟它Pe没有到0而capacity的定义是无误码传输的最大速度。作者的描述是在Pe很小时这一点点差距由rate distortion function决定,可以忽略。
  2. The SK scheme 可以大致这么描述: 给定一串bits, node A 第一次传输用PAM编码即用一个标量表示这一串数发送给node B. 在接下来的传输中,node A通过无噪反馈完全知道node B的estimation error,于是每次传输都把node B estimation error scale之后node B。使用这种方法可以指数的降低node B估计误差的variance. The SK scheme 需要发送端完全已知node B的估计误差,因此只适用于noiseless feedback。但是noisy feedback时,我们可以让node B发送自己当前对message的estimate。注意,noiseless feedback时,passive, active feedback 没有差别.
  3. 假设使用SK scheme且feedback 是 noisy的。那么,在每一次交互中,node B 知道的是PAM value + estimation error; 而node A 知道 PAM value。 因此,node B编码的问题是一个JSCC问题 with side info at node A. 因此,node B需要做的就是怎么样exploit node A的side info从而把estimation error 尽可能好传输给node A via the noisy feedback channel. 一个简单的利用方法便是使用 modulo arithmetic。
  4. 按照以上方式,node A 便可以知道 nodeB 的estimation error 和feedback channel 带来的噪声。由于modulo这个operation是线性的,这个噪声可以被push到forward channel上去。

总之本文提出的scheme可以简单归纳如下

  • node A 首先对自己的信息编码并用PAM发送。

在接下来的传输中,

  • node B 每次都计算自己对 bitstream 的 linear estimate,scale the estimate,modulo一个固定的区间,再反馈给A。
  • node A 对收到的信号进行modulo operation 得到B 的 estimation error (当然是noisy的), scale the noisy error, 再发给node B.

经过一些interactions, node B使用minimum distance rule进行decode.

Setup

我们考虑两个nodes A and B connected via 2 channels。 两个信道都是AWGN可以分别表示为
Y n = X n + Z n Y_n=X_n+Z_n Yn=Xn+Zn Y ~ n = X ~ n + Z ~ n \widetilde{Y}_n=\widetilde{X}_n+\widetilde{Z}_n Y n=X n+Z n

其中噪声的power分别是 σ 2 \sigma^2 σ2 σ ~ 2 \widetilde{\sigma}^2 σ 2. Nodes A, B各自有一个power constraint P P P P ~ \widetilde{P} P . 前后向SNR分别定义为
SNR = P σ 2 ,      SNR ~ = P ~ σ ~ 2 ,      Δ SNR = SNR ~ SNR \text{SNR}=\frac{P}{\sigma^2},~~~~\tilde{\text{SNR}}=\frac{\widetilde{P}}{\widetilde{\sigma}^2},~~~~\Delta\text{SNR}=\frac{\tilde{\text{SNR}}}{\text{SNR}} SNR=σ2P,    SNR~=σ 2P ,    ΔSNR=SNRSNR~

Nodes A and B 分别有一个函数 φ \varphi φ and φ ~ \widetilde{\varphi} φ 来决定 X n X_n Xn X ~ n \widetilde{X}_n X n:
X n = φ ( W , Y ~ n − 1 ) ,      X ~ n = φ ( Y ~ n ) X_n=\varphi(W,\widetilde{Y}^{n-1}),~~~~\widetilde{X}_n=\varphi(\widetilde{Y}^{n}) Xn=φ(W,Y n1),    X n=φ(Y n)

一对 φ \varphi φ and φ ~ \widetilde{\varphi} φ 决定了传输策略的 rate R = log ⁡ M N R=\frac{\log M}{N} R=NlogM 和 Pe.

AWGN信道的Shannon capacity定义为 Pe → 0 \text{Pe}\to0 Pe0 时无误码传输的最大速率,这是所有可能schemes的上界,不管有没有feedback,不管 N N N 多长,不管编译码算法多复杂。
C = 1 2 log ⁡ ( 1 + SNR ) (1) C=\frac{1}{2}\log(1+\text{SNR})\tag{1} C=21log(1+SNR)(1)

即,任意给定一个 SNR, 搜遍所有策略最多能做到 rate 是 C C C. Conversely, 任意给定一个 rate R R R, 要想达到它所需要的 SNR最小得是 2 2 R − 1 2^{2R}-1 22R1. 由此我们可以定义 capacity gap
Γ = SNR 2 2 R − 1 \Gamma=\frac{\text{SNR}}{2^{2R}-1} Γ=22R1SNR

Preliminaries

Uncoded PAM

PAM 是很经典的调制方式。Uncoded PAM 就只传输一次 N = 1 N=1 N=1, 那么给定 M M M 个消息(即 log ⁡ M \log M logM 个bits), rate R = log ⁡ M R=\log M R=logM 也就是 bits 个数。我们可以把这 R R R 个bits映射到 a set of 2 R 2^R 2R amplitudes
{ ± 1 η , ± 3 η , . . . , ± ( 2 R − 1 ) η } \{\pm 1\eta,\pm 3\eta, ..., \pm(2^R-1)\eta\} {±1η,±3η,...,±(2R1)η}.

其中 η \eta η 是一个归一化因子使得这些幅值的均方是1, 此时
η = 3 2 2 R − 1 \eta=\sqrt{\frac{3}{2^{2R}-1}} η=22R13

注:如果功率限制是 P P P, 那就set: η = η P \eta=\eta\sqrt{P} η=ηP .

对于PAM来说,它的 Pe 取决于噪声超过两个amplitudes距离的一半的概率:
P e < 2 Q ( P η σ ) = 2 Q ( 3 SNR 2 2 R − 1 ) (2) P_e<2Q\left(\frac{\sqrt{P}\eta}{\sigma} \right)=2Q\left(\sqrt{\frac{3\text{SNR}}{2^{2R}-1}}\right)\tag{2} Pe<2Q(σP η)=2Q(22R13SNR )(2)

即,PAM 的 Pe 取决于信道 SNR 和 bits个数 R R R 即星座图的size。SNR 越小 或者 R R R 越大都会导致星座图之间距离越近,Pe 增大。取反函数我们有
R > 1 2 log ⁡ ( 1 + SNR Γ 0 ( P e ) ) (3) R>\frac{1}{2}\log\left(1+\frac{\text{SNR}}{\Gamma_0(P_e)}\right)\tag{3} R>21log(1+Γ0(Pe)SNR)(3)

其中 Γ 0 ( P e ) = 1 3 [ Q − 1 ( P e 2 ) ] 2 (4) \Gamma_0(P_e)=\frac{1}{3}\left[Q^{-1}\left(\frac{P_e}{2}\right)\right]^2\tag{4} Γ0(Pe)=31[Q1(2Pe)]2(4) 就是 capacity gap。这个很好理解,(2) 式指的是给定了 SNR 和 bit 个数 R, uncoded PAM 至少能做到 P e P_e Pe;而(3)式的意思是给定 S N R SNR SNR 和一个target P e P_e Pe, 你至少能传输 R R R 个bits。那么比较rate R R R in (3) 和 Shannon capacity in (1), uncoded PAM 达到 P e P_e Pe R R R 所需的 SNR 比 (1) 多了 Γ 0 ( P e ) \Gamma_0(P_e) Γ0(Pe) 倍,即capacity gap. 举个例子,若想achieve P e = 1 0 − 6 P_e=10^{-6} Pe=106, capacity gap of uncoded PAM is Γ 0 , dB = 9  dB \Gamma_{0,\text{dB}}=9~\text{dB} Γ0,dB=9 dB.

需要提及的是,如果使用 Gray labeling/mapping, P e P_e Pe 很小时,BER 和 SER 的关系是 P b = P e / R . P_b=P_e/R. Pb=Pe/R.

The SK scheme

下面我们来看一下 the SK scheme。

The SK scheme with active feedback

我们考虑 noiseless feedback, the SK scheme with active feedback 的伪代码如下:

csdn加的水印很讨厌,不过我们来大概解释一下就清楚了。首先 Initialization阶段node A直接把自己的 message 映射成一个PAM 星座 Θ \Theta Θ, 并且scale一下就发送给node B。而node B收到 Y 1 Y_1 Y1 后就尝试解 Θ \Theta Θ, 得到 Θ ^ 1 \hat{\Theta}_1 Θ^1.

Remark: 这里其实有一个精度问题,就是当 K K K 很长时, Θ \Theta Θ的表示对精度的要求非常高,这在电脑中不是问题,但是在无线发送和接收芯片中会是一个问题,即表示不了那么多位导致truncation,而truncation相当于加了非高斯的噪声,而且这个噪声和数据本身相关。

紧接着就开始迭代:

  1. node B 每次都把自己当前对 Θ \Theta Θ 的估计 Θ ^ n \hat{\Theta}_n Θ^n 发送给 node A.
  2. 由于feedback 信道无噪,node A 可以算出nodeB当前的estiamtion error ε n \varepsilon_n εn.
  3. 于是 node A 把 ε n \varepsilon_n εn scale 一下发送给 node B.
  4. node B 收到 Y n Y_n Yn: 先估计 ε n {\varepsilon}_n εn by ε ^ n = β n + 1 Y n , \hat{\varepsilon}_n=\beta_{n+1}Y_{n}, ε^n=βn+1Yn,这便是被水印掩盖的第一个公式; 再更新 Θ ^ n + 1 = Θ ^ n − ε ^ n \hat{\Theta}_{n+1}=\hat{\Theta}_{n}-\hat{\varepsilon}_n Θ^n+1=Θ^nε^n

当第 N N N 次交互结束,node B decode the PAM constellation by minimum-distance decoding.

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
-fno-gcse-las:此选项禁用通用局部优化(Global Common Subexpression Elimination),这是编译器用于消除重复表达式的技术。它允许编译器在不同的函数或代码块中共享变量的值。-fno-loop-nest-optimize:此选项禁用循环嵌套优化,这是一种在循环中重新排列指令的技术,提高循环的性能。-fsched-spec-load-dangerous:此选项禁用规格加载指令优化,这是一种技术,可以消除在循环中重复加载变量的指令。-fno-tree-loop-distribution:此选项禁用树循环分布优化,它是一种重新排列循环体,使得某些循环可以并行运行,从而提高性能的技术。-fno-unwind-tables:此选项禁用表格解除,它是一种技术,用于解决当出现异常时,编译器如何跟踪堆栈帧的问题。-ffp-contract=fast:此选项指定编译器使用快速浮点合同优化,它是一种技术,可以将多个浮点运算合并为一个运算,从而提高程序的性能。-fno-float-store:此选项禁用浮点存储优化,它是一种技术,可以将变量以浮点数的形式存储在内存中,从而提高程序的性能。-fno-modulo-sched-allow-regmoves:此选项禁止模块调度器在重新排序中使用寄存器移动,模块调度器是一种技术,可以重新排列指令,使其在处理器中运行更快。-fno-peel-loops:此选项禁用循环削减,它是一种技术,可以在循环的开始和结束处插入指令,以提高循环的性能。-fno-sched-pressure:此选项禁止调度器压力优化,它是一种技术,可以根据处理器负载重新排列指令,以提高程序性能。-fsplit-paths:此选项激活路径分裂优化,它是一种技术,可以在运行时将多条指令路径分割为几个部分,从而提高程序的性能。-ftree-slp-vectorize:此选项激活树结构优化,它是一种技术,可以将许多连续的指令组合成一条指令,从而提高程序的性能。-fwrapv:此选项激活符号溢出检查和溢出处理,它是一种技术,可以在运行时检查整数溢出,以便防止程序的不可预料的行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值