读Polar码前需要会什么:B-DMC、码率、容量、LLR
上一篇我们把 Polar 码放在现代信道编码的大图里看了一遍:它为什么重要,它和 Turbo、LDPC 有什么关系,它为什么会出现在 5G NR 控制信道里。
从这一篇开始,系列要逐步进入公式和结构。真正讲 Polar 编码之前,先把几个基础概念摆稳:什么是信道模型,什么是码长和码率,容量到底在说什么,译码时为什么不应该只看 0/1 硬判决,以及 LLR 为什么会成为后面 SC、SCL、CA-SCL 译码的核心语言。
这篇不追求把信息论完整讲完。目标更实用:后面文章里反复出现的符号和直觉,读到这里应该先有一个清晰的落点。
什么是二元离散无记忆信道 B-DMC
信道编码讨论的是“信息经过信道以后会变成什么”。最基础的数学模型之一,是二元离散无记忆信道,也就是 B-DMC,Binary-input Discrete Memoryless Channel。
这里面有三个关键词。
- 二元输入:每次送入信道的是一个比特,取值来自 \mathcal{X}=\{0,1\}。
- 离散输出:信道输出来自某个离散集合 \mathcal{Y}。
- 无记忆:每次信道使用相互独立,当前输出只和当前输入有关,不依赖过去输入输出。
用符号写,一个基础二元输入信道记作:
W:\mathcal{X}\to\mathcal{Y},\qquad \mathcal{X}=\{0,1\}更具体地说,W(y\mid x) 表示“输入为 x,输出为 y”的转移概率。比如 W(y\mid 0) 是发送 0 后收到 y 的概率,W(y\mid 1) 是发送 1 后收到 y 的概率。
如果连续使用这个信道 N 次,并发送码字 \underline{c}_0^{N-1},接收端得到观测 \underline{y}_0^{N-1}。无记忆假设意味着整体转移概率可以拆成逐项相乘:
W_N(\underline{y}_0^{N-1}\mid \underline{c}_0^{N-1})=\prod_{i=0}^{N-1}W(y_i\mid c_i)这条式子非常重要。Polar 码后面做 信道合并(channel combining) 和 信道分裂(channel splitting),本质上就是从多个独立使用的基础信道出发,组合成一个长度为 N 的整体信道,再把它拆成一组极化子信道。
需要补一句细节:真实通信里常见的 AWGN 信道输出是连续值,严格说不属于“离散输出”的 DMC。但学习 Polar 码时,B-DMC 是最干净的理论入口;到了 AWGN 场景,我们仍会沿用 W(y\mid x) 这类记号,只是它表示概率密度而不是离散概率。
什么是码长、信息长度和码率
信道编码最先要分清三个数:N、K 和 R。
| 符号 | 含义 | 在 Polar 码中的常见情况 |
|---|---|---|
| N | Polar 码长 | 通常取 N=2^n |
| K | 进入 Polar 编码器的信息比特数 | 若加入 CRC,需要说明 K 是否包含 CRC |
| R | 码率 | R=K/N |
码率的定义是:
R=\frac{K}{N}例如 K=4,N=8,则 R=1/2。这表示每发送 8 个编码后比特,其中有 4 个位置承载信息,其余部分体现为冗余或约束。
不要把“码率高”简单理解成“更好”。码率高,单位发送资源里装的信息更多,但冗余更少,通常更难抗噪声。码率低,冗余更多,可靠性可能更好,但传输效率下降。编码设计一直在这两者之间做平衡:既想接近容量,又不能让错误率失控。
对 Polar 码来说,N 还会影响极化程度。理论上,随着 N 增大,极化现象会越来越明显;但工程里 N 不可能无限大,所以后面还会反复遇到“有限码长”的问题。
什么是信道容量与对称容量
信道容量回答的是一个根本问题:在给定信道条件下,最多能以多高速率可靠传输?
如果只用一句话说,容量是信道能支持的可靠通信上限。详细证明见 信道容量为什么是通信上限。码率 R 如果超过信道能承受的上限,再聪明的编码也救不回来;如果 R 低于容量,信息论告诉我们存在可靠通信的可能。
一般信息论里,信道容量会在所有输入分布中取最大值。Polar 码最常讨论的是二元输入对称信道上的对称容量,也就是默认输入 0 和 1 等概率出现时的互信息。对二元输入离散信道,可写作:
I(W)=\sum_{y\in\mathcal{Y}}\sum_{x\in\mathcal{X}}\frac{1}{2}W(y\mid x)\log_2\!\left(\frac{W(y\mid x)}{\frac{1}{2}W(y\mid 0)+\frac{1}{2}W(y\mid 1)}\right)这条公式先定义的是一个二元输入信道 W 的对称容量。放到 N=4 的 Polar 码里,信道组合与分裂之后会得到四个二元输入极化子信道:
W_4^{(0)},\quad W_4^{(1)},\quad W_4^{(2)},\quad W_4^{(3)}对每个极化子信道,都可以用同一类公式计算对称容量。第 i 个子信道的输入仍是单个比特 u_i\in\mathcal{X},输出可以看成接收向量 \underline{y}_0^3 和前面已知的 \underline{u}_0^{i-1}。因此:
I(W_4^{(i)})=\sum_{\underline{y}_0^3\in\mathcal{Y}^4}\sum_{\underline{u}_0^{i-1}\in\mathcal{X}^{i}}\sum_{u_i\in\mathcal{X}}\frac{1}{2}W_4^{(i)}(\underline{y}_0^3,\underline{u}_0^{i-1}\mid u_i)\log_2\!\left(\frac{W_4^{(i)}(\underline{y}_0^3,\underline{u}_0^{i-1}\mid u_i)}{\frac{1}{2}W_4^{(i)}(\underline{y}_0^3,\underline{u}_0^{i-1}\mid 0)+\frac{1}{2}W_4^{(i)}(\underline{y}_0^3,\underline{u}_0^{i-1}\mid 1)}\right)例如 i=2 时,\underline{u}_0^{i-1}=\underline{u}_0^1=(u_0,u_1)。这时公式会遍历所有接收向量 \underline{y}_0^3、所有前两位 (u_0,u_1),再比较当前输入 u_2=0 和 u_2=1 两种可能。
实际构造时,N=4 会得到四个可靠性数值:
I(W_4^{(0)}),\quad I(W_4^{(1)}),\quad I(W_4^{(2)}),\quad I(W_4^{(3)})这些值越大,对应的极化子信道越适合承载信息比特。后面讲构造时,“选择可靠子信道”本质上就是在比较这类可靠性度量。
这里使用 \log_2,所以单位是 bit。先不用急着把这条公式完全吃透,第 6 篇会专门回到对称容量和 Bhattacharyya 参数。现在只需要记住一个直觉:
- I(W) 越大,信道越可靠。
- I(W) 越接近 1,越像一个几乎无噪声的二元信道。
- I(W) 越接近 0,越像一个几乎不能传递信息的信道。
Polar 码说自己能达到容量,更严格地说,是在二元输入离散无记忆信道上达到对称容量。后面的“信道极化”会把一个基础信道 W 变成许多极化子信道,其中一部分的对称容量趋近于 1,另一部分趋近于 0。
什么是硬判决,什么是软判决
接收端拿到信道输出以后,最直接的想法是先判断每一位到底更像 0 还是 1。这叫硬判决。
以 BPSK 调制为例,本系列统一使用下面的映射:
x_i=1-2c_i,\qquad c_i\in\{0,1\}也就是说,码字比特 c_i=0 映射成发送符号 x_i=+1,码字比特 c_i=1 映射成发送符号 x_i=-1。经过 AWGN 信道后,接收端看到:
y_i=x_i+z_i,\qquad z_i\sim\mathcal{N}(0,\sigma^2)如果只做硬判决,一种自然规则是看 y_i 的符号:
\hat{c}_i=\begin{cases}0, & y_i\ge 0,\\1, & y_i<0.\end{cases}硬判决的问题是它丢掉了“有多确定”这件事。比如 y_i=0.01 和 y_i=4.0 都会被判成 0,但这两次判断的可靠程度显然完全不同。前者几乎贴着判决边界,后者离 0 很远,可信度高得多。
软判决保留的就是这种可靠程度。它不急着把接收值压成 0 或 1,而是把“更像 0 还是更像 1,以及有多像”传给译码器。Polar 码的 SC 和 SCL 译码正是依赖这种软信息工作。
LLR 是什么,它为什么在译码里这么重要
LLR 是 log-likelihood ratio,对数似然比。它把“更像 0 还是更像 1”压缩成一个带符号的实数。本系列中,原始信道 LLR 统一写作 \lambda_i:
\lambda_i=\ln\frac{W(y_i\mid 0)}{W(y_i\mid 1)}这个定义有一个非常好用的解释:
- \lambda_i>0:观测 y_i 更支持 c_i=0。
- \lambda_i<0:观测 y_i 更支持 c_i=1。
- |\lambda_i| 越大:判断越有把握。
- \lambda_i 越接近 0:越不确定。
注意这里的符号方向非常重要。因为我们定义的是 \ln(W(y_i\mid 0)/W(y_i\mid 1)),所以正数偏向 0,负数偏向 1。后面 SC 译码中,如果某个信息位的 LLR 大于等于 0,就会倾向判成 0;如果小于 0,就会倾向判成 1。
对于上面的 BPSK + AWGN 模型,转移概率密度可写为:
W(y_i\mid c_i)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp\left(-\frac{(y_i-(1-2c_i))^2}{2\sigma^2}\right)代入 LLR 定义,可以得到一个特别简单的结果:
\lambda_i=\ln\frac{W(y_i\mid 0)}{W(y_i\mid 1)}=\frac{2y_i}{\sigma^2}这条公式很有直觉:在噪声方差 \sigma^2 固定时,y_i 越大,越支持发送 0;y_i 越小,越支持发送 1。噪声越小,同样的 y_i 会给出更大的 |\lambda_i|,因为接收端对观测更有信心。
后面的译码文章里,我们不会把 \underline{y}_0^{N-1} 当成 LLR。接收观测是 \underline{y}_0^{N-1},原始信道 LLR 向量是 \underline{\lambda}_0^{N-1}。这两个符号要分清楚。
一个最小例子:从接收值到 LLR
设 AWGN 噪声方差为 \sigma^2=0.5。这时:
\lambda_i=\frac{2y_i}{0.5}=4y_i假设接收端得到几个观测值:
| 观测 y_i | LLR \lambda_i | 硬判决 \hat{c}_i | 直觉解释 |
|---|---|---|---|
| 0.8 | 3.2 | 0 | 比较支持 0 |
| 0.05 | 0.2 | 0 | 勉强偏向 0,但很不确定 |
| -0.1 | -0.4 | 1 | 勉强偏向 1,也很不确定 |
| -1.4 | -5.6 | 1 | 很支持 1 |
硬判决只留下第三列。软判决会保留第二列,也就是 LLR。译码器看到 0.2 和 3.2 时,会知道它们虽然都偏向 0,但可靠程度不同;看到 -0.4 和 -5.6 时,也会知道后者更不应该轻易翻转。
这就是为什么现代译码算法几乎都尽量使用软信息。Polar 码的 SC 译码、SCL 译码和路径度量更新,后面都会围绕 LLR 展开。
符号概念总结
把这一篇的概念放回 Polar 码主线里,可以得到一张很清楚的对应表:
| 概念 | 含义 |
|---|---|
| W | 表示基础二元输入信道 |
| N | 表示 Polar 码长,也是递归结构的规模 |
| K | 表示进入 Polar 编码器的信息比特数 |
| R=K/N | 衡量编码效率 |
| I(W) | 衡量信道可靠性,也是对称容量与极化子信道选择分析的核心量 |
| \underline{y}_0^{N-1} | 表示接收端观测 |
| \underline{\lambda}_0^{N-1} | 表示由观测换算出的原始信道 LLR |
| \lambda_i | 表示第 i 个接收位置的原始 LLR |
第三篇会从最小的二阶核 \mathbf{F}_2 开始,解释 Polar 编码为什么会长成一个递归的矩阵和蝶形网络。再往后,信道 W 会被组合成 W_N,再分裂成 W_N^{(i)},于是“信道可靠性”就变成了“每个极化子信道可靠不可靠”的问题。
容易混淆的几个点
第一,不要把 \underline{y} 当成 LLR。\underline{y}_0^{N-1} 是接收观测,\underline{\lambda}_0^{N-1} 才是原始信道 LLR 向量。
第二,不要把码率和容量混成一回事。R=K/N 是你设计的编码速率,I(W) 是信道本身能支持多少信息传输的度量。编码设计要让码率和信道条件匹配。
第三,不要以为硬判决足够。硬判决只告诉你偏向 0 还是 1,LLR 还告诉你“有多确定”。Polar 译码如果丢掉软信息,很多结构优势就发挥不出来。
第四,不要忘记 LLR 的符号约定。本系列使用 \ln(W(y\mid 0)/W(y\mid 1)),所以 LLR 为正时偏向 0,为负时偏向 1。若采用相反定义,后面的判决规则必须整篇同步反过来。
小结
B-DMC 提供了 Polar 码理论最常用的信道模型;N,K,R 描述一个码的基本规模和效率;对称容量 I(W) 描述信道能可靠传多少信息;硬判决只保留 0/1 结果,而软判决保留可靠程度;LLR 则是把软信息送进译码器的核心形式。
下一篇开始,我们就正式进入 Polar 编码结构。从一个最小的二阶核 \mathbf{F}_2 出发,看 Polar 码的生成矩阵和递归编码网络是怎样一步步长出来的。
参考
- C. E. Shannon, “A mathematical theory of communication,” Bell Syst. Tech. J., vol. 27, no. 3, pp. 379-423, Jul. 1948; vol. 27, no. 4, pp. 623-656, Oct. 1948, doi: 10.1002/j.1538-7305.1948.tb01338.x; 10.1002/j.1538-7305.1948.tb00917.x.
- E. Arikan, “Channel polarization: A method for constructing capacity-achieving codes for symmetric binary-input memoryless channels,” IEEE Trans. Inf. Theory, vol. 55, no. 7, pp. 3051-3073, Jul. 2009, doi: 10.1109/TIT.2009.2021379.