ターボ符号:「二人の名探偵が何度も相談しながら真犯人を絞り込む」
LDPC符号:「大勢の証人が少しずつ情報を持ち寄り、多数の意見から正解を導く」
Polar Code:「情報を『通りやすい道』と『通りにくい道』に整理し、大事な荷物だけを安全な道に通す」 ーーーーー これらを、図や、数式で、表現できますか?、
ご提示いただいたそれぞれの比喩は、各誤り訂正符号の本質(アルゴリズムの挙動や構造)を見事に捉えています。
これらを直感的なイメージ図と、通信理論における数式・数学的表現で整理しました。
1. ターボ符号 (Turbo Codes)
イメージ: 「二人の名探偵が何度も相談しながら真犯人を絞り込む」
互いに異なる順番(インターリーバ)でデータを受け取った2つの構成符号器/復号器(名探偵)が、試行錯誤(反復処理)を通じて互いの信頼度情報を交換し合う仕組みです。
送信側 (Encoder) 受信側 (Iterative Decoder)
+-----------------------+
[情報 bit] ──+──> [構成符号1] ───> │ 復号器 1 (探偵A) │ ── (外部情報 L1) ──┐
│ +-----------------------+ │
↓ ▲ ▼
[並べ替え] │ [並べ替え / 戻し]
│ │ │
└──> [構成符号2] ───> +-----------------------+ │
│ 復号器 2 (探偵B) │ <──────────────────┘
+-----------------------+
│
▼ (反復後に判定)
[推定 bit]
ターボ復号における外部情報の更新
ターボ復号の本質は、LLR(Log-Likelihood Ratio: 対数確からしさ比)を用いて、各復号器が事後確率を反復的に更新することにあります。
La(m−1)(uk)もう一方の復号器から受け取った事前情報(A Priori Information)
LAPP(m)(uk)BCJRアルゴリズムにより計算された事後確率に対応するLLR
Le(m)(uk)今回の復号処理で新たに得られた外部情報(Extrinsic Information)
外部情報(Extrinsic Information)の計算
Le(m)(uk)=LAPP(m)(uk)−Lsys(uk)−La(m−1)(uk)各項の意味
Lsys(uk)受信信号から直接得られる情報(チャネル情報)La(m−1)(uk)もう一方の復号器から受け取った事前情報(A Priori Information)
LAPP(m)(uk)BCJRアルゴリズムにより計算された事後確率に対応するLLR
Le(m)(uk)今回の復号処理で新たに得られた外部情報(Extrinsic Information)
情報の分離という観点
外部情報は、 外部情報=事後情報−チャネル情報−事前情報すなわち、 Le=LAPP−Lsys−Laという形で表されます。 これは、「自分が最初から持っていた情報」と 「相手から与えられた情報」を除き、 「今回の復号処理で新たに発見した情報だけ」を抽出することを意味します。
探偵の例での解釈
各復号器を探偵と考えると、 新しい手掛かり=最終判断−元の証拠−相手から聞いた情報となります。 つまり探偵Aは、 Le(m)(uk)だけを探偵Bへ渡し、探偵Bはそれを La(m)(uk)として利用します。 その後、 Le(1)→Le(2)→⋯→Le(m)という反復(Iteration)を繰り返し、 ∣LAPP(uk)∣が徐々に大きくなっていくことで、ビット uk が 0 か 1 かに対する確信度が高まります。最終的な判定
反復終了後、事後LLRの符号によって判定します。 u^k={10(LAPP(uk)≥0)(LAPP(uk)<0)LLRの絶対値 ∣LAPP(uk)∣が大きいほど、その判定に対する信頼度が高いことを意味します。2. LDPC符号 (Low-Density Parity-Check Codes)
イメージ: 「大勢の証人が少しずつ情報を持ち寄り、多数の意見から正解を導く」
データの1ビット(変数ノード/証人)と、チェック条件(チェックノード/検証者)が疎に結合した二部グラフ(タナーグラフ)上で、メッセージを受け渡し(Message Passing)しながら全体の矛盾を解消します。
(変数ノード : bit / 証人) (チェックノード : パリティ / 検証者)
[ v_1 ] ─────────────── ( c_1 ) 「v_1 + v_2 + v_3 = 0 か?」
│ └──────────┐ /
[ v_2 ] ───────┼───────┘
│ /│
[ v_3 ] ─────┘ └─── ( c_2 ) 「v_1 + v_3 + v_4 = 0 か?」
│ /
[ v_4 ] ──────────┘
LDPC符号の数式表現
LDPC(Low-Density Parity-Check)符号は、多くの要素が 0 である疎な検査行列 H によって定義されます。パリティ検査条件
符号語 x は、 HxT=0(mod2)を満たさなければなりません。 ここで、 x=(x1,x2,…,xn)は送信された符号語です。Belief Propagation(確率伝搬法)
LDPC復号では、二部グラフ上の- 変数ノード(Variable Node)
- チェックノード(Check Node)
1. チェックノード → 変数ノード
メッセージ更新式
μcj→vi=2tanh−1k∈Vj∖{i}∏tanh(2μvk→cj)意味
- cj:チェックノード
- vi:変数ノード
- Vj:チェックノード cj に接続している変数ノード集合
解釈
チェックノードは i∈Vj⨁xi=0というパリティ条件を満たすように、「他の変数ノードたちの意見を総合して、 この変数ノードはこうであるはずだ」という推定結果を返します。
2. 変数ノード → チェックノード
メッセージ更新式
μvi→cj=Lch(vi)+k∈Ci∖{j}∑μck→vi意味
Lch(vi)通信路から得られる初期LLR(受信情報)Ci変数ノード vi に接続するチェックノード集合
解釈
変数ノードは、 自分の観測情報+他のチェックノードからの意見を足し合わせて、新しい確信度を作ります。 ただし、送り先のチェックノード cj 自身から受け取った情報は除外します。情報更新の本質
変数ノードの更新式は、 新しい確信=受信信号+他の検証者の意見と解釈できます。 つまり、 μvi→cj=Lch(vi)+k∈Ci∖{j}∑μck→viは、「自分が実際に観測した証拠」と 「他の検証者から得た情報」を統合して、 相手へ伝える確信度を更新することを意味します。
証人と検証者のたとえ
- 変数ノード vi :証人
- チェックノード cj :検証者
検証者の処理
μcj→vi=f(μv1→cj,…,μvn→cj)他の証人全員の意見を集計して、「パリティ条件から見て、この証人の発言は正しいか」を判断します。
証人の処理
μvi→cj=Lch(vi)+k∈Ci∖{j}∑μck→vi証人は、「自分が見た事実」 + 「他の検証者の評価」を合わせて、自分の証言の確信度を調整します。
反復復号
この情報交換を t=1,2,…,T回繰り返します。 μ(1)→μ(2)→⋯→μ(T)反復が進むにつれて各ビットのLLRが収束し、 Li=Lch(vi)+k∈Ci∑μck→viが最終的な事後LLRとなります。最終判定
x^i={10(Li≥0)(Li<0)また、 ∣Li∣が大きいほど、「このビットは 0(または1)である」という確信度が高いことを表します。
一行でまとめると
LDPC復号=「受信情報」と「近傍ノードの意見」を反復的に交換して確信度を高める処理と表現できます。3. Polar Code (ポーラ符号)
イメージ: 「情報を『通りやすい道』と『通りにくい道』に整理し、大事な荷物だけを安全な道に通す」
通信路の結合と分離演算(Polarization / 偏極)によって、複数の平均的な通信路を「極めて高品質な極上ルート(容量 )」と「ノイズだらけの悪質ルート(容量 )」の極端な2群に分離します。
元の通信路 (すべて同じ品質) 通信路偏極 (Channel Polarization)
┌──────┐ ┌────────────────────────┐
│ W_1 │ ── (品質: 普通) ─┐ │ 極上ルート (容量 ≒ 1) │ ─── データ bit
└──────┘ │ ├────────────────────────┤
┌──────┐ ├──[偏極演算]─>│ 極上ルート (容量 ≒ 1) │ ─── データ bit
│ W_2 │ ── (品質: 普通) ─┤ ├────────────────────────┤
└──────┘ │ │ 悪質ルート (容量 ≒ 0) │ ─── 0で固定 (Frozen bit)
┌──────┐ │ ├────────────────────────┤
│ W_3 │ ── (品質: 普通) ─┘ │ 悪質ルート (容量 ≒ 0) │ ─── 0で固定 (Frozen bit)
└──────┘ └────────────────────────┘
Polar符号の数式表現
Polar符号は、通信路の「良い部分」と「悪い部分」を人工的に作り出し、良い通信路だけに情報を載せる誤り訂正符号です。1. 符号化
基本カーネル(Kernel) F=[1101]を用いて生成行列を構成します。生成行列
GN=BNF⊗nここで、 N=2nです。各記号の意味
F⊗nカーネル行列 F の n 回クロネッカー積BNビット反転(Bit-Reversal)置換行列
GNPolar符号の生成行列
符号語の生成
情報ビット列 u=(u1,u2,…,uN)から符号語 x=(x1,x2,…,xN)を生成します。 x=uGN2. 通信路の極化(Channel Polarization)
通信路 W を繰り返し結合・分離すると、 W→WN(1),WN(2),…,WN(N)という N 個の合成通信路が得られます。バッタチャリアパラメータ
各通信路の信頼性は、 Z(WN(i))によって評価されます。バッタチャリアパラメータの解釈
Z(WN(i))≈0誤り確率が小さい ⟹安全な通信路Z(WN(i))≈1誤り確率が大きい ⟹危険な通信路
極化定理
通信路数を無限大まで増やすと、 N→∞limZ(WN(i))∈{0,1}となります。 つまり、 0<Z<1の中途半端な通信路はほとんど消滅し、 すべての通信路は 非常に良い通信路または 非常に悪い通信路のいずれかへ極化されます。3. 情報ビット配置
良い通信路集合を Aとします。 その補集合を Acとします。ビット割り当て規則
ui=⎩⎨⎧di,0,i∈Ai∈Ac情報ビット
i∈Aならば ui=diを配置します。 ここで diは実際に送りたい情報です。Frozen Bit
i∈Acならば ui=0を配置します。 これを Frozen Bitと呼びます。安全な道と危険な道の解釈
A={i∣Z(WN(i))≈0}安全な通信路の集合Ac={i∣Z(WN(i))≈1}危険な通信路の集合
したがって、 情報→良い通信路 固定値→悪い通信路という配置を行います。
探偵の例での解釈
通信路を複数の探偵と考えると、- 優秀な探偵(信頼度が高い)
- 信頼できない探偵(信頼度が低い)
「最も信頼できる通信路だけに重要な情報を載せ、信頼できない通信路は最初から既知の値に固定する」という考え方に基づいています。