Transcript Document

chapter 3:
エラーから情報を守る
1
chapter 3の目的
通信路で発生する誤りを検出し,訂正する技術について学ぶ
現実の通信環境では...
“送信情報 = 受信情報” の保証はない
無線通信...雑音により,信号波形が崩れる
CD, DVD...キズや埃により,読み取り障害が発生
「“0” を送ったはずなのに,“1”が届いてしまう」⇒ 誤りの発生
2
デジタル通信と誤り
デジタル通信では,1ビットの誤りでも影響が大きい
A
B
C
D
符号語
0
10
110
111
AC
0110
1110
0100
DA
ABA
誤りを「減らす」ことはできても,完全に「なくす」ことは難しい
無線通信 ... 送信電力の増加 ⇒ 消費電力の増加
CD, DVD ... 記録密度の抑制 ⇒ データ容量の低下
3
通信路符号化
誤りの発生... 送信情報の一部が,途中で失われることに相当
途中で一部が失われても,必要十分な量の情報が届くよう,
余分な情報を事前に上乗せして送信すればよい
=
な情報を付加する
やみくもに冗長な情報を付加すればよいというわけではない
誤りの訂正に効果的な,適切な符号化方式が必要
⇒ 通信路符号化
4
2つの符号化
chapter 2 ... 情報源符号化
情報源からの出力に対する符号化
コンパクトな情報表現を与える
chapter 3 ... 通信路符号化
通信路への入力に対する符号化
誤りに強い情報表現を与える
どちらも「符号化」だが,目的とする方向性が異なる
5
「符号化」の複層構造
アプリケーション
送信者
受信者
情報源符号化
符号化
復号
情報保護
暗号化
復号
通信路符号化
符号化
復号
通信路
6
chapter 3 の構成
通信路のモデル化
通信路符号化の概要
線形符号
定義と基本的な性質
生成行列・検査行列と符号化・復号
ハミング符号
線形符号の性能評価
シャノンの通信路符号化定理
性能限界に迫る符号化方式
7
通信路のモデル
以下の議論では,デジタル通信路を仮定
入出力には,記号が用いられる
1記号の入力に 対し,必ず1記号の出力が得られる
遅延や消失は,モデルとしては考えない
入力記号と出力記号の関係は,確率的に与えられる
入力
(送信側)
変調器
デジタル
通信路
アナログ
通信路
出力
(受信側)
復調器
8
2元対称通信路
2元対称通信路 (binary symmetric channel, BSC)
入力記号 = 出力記号 = {0, 1}
確率 𝑝で,記号の 0 と 1が反転するような通信路 【誤り】
p =ビット誤り率(通常は p < 0.5)
0
0
出力
入力
1
1–p
p
p
1–p
1
00000 を送信したとき...
00000が受信される確率 = 1 − 𝑝 5
00001が受信される確率 = 1 − 𝑝 4 𝑝
00011が受信される確率 = 1 − 𝑝 3 𝑝2
...
9
2元消失通信路
2元消失通信路 (binary erasure channel, BEC)
入力記号= {0, 1},出力記号 = {0, 1, X}
確率 𝑝で,ナゾの Xが出力される通信路
X=「ここに 0 か 1 があったが,消えてしまった」 【消失】
0
p
p
1–p
0
X
1
出力
入力
1
1–p
1–p–q
0
p 0
q
X
q p
1
1
1–p–q
消失と誤りの両方が
発生する複雑なモデル
10
その他の通信路
記憶のある通信路
誤りの発生確率に,時間的な相関があるもの
バースト誤り通信路が代表的
011010101010010101011010110101010
011010101011011010101010110101010
非定常な通信路
時間経過に伴い,誤り発生の確率分布が変化する
楕円軌道を取る人工衛星など
11
通信路符号化:準備
本講義では,以下のような符号化方式を考える
符号化器への入力: 𝑘 ビットのデータ
符号化器の出力(符号語): 𝑛 ビットのデータ
𝑘<𝑛
データ = 系列 = ベクトル
𝑏1𝑏2 … 𝑏𝑚 = (𝑏1, 𝑏2, … , 𝑏𝑚)
加減算はビット単位の2進演算
001 + 101 = 100
XORと考えてもOK
𝑚ビットデータの集合を𝑉 𝑚 と書く
𝑉𝑘
𝑉𝑛
12
符号化と復号
符号化: 任意の 𝑘 ビットデータから,𝑛 ビットの符号語を計算する
𝑉𝑛
𝑉𝑘
符号=
符号語の集合
𝐶
復号: (誤りを含む可能性のある)任意の 𝑛 ビットデータから,
【誤り検出】 誤りの有無を判定する
【誤り訂正】 送信されたであろう符号語を推定する
復号が,符号化の逆操作になっていないことに注意
13
復号能力の限界
【誤り検出】 誤りの有無を判定する
誤りが多数発生し,他の符号語になってしまう場合も
「検出できない誤り」もある
【誤り訂正】 送信されたであろう符号語を推定する
送信されたであろう符号語=ある確率を最大にする符号語
復号結果が間違っていることも
通信路符号化の性能には,限界がある
符号の作り方を工夫すれば,性能を向上させることができる
14
良い符号とは?
𝑉𝑛
符号 𝐶 は
の部分集合
𝑉 𝑛 には 2𝑛 個の系列
𝐶 には 2𝑘 個の系列(符号語)
2𝑛
 全部で 𝑘 通りの符号が存在
2
𝑉𝑛
𝑉𝑘
00
01
10
11
000
011
101
110
𝐶
どの符号を選ぶのが良いか?
誤り訂正能力が高いこと
符号化,復号操作が容易に行えること
線形符号 (linear code) と呼ばれる符号が有利
15
線形符号
符号化が簡単
復号が,比較的簡単に行える場合が多い
誤り訂正能力の高い符号の設計法がいくつか知られている
性能評価が比較的行いやすい.
現実世界で利用されている符号のほとんどが線形符号
線形符号の定義を与える前に,いくつかの簡単な例を示す
16
偶パリティ符号
偶パリティ符号(even parity code)の符号化操作:
情報 (𝑎1, 𝑎2, … , 𝑎𝑘 ) ∈ 𝑉𝑘 に対し...
𝑝 = 𝑎1 + 𝑎2 + … + 𝑎𝑘 を計算する
(𝑎1, 𝑎2, … , 𝑎𝑘 , 𝑝) を,データ (𝑎1, 𝑎2, … , 𝑎𝑘 ) の符号語とする
𝑘 = 3の場合 000
001
010
011
100
101
110
111
𝑝 =0+1+1=0
0000
0011
0101
0110
1001
1010
1100
1111 符号 𝐶
17
偶パリティ符号の特徴
0000
0011
0101
0110
1001
1010
1100
1111
符号 𝐶
符号長は 𝑛 = 𝑘 + 1
符号語は,
もともと送りたかった情報そのもの(情報記号)
あとで付け足した記号(検査記号,冗長記号)
からなる(組織符号, systematic code)
情報記号
1010
検査記号
符号語に含まれる1の個数は,かならず偶数
情報記号中に1が偶数個 ⇒ 𝑝 = 0
情報記号中に1が奇数個 ⇒ 𝑝 = 1
18
偶パリティ符号の性能
送信した符号語に
奇数個の誤りが発生した場合 ... 誤りを検出可能
偶数個の誤りが発生した場合 ... 誤りを検出できない
いずれにせよ,誤りを訂正する能力はない
0個
1010
送信符号語:1010
偶数個
奇数個
0000 1001
0011
0101 1100
0110 1111
0001
0010
0100
0111
1000
1011
1101
1110
𝐶
19
水平垂直パリティ検査符号
水平垂直パリティ検査符号の符号化:
情報記号を長方形状に並べる
水平方向および垂直方向に偶パリティ符号化を行う
検査記号を一次元に配列し,情報記号に付加する
k = 9 の場合: (a1, a2, ..., a9) の符号化
a1
a2
a3
p
1
a4
a5
a6
p2
a7
a8
a9
p3
q1
q2
q3
p1 = a1 + a2 + a3
p2 = a4 + a5 + a6
p3 = a7 + a8 + a9
q1 = a1 + a4 + a7
q2 = a2 + a5 + a8
q3 = a3 + a6 + a9
r = a1 + a2 + ... + a9
r 符号語は
(a1, a2, ..., a9, p1, p2, p3, q1, q2, q3, r)
20
符号化の例
011100101 を符号化すると,符号語は 0111001010100101
0
1
1
0
1
0
0
1
1
0
1
0
0
1
0
1
0111001010100101
情報記号
検査記号
特徴
水平垂直パリティ検査符号は,組織符号
𝑘 = 𝑎𝑏 のとき,符号長は 𝑛 = 𝑎𝑏 + 𝑎 + 𝑏 + 1
21
水平垂直パリティ検査符号の性能(1)
符号語中の1ビット誤りを訂正可能
受信語を,送信語と同じ順番で並べ,
各行および列の1の個数を数える
誤りが発生しなかったとき
⇒ 全ての行,列は偶数個の1を含む
1ビット誤りが発生したとき,
⇒ 1が奇数個ある行,列が,それぞれ1個ずつ存在
⇒ その行と列が交差するところが誤りを含む
010110101
受信語
011110101
誤りを訂正
0
1
1 偶
0
1
0 奇
1
0
1 偶
奇
偶
偶
22
水平垂直パリティ検査符号の性能(2)
2ビット誤りが発生したとき,
実際の誤り
どちらのパターンかわからない
1が奇数個の行,列が
2つずつ存在することになる
誤りが発生していることはわかるが,訂正はできない
23
水平垂直パリティ検査符号の性能(3)
実際の誤り
1が奇数個の列が2つある.
全ての行は,偶数個の1を含む
誤りが発生していることはわかるが,訂正はできない
24
線形符号について
線形符号
定義と基本的な性質
生成行列・検査行列と符号化・復号
ハミング符号
線形符号の性能評価
25
線形符号の定義
以下のように構成される符号を線形符号と呼ぶ:
符号語=(𝑘ビットの情報記号)+(𝑚ビットの検査記号)
(𝑥1 , 𝑥2 , … , 𝑥𝑘 , 𝑝1 , 𝑝2 , … , 𝑝𝑚 )
情報記号 検査記号(冗長記号)
検査記号は,情報記号の線形式により求められる
𝑝1 = 𝑎1,1 𝑥1 + 𝑎1,2 𝑥2 + ⋯ +𝑎1,𝑘 𝑥𝑘
𝑝2 = 𝑎2,1 𝑥1 + 𝑎2,2 𝑥2 + ⋯ +𝑎2,𝑘 𝑥𝑘
⋮
𝑝𝑚 = 𝑎𝑚,1 𝑥1 + 𝑎𝑚,2 𝑥2 + ⋯ +𝑎𝑚,𝑘 𝑥𝑘
(𝑎𝑖,𝑗 ∈ 0,1 )
26
線形符号の例
偶パリティ符号:(𝑥1 , 𝑥2 , 𝑥3 , 𝑝1 )
𝑝1 = 𝑥1 + 𝑥2 + 𝑥3
水平垂直パリティ検査符号:(𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , 𝑝1 , 𝑝2 , 𝑝3 , 𝑝4 , 𝑝5 )
𝑥1
𝑥2 𝑝1
𝑝1 = 𝑥1 +𝑥2
𝑝2 =
𝑥3 𝑥4 𝑝2
𝑝3 = 𝑥1
𝑝3
𝑝4 =
𝑝4 𝑝5
𝑥3 +𝑥4
+𝑥3
𝑥2
+𝑥4
𝑝5 = 𝑥1 +𝑥2 +𝑥3 +𝑥4
27
線形符号の性質
符号 𝐶 が線形符号であれば...
定理1: 0, … , 0 ∈ 𝐶
証明:
検査記号は情報記号の線形式で定まるため,
𝑥1 , … , 𝑥𝑘 = (0, … , 0)なら 𝑝1 , … , 𝑝𝑚 = (0, … , 0),
よって 𝑥1 , … , 𝑥𝑘 , 𝑝1 , … , 𝑝𝑚 = 0, … , 0 ∈ 𝐶
定理2:任意の符号語𝒖, 𝒗 ∈ 𝐶に対し,𝒖 + 𝒗 ∈ 𝐶
証明:
次ページで...
28
定理2の証明(その1)
まずは補題を示す
補題:任意の線形関数 𝑓(𝑥1, … , 𝑥𝑘 )について,
𝑓 𝑢1 , … , 𝑢𝑘 + 𝑓 𝑣1 , … , 𝑣𝑘 = 𝑓 𝑢1 + 𝑣1 , … , 𝑢𝑘 + 𝑣𝑘
証明:
𝑓 𝑥1, 𝑥2, … , 𝑥𝑘 = 𝑎1 𝑥1 + ⋯ + 𝑎𝑘 𝑥𝑘 とすると
左辺=𝑎1 𝑢1 + ⋯ + 𝑎𝑘 𝑢𝑘 + 𝑎1 𝑣1 + ⋯ + 𝑎𝑘 𝑣𝑘
=𝑎1 𝑢1 + 𝑣1 + ⋯ + 𝑎𝑘 (𝑢𝑘 + 𝑣𝑘 )=右辺
29
定理2の証明(その2)
定理2:任意の符号語𝒖, 𝒗 ∈ 𝐶に対し,𝒖 + 𝒗 ∈ 𝐶
証明:
𝑖番目の検査記号を与える線形式を 𝑓𝑖 (𝑥1 , … , 𝑥𝑘 )とすると
𝒖 = ( 𝑢1
+𝒗=(
, … , 𝑢𝑘
𝑣1 , … ,
, … , 𝑓𝑖 𝑢1 , … , 𝑢𝑘
𝑣𝑘 , … ,
𝑓𝑖 𝑣1 , … , 𝑣𝑘
,…)
,…)
𝒖 + 𝒗 = ( 𝑢1 + 𝑣1 , … , 𝑢𝑘 + 𝑣𝑘, … , 𝑓𝑖 𝑢1 , … , 𝑢𝑘 + 𝑓𝑖 𝑣1 , … , 𝑣𝑘 , … )
= ( 𝑢1 + 𝑣1 , … , 𝑢𝑘 + 𝑣𝑘, … ,
𝑓𝑖 𝑢1 + 𝑣1 , … , 𝑢𝑘 + 𝑣𝑘 ,
∈𝐶
前ページの補題を使用
…)
30
線形符号の性質(一部再掲)
符号 𝐶 が線形符号であれば...
定理1: 0, … , 0 ∈ 𝐶
定理2:任意の符号語𝒖, 𝒗 ∈ 𝐶に対し,𝒖 + 𝒗 ∈ 𝐶
証明ナシで,以下を紹介...
定理3:
任意の符号語𝒖, 𝒗 ∈ 𝐶に対し𝒖 + 𝒗 ∈ 𝐶なら,𝐶は線形符号
定理4:
𝐶が線形符号ならば,𝐶は線形空間(ベクトル空間)を構成する
31
線形符号の構成例
𝑘 = 3の場合:情報記号列は (𝑥1, 𝑥2, 𝑥3)
検査記号を適当に定義する.
𝑝1 = 𝑥1 + 𝑥2
⇒ 符号語は (𝑥1, 𝑥2, 𝑥3, 𝑝1, 𝑝2)
𝑝2 =
𝑥2 + 𝑥3
00000
00101
01011
01110
10010
10111
11001
11100
00000
00000
00101
01011
01110
10010
10111
11001
11100
00101
00101
00000
01110
01011
10111
10010
11100
11001
01011
01011
01110
00000
00101
11001
11100
10010
10111
01110
01110
01011
00101
00000
11100
11001
10111
10010
10010
10010
10111
11001
11100
00000
00101
01011
01110
10111
10111
10010
11100
11001
00101
00000
01110
01011
11001
11001
11100
10010
10111
01011
01110
00000
00101
11100
11100
11001
10111
10010
01110
01011
00101
00000
32
chapter 3 の構成
通信路のモデル化
通信路符号化の概要
線形符号
定義と基本的な性質
生成行列・検査行列と符号化・復号
ハミング符号
線形符号の性能評価
シャノンの通信路符号化定理
性能限界に迫る符号化方式
33
符号語の「中の仕組み」
符号語 =(𝑥1 , … , 𝑥𝑘 , 𝑝1 , … , 𝑝𝑚 )
𝑝1 = 𝑎1,1 𝑥1 + ⋯ +𝑎1,𝑘 𝑥𝑘
⋮
𝑝𝑚 = 𝑎𝑚,1 𝑥1 + ⋯ +𝑎𝑚,𝑘 𝑥𝑘
𝑥1 , … , 𝑥𝑘
= 𝑥1 , … , 𝑥𝑘
1 ⋯ 0
⋮ ⋱ ⋮
0 ⋯ 1
𝑝1 , … , 𝑝𝑚
𝑎1,1
⋮
𝑎1,𝑘
⋯ 𝑎𝑚,1
⋱
⋮
⋯ 𝑎𝑚,𝑘
1 ⋯ 0 𝑎1,1
⋮ ⋱ ⋮
⋮
0 ⋯ 1 𝑎1,𝑘
⋯ 𝑎𝑚,1
⋱
⋮
⋯ 𝑎𝑚,𝑘
= 𝑥1 , … , 𝑥𝑘
𝑥1 , … 𝑥𝑘 , 𝑝1 , … , 𝑝𝑚 = 𝑥1 , … , 𝑥𝑘
34
生成行列
𝑥1 , … 𝑥𝑘 , 𝑝1 , … , 𝑝𝑚
= 𝑥1 , … , 𝑥𝑘
1 ⋯ 0 𝑎1,1
⋮ ⋱ ⋮
⋮
0 ⋯ 1 𝑎1,𝑘
𝑘 × 𝑘単位行列
⋯ 𝑎𝑚,1
⋱
⋮
⋯ 𝑎𝑚,𝑘
生成行列
検査記号定義式の
係数行列の転置
線形符号の符号化は,行列演算1回で実現可能
⇒ 計算機や電子回路が「得意とする計算」
⇒符号化操作が効率良く実行可能
35
生成行列の例
偶パリティ符号:(𝑥1 , 𝑥2 , 𝑥3 , 𝑝1 )
𝑝1 = 𝑥1 + 𝑥2 + 𝑥3
1 0 0 1
𝐺= 0 1 0 1
0 0 1 1
水平垂直パリティ検査符号:(𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , 𝑝1 , 𝑝2 , 𝑝3 , 𝑝4 , 𝑝5 )
𝑝1 = 𝑥1 +𝑥2
𝑝2 =
𝑥3 +𝑥4
𝑝3 = 𝑥1
+𝑥3
𝑝4 =
𝑥2
+𝑥4
𝑝5 = 𝑥1 +𝑥2 +𝑥3 +𝑥4
1 0 0 0 1 0 1 0 1
0 1 0 0 1 0 0 1 1
𝐺=
0 0 1 0 0 1 1 0 1
0 0 0 1 0 1 0 1 1
36
生成行列を用いた符号化
𝑘ビットデータ 𝒖 を符号化したいときは...
𝒖 を,左側から生成行列 𝐺に乗じた結果 𝒖𝐺 が符号語
水平垂直パリティ検査符号で 𝒖 = (0,1,1,1)を符号化...
0 1 1
1 1 0
1 0 1
1
0
(0,1,1,1)
0
0
⇒ 符号語は 011110101
0
1
0
0
0
0
1
0
0
0
0
1
1
1
0
0
0
0
1
1
1
0
1
0
0
1
0
1
1
1
1
1
= (0,1,1,1,1,0,1,0,1)
37
論理回路による符号化器の実現
x
情 x1
報 x2
記 x3
号 4
x 1 x 2 x 3 x 4 p1
符
1
0
(𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 )
0
0
0
1
0
0
0
0
1
0
0
0
0
1
1
1
0
0
0
0
1
1
1
0
1
0
0
1
0
1
p2
号
1
1
1
1
p3
p4
p5
語
排他的論理和
38
生成行列の行ベクトル
1 ⋯
𝐺= ⋮ ⋱
0 ⋯
0 𝑎1,1
⋮
⋮
1 𝑎1,𝑘
⋯ 𝑎𝑚,1
⋱
⋮
⋯ 𝑎𝑚,𝑘
𝑝1 = 𝑎1,1 𝑥1 + ⋯ + 𝑎1,𝑖 𝑥𝑖 + ⋯ +𝑎1,𝑘 𝑥𝑘
⋮
𝑝𝑚 = 𝑎𝑚,1 𝑥1 + ⋯ + 𝑎𝑚,𝑖 𝑥𝑖 + ⋯ +𝑎1,𝑘 𝑥𝑘
𝐺の第 𝑖 行ベクトルは
>
(0, … , 0,1,0, … , 0, 𝑎1,𝑖 , … , 𝑎𝑚,𝑖 )
𝑖ビット目だけが1
𝑥1 , … , 𝑥𝑘 = (0, … , 0,1,0, … 0)と
したときの 𝑝1 , … , 𝑝𝑚 となっている
𝐺の第 𝑖行ベクトルは, 0, … , 0,1,0, … , 0 に対応する符号語
39
線形空間としての線形符号
定理4(再掲):
𝐶が線形符号ならば,𝐶は線形空間(ベクトル空間)を構成する
定理5:
生成行列の行ベクトルは,線形空間の基底をなす
𝐺=
𝒈1
𝒈2
⋮ とすると,任意の符号語 𝒖 ∈ 𝐶 は以下のように書ける
𝒈𝑘
𝒖 = 𝑢1𝒈1 + 𝑢2𝒈2 + … + 𝑢𝑘𝒈𝑘
(𝑢𝑖 ∈ {0, 1})
40
32ページの例では...
情報記号 (𝑥1, 𝑥2, 𝑥3) に対し,
𝑝1 = 𝑥1 + 𝑥2
𝑝2 =
𝑥2 + 𝑥3
1 0 0 1 0
𝐺= 0 1 0 1 1
0 0 1 0 1
符号語
00000 = 0・10010 + 0・01011 + 0・00101
00101 = 0・10010 + 0・01011 + 1・00101
01011 = 0・10010 + 1・01011 + 0・00101
01110 = 0・10010 + 1・01011 + 1・00101
10010 = 1・10010 + 0・01011 + 0・00101
10111 = 1・10010 + 0・01011 + 1・00101
11001 = 1・10010 + 1・01011 + 0・00101
11100 = 1・10010 + 1・01011 + 1・00101
G の行ベクトルが,基底となっていることがわかる
41
ここまでのまとめ:符号化と生成行列
線形符号は...
検査記号が,情報記号の線形式で定義される符号
符号語集合がベクトル空間をなすような符号
生成行列
符号化操作を効率的に行うための道具
組み合わせ回路の実現等にも有用
行ベクトルが,符号の基底となっている
42
符号語であるための条件(1)
水平垂直パリティ検査符号:
1
0
(𝑢1 , … 𝑢4 , 𝑝1 , … , 𝑝5 ) = (𝑢1 , … , 𝑢4 )
0
0
0
1
0
0
0
0
1
0
0
0
0
1
1
1
0
0
0
0
1
1
1
0
1
0
0
1
0
1
1
1
1
1
系列 (𝑥1 , … , 𝑥9 )が符号語... 𝑥1 , … , 𝑥9 ∈ 𝐶
𝑥5 = 𝑥1 +𝑥2
𝑥6 =
𝑥3+𝑥4
𝑥7 = 𝑥1
+𝑥3
𝑥2
+𝑥4
必要十分条件 𝑥8 =
𝑥9 = 𝑥1 +𝑥2+𝑥3+𝑥4
43
符号語であるための条件(2)
各左辺を右辺に移項すると...
𝑥5 = 𝑥1 +𝑥2
𝑥6 =
𝑥3+𝑥4
𝑥7 = 𝑥1
+𝑥3
𝑥8 =
𝑥2
+𝑥4
𝑥9 = 𝑥1 +𝑥2+𝑥3+𝑥4
𝑥1 +𝑥2
−𝑥5
=0
𝑥3+𝑥4
−𝑥6
=0
𝑥1
+𝑥3
−𝑥7
=0
𝑥2
+𝑥4
−𝑥8
=0
𝑥1 +𝑥2+𝑥3+𝑥4
−𝑥9 = 0
2進演算:𝑥 − 𝑦 = 𝑥 + 𝑦
𝑥1 , … , 𝑥9 ∈ 𝐶
𝑥1 +𝑥2
+𝑥5
=0
𝑥3+𝑥4
+𝑥6
=0
𝑥1
+𝑥3
+𝑥7
=0
𝑥2
+𝑥4
+𝑥8
=0
𝑥1 +𝑥2+𝑥3+𝑥4
+𝑥9 = 0
パリティ検査方程式
44
符号語であるための条件(3)
𝑥1 +𝑥2
+𝑥5
=0
𝑥3+𝑥4
+𝑥6
=0
𝑥1
+𝑥3
+𝑥7
=0
𝑥2
+𝑥4
+𝑥8
=0
𝑥1 +𝑥2+𝑥3+𝑥4
+𝑥9 = 0
𝑥1 , … , 𝑥9 ∈ 𝐶
1
0
1
0
1
1
0
0
1
1
0
1
1
0
1
0
1
0
1
1
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
𝑥1
⋮ =
𝑥9
0
0
0
0
0
45
検査行列
1
0
1
0
1
1
0
0
1
1
0
1
1
0
1
0
1
0
1
1
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
𝑥1
⋮ =
𝑥9
0
0
0
0
0
検査行列 𝐻
系列 𝒗 が符号語か否かを検査したいときは...
検査行列 𝐻 の右から,𝒗 の転置ベクトルを乗ずる
𝐻𝒗T = 𝟎 ... 𝑣 ∈ 𝐶
𝐻𝒗T ≠ 𝟎 ... 𝑣 ∉ 𝐶
46
検査行列の利用例
水平垂直パリティ検査符号
• 110101101 は符号語か? yes
1

0
1

0
1

1
0
0
1
1
0
1
1
0
1
0
1
0
1
1
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0

 
0
0
0 1 1 0 1 0 1 1 0 1T   0 

 
0
0
0
1 
 
• 011011010 は符号語か? no
1

0
1

0
1

1
0
0
1
1
0
1
1
0
1
0
1
0
1
1
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0

 
0
0
0 0 1 1 0 1 1 0 1 0T   1 

 
0
0
0
1 
 
47
生成行列と検査行列
検査記号の定義式
パリティ検査方程式
𝑝1 = 𝑎1,1 𝑥1 + 𝑎1,2 𝑥2 + ⋯ +𝑎1,𝑘 𝑥𝑘
𝑝2 = 𝑎2,1 𝑥1 + 𝑎2,2 𝑥2 + ⋯ +𝑎2,𝑘 𝑥𝑘
⋮
𝑝𝑚 = 𝑎𝑚,1 𝑥1 + 𝑎𝑚,2 𝑥2 + ⋯ +𝑎𝑚,𝑘 𝑥𝑘
検査行列
1 0 ⋯ 0 𝑎1,1 𝑎2,2 ⋯ 𝑎𝑚,1
0 1 ⋯ 0 𝑎1,2 𝑎2,2 ⋯ 𝑎𝑚,2
⋮ ⋮ ⋱⋮
⋮
⋮
0 0 ⋯ 1 𝑎1,𝑘 𝑎2,𝑘
⋱ ⋮
⋯ 𝑎𝑚,𝑘
単位行列 係数行列の転置
𝑎1,1 𝑎1,2 ⋯ 𝑎1,𝑘 1 0 ⋯ 0
𝑎2,1 𝑎2,2 ⋯ 𝑎2,𝑘 0 1 ⋯ 0
⋮
⋮
⋱ ⋮ ⋮ ⋮ ⋱⋮
𝑎𝑚,1 𝑎𝑚,2 ⋯ 𝑎𝑚,𝑘 0 0 ⋯ 1
係数行列
𝑛 − 𝑘行
𝑘行
生成行列
𝑎1,1 𝑥1 + 𝑎1,2 𝑥2 + ⋯ +𝑎1,𝑘 𝑥𝑘 + 𝑝1
=0
𝑎2,1 𝑥1 + 𝑎2,2 𝑥2 + ⋯ +𝑎2,𝑘 𝑥𝑘
+ 𝑝2
=0
⋮
𝑎𝑚,1 𝑥1 + 𝑎𝑚,2 𝑥2 + ⋯ +𝑎𝑚,𝑘 𝑥𝑘
+ 𝑝𝑚 = 0
単位行列
48
生成行列と検査行列・実例
水平垂直パリティ検査符号: n = 9, k = 4, m = n – k = 5.
p1 = x 1 + x 2
x1 x2 p1
p2 =
x3 + x4
x3 x4 p2
q1 = x 1
+ x3
q1 q2 r
q2 =
x2
+ x4
r = x1 + x2 + x3 + x4
生成行列
1

0
0

0
0
1
0
0
0
0
1
0
0
0
0
1
1
1
0
0
検査行列
0
0
1
1
1
0
1
0
0
1
0
1
1

1
1

1
1

0
1

0
1

1
0
0
1
1
0
1
1
0
1
0
1
0
1
1
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0

0
0

0
1 
49
シンドローム
検査行列 𝐻, 系列 𝒗 に対し,
𝐻𝒗T = 𝟎 ならば 𝒗 ∈ 𝐶
𝐻𝒗T ≠ 𝟎 ならば 𝒗 ∉ 𝐶
𝐻𝒗T を,系列 𝒗 のシンドロームと呼ぶ
𝒗 のシンドロームが 0 ならば 𝒗 ∈ 𝐶
𝒗 のシンドロームが 0 でなければ 𝒗 ∉ 𝐶
シンドロームには,誤りに関する情報が含まれている
⇒ シンドロームを使って,誤りを訂正することが可能
50
加法的通信路とシンドローム
2元対称通信路(BSC)に符号語 𝒖 を送信
誤りベクトル 𝒆 が発生し,符号語に対して加法的に作用
受信系列は 𝒗 = 𝒖 + 𝒆
誤りが発生しなければ(𝒆=0)
雑音源
受信系列 𝒗 のシンドロームは0
符号語
𝒖
𝒆
受信系列
𝒗 = 𝒖 + 𝒆
誤りが発生したとすると(𝒆 ≠ 0)
𝒗 のシンドロームは 0 以外
検査行列を 𝐻 とすると,𝒗 のシンドロームは
𝐻𝒗T = (𝒖 + 𝒆)T = 𝐻𝒖T + 𝐻𝒆T = 𝐻𝒆T
シンドロームは送信符号語に依存せず,誤りのみに依存する
シンドロームを見れば,どんな誤りが発生したかわかる
51
誤りパターンとシンドローム
𝐻=
1
0
1
0
1
1
0
0
1
1
0
1
1
0
1
0
1
0
1
1
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
• 000000000 を送信して 000100000 を受信した...
𝐻 0 0 0 1 0 0 0 0 0 T = (0 1 0 1 1)T.
• 110000110 を送信して 110100110 を受信した...
𝐻 1 1 0 1 0 0 1 1 0 T = (0 1 0 1 1)T.
送信符号語に依存しない
⇒ シンドロームが (0 1 0 1 1) ならば,受信語の4ビット目が誤り
52
シンドロームを利用した誤り訂正
誤りパターンとシンドロームの対応がわかっていれば,
受信系列のシンドロームから誤りパターンを推測可能.
誤りパターンを受信系列から引く(足す)ことで,
送信符号語を特定可能 (誤りの影響を打消す / 誤り訂正).
受信系列
𝒗 = 𝒖 + 𝒆
シンドローム計算
𝒔 = 𝐻𝒗T
誤りパターン
𝒆
復号結果
𝒖
シンドローム
𝒔
誤り / シンドローム対応表
.....
.....
.....
.....
.....
.....
53
1ビット誤りパターンとシンドローム
検査行列 𝐻の第 𝑖 列目の列ベクトルを𝒉𝑖 と書く:
𝐻 = (𝒉𝟏
𝒉𝟐
⋯ 𝒉𝒏 )
𝑖
誤りベクトルが 𝒆 = (0, … , 0,1,0, … , 0) のときのシンドロームは
⋮
0
𝑇
𝐻𝑒 = 𝒉𝟏 𝒉𝟐 ⋯ 𝒉𝒏 1 = 𝒉𝒊
0
⋮
^
第 𝑖 ビット目だけに誤りが発生
⇔ シンドロームは,検査行列の第 𝑖 列ベクトルと等しい
(わざわざ対応表を作らなくてもOK)
54
シンドロームを使った誤り訂正
水平垂直パリティ検査符号
符号語 000000000, 100010101,
検査行列 1 1 0 0 1 0 0 0 0
𝐻=
0
1
0
1
0
0
1
1
1
1
0
1
1
0
1
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
000101011, 100111110,
001001101, 101011000,
001100110, 101110011,
010010011, 110000110,
010111000, 110101101,
011011110, 111001011,
011110101, 111100000.
• 受信系列が 101001000 のとき,
⇒ シンドロームは H(1 0 1 0 0 1 0 0 0)T = (1 0 0 0 0)T
⇒ H の5列目と等しい
⇒ 5ビット目が誤り,送信符号語は 101011000
• 受信系列が 101100110 のとき,
⇒ シンドロームは H(1 0 1 1 0 0 1 1 0)T = (1 0 1 0 1)T
⇒ H の1列目と等しい
⇒ 1ビット目が誤り,送信符号語は 001100110
55
ここまでのまとめ:復号と検査行列
検査行列:シンドローム計算のための道具
シンドロームが0なら誤りなし
0以外なら,そのシンドロームから誤り位置を特定可能
線形符号では,符号化も,復号も,行列演算で実現可能
56
検査行列と符号の能力(1)
第 𝑖 ビット目に誤りが発生
⇔ シンドローム=検査行列の第 𝑖列ベクトル
検査行列が同一の列ベクトルを複数含んでいると...
⇒ 複数の1ビット誤りに対し,同一シンドロームが得られる
⇒ シンドロームからは,誤り位置の特定ができない
偶パリティ符号 𝑝 = 𝑥1 + 𝑥2
𝐻 = (1 1 1)
情報記号 (x1, x2, x3) に対し,
11010
p1 = x 1 + x 2
𝐻=
01101
p2 =
x2 + x3
誤
り
訂
正
能
力
な
し
57
検査行列と符号の能力(2)
受信系列の第 i ビット目に誤りが発生
⇔ シンドロームは,検査行列の第 i 列ベクトル
もし検査行列の列ベクトルが全て異なっていれば...
⇒ 異なる1ビット誤りパターンには異なるシンドロームが対応
⇒ シンドロームから,誤り位置が一意に特定できる
⇒ 符号語中の1ビット誤りを訂正可能
1

0
水平垂直パリティ検査符号 H   1
0
1

1
0
0
1
1
0
1
1
0
1
0
1
0
1
1
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0

0
0

0
1 
符号語中の1ビット誤りを訂正可能
58
誤り訂正符号の設計方針
符号語中の1ビット誤りを訂正可能な符号を構成したい
「列ベクトルが全て異なる検査行列」を持つ符号を作れば良い
良い例:
H= 101100
110010
011001
H= 1010011
0100111
1101001
悪い例:
H= 110100
101010
010001
H= 1010011
1100111
1101001
𝐶 = {𝒗|𝐻𝒗T = 0 𝑚𝑜𝑑 2}
H= 101001
010011
110100
010101
(検査行列の 右部分行列は
単位行列とする)
59
符号の構成例
係数行列
H= 101 100
101
110 010
110
転置
011 001 左部分 011
p1 = x 1
+ x3
p2 = x 1 + x 2
p3 =
x2 + x3
G= 100 110
010 011
001 101
000000,
001101,
010011,
011110,
100110,
101011,
110101,
111000.
符号語
60
検査行列の大きさと符号の効率
検査行列が 𝑚 行 𝑛 列
⇒ 構成される符号は,符号長 𝑛,
情報記号数 𝑘 = 𝑛 − 𝑚,
検査記号数 𝑚.
符号長 9, 情報記号数 4.
1
0
0
1
1
0
1
1
0
1
0
1
0
1
1
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
𝑚=5
水平垂直パリティ検査符号
1
0
1
0
1
𝑛=9
検査行列が縦に長いと,符号語の中の検査記号数が多くなる
⇒ 符号語の中の情報記号数が少なくなる
⇒ 符号の効率は悪い
61
ハミング符号
効率の良い1ビット誤り訂正可能な符号
⇒ できるだけ「横長」な検査行列を作れば良い
Richard Hamming
ハミング符号 (Hamming Code)
1915-1998
1) 検査記号数 m を決定
2) 長さ m の非零ベクトルを全て列挙
3) 列挙したベクトルを,検査行列の列ベクトルに
(右部分行列が単位行列になるようにする)
1
1
1
1
0
1
0
0


m = 3 の場合, 


0
H  1 1 0 1 0 1 0 , G  
0
1 0 1 1 0 0 1 



0

0
1
0
0
0
0
1
0
0
0
0
1
1
1
1
0
1
1
0
1
1

0
1

1
符号長(列数) 7, 検査記号数(行数) 3, 情報記号数 7 – 3 = 4
62
ハミング符号のパラメータ
ハミング符号:
検査行列は,m 個の行ベクトルを持つ
検査行列は,2m – 1 個の列ベクトルを持つ
符号長
検査記号数
情報記号数
n = 2m-1
m
k = n-m = 2m-1-m
符号長 n, 情報記号数 k の符号を
(n, k) 符号と言う.
m
2
3
4
5
6
7
n
3
7
15
31
63
127
k
1
4
11
26
57
120
63
符号の比較
(7, 4) ハミング符号:
符号長 7, 情報記号数 4, 1 ビット誤り訂正可能
(9, 4) 水平垂直パリティ検査符号:
符号長 9, 情報記号数 4, 1 ビット誤り訂正可能
どちらの符号が「良い」か?
• 効率ではハミング符号
• 情報伝達の信頼性でもハミング符号
ビット誤り率 p の BSC で,正しく情報を伝達できる確率
– ハミング符号:
(1-p)7 + 7p(1-p)6
– 水平垂直パリティ検査符号:(1-p)9 + 9p(1-p)8
= 0.85
= 0.77
p=0.1 のとき
同じ情報記号数,同じ誤り訂正能力なら,符号長が短いほうが有利
64
符号パラメータの限界
(7, 4) ハミング符号
誤り訂正のため,3つの検査記号を付加
検査記号 2 つではダメか(1ビット誤り訂正可能な (6, 4) 符号)?
ダメ. もし,そんな符号があるとすると...
符号語数は 24 = 16 個
ある符号語に復号される系列の個数 = 1+6=7
符号語のどれかに復号される系列の総数 = 7×16 = 112
長さ 6 の系列総数 = 26 = 64, これは 112 よりも少なく,矛盾
{0, 1}6
65
ハミング符号の場合は...
(7, 4) ハミング符号:
符号語数は 24 = 16 個
ある符号語に復号される系列の個数 = 1+7=8
符号語のどれかに復号される系列の総数 = 8×16 = 128
長さ 7 の系列総数 = 27 = 128
128 個の系列が,ちょうど 16 個の
部分集合に分割される.
{0, 1}7
ハミング符号は完全符号である,とも言われる
𝑛
𝑛
𝑘
2
+
= 2𝑛
0
1
66
chapter 3 の構成
通信路のモデル化
通信路符号化の概要
線形符号
定義と基本的な性質
生成行列・検査行列と符号化・復号
ハミング符号
線形符号の性能評価
シャノンの通信路符号化定理
性能限界に迫る符号化方式
67
符号の性能について
線形符号の性能を評価するための手法を紹介
最小距離(最小重み)を用いる方式が有効
重み分布を用いる方法
68
系列の類似度と符号の能力
符号語 𝒖 を送信,途中で誤りが発生し,系列 𝒗 を受信
常識的な通信路であれば...
𝒖 と 𝒗 の違いは少しだけのはず
符号語 𝒖
受信系列 𝒗
ビット誤り率 0.1 の BSC で 000 を送信;
000 となる確率:0.729
001 となる確率:0.081
011 となる確率:0.009
111 となる確率:0.001
もし,符号語どうしが接近していると,誤りの影響を受けやすい
誤り検出不能
誤り検出可能
69
系列と系列の「距離」を定義する
同じ長さの系列𝒂 = 𝑎1, 𝑎2, … , 𝑎𝑛 , 𝒃 = (𝑏1, 𝑏2, … , 𝑏𝑛)に対し...
𝒂と𝒃のハミング距離 𝑑𝐻(𝒂, 𝒃) : 系列中で異なる記号の個数
dH(0100,1101) = 2
dH(000, 011) = 2
dH(010, 110) = 1
dH(000, 111) = 3
dH(011, 011) = 0
符号語 𝒖 = 𝟎𝟏𝟎𝟏𝟏
受信系列 𝒗 = 𝟎𝟏𝟎𝟎𝟏
1ビットの誤り発生
⇒ 送信符号語と受信系列の
ハミング距離は 1
70
符号語と符号語の距離
長さ4の符号を考える...
4次元超立方体を考え,各頂点を系列に対応付けると,
符号 = 頂点の部分集合
C1={0000, 1100, 0011, 1111}
どの符号語間も,ハミング
距離が2以上離れている
良い
C2={0000, 0001, 1110, 1111}
符号語間のハミング距離が
1のところがある
悪い
71
最小ハミング距離
符号 C の最小ハミング距離:
𝑑min =
min
𝒂,𝒃∈𝐶,𝒂≠𝒃
𝑑𝐻 (𝒂, 𝒃)
C1={0000, 1100, 0011, 1111}
C2={0000, 0001, 1110, 1111}
最小ハミング距離は2
最小ハミング距離は1
72
最小ハミング距離の例
1 0 0 1 1 0


G   0 1 0 1 0 1  から生成される線形符号の最小ハミング距離は3
0 0 1 0 1 1


000000
001011
010101
011110
100110
101101
110011
111000
000000 001011 010101 011110 100110 101101 110011 111000
0
3
3
4
3
4
4
3
3
0
4
3
4
3
3
4
3
4
0
3
4
3
3
4
4
3
3
0
3
4
4
3
3
4
4
3
0
3
3
4
4
3
3
4
3
0
4
3
4
3
3
4
3
4
0
3
3
4
4
3
4
3
3
0
線形符号ならば,もっと簡単に最小ハミング距離を計算できる
73
最小ハミング重み
系列𝒖のハミング重み:𝑤𝐻 𝒖 = 𝑑𝐻 𝒖, 0 ... 𝒖の中の1の個数
符号 𝐶 の最小ハミング重み:
𝑤min = min 𝑤𝐻 (𝒖)
𝒖∈𝐶,𝑢≠0
v
u+v
補題: 𝐶 が線形ならば 𝑤min = 𝑑min
u
0
𝑤min ≤ 𝑑minの証明:
𝒖, 𝒗 を,𝑑min = 𝑑𝐻(𝒖, 𝒗) である符号語とする.
𝒖 + 𝒗 ∈ 𝑪 なので,𝑤min ≤ 𝑤𝐻 (𝒖 + 𝒗) = 𝑑𝐻 (𝒖, 𝒗) = 𝑑𝑚𝑖𝑛
𝑤min ≥ 𝑑min の証明:
𝒖 を 𝑤min = 𝑤𝐻 (𝒖) である符号語とする.
𝑑min ≤ 𝑑𝐻 (𝒖, 𝟎) = 𝑤𝐻 (𝒖) = 𝑤min
74
線形符号の最小ハミング距離
(9, 4) 水平垂直パリティ検査符号:最小ハミング距離は4
000000000
0
010010011
4
100010101
4
110000110
4
000101011
4
010111000
4
100111110
6
110101101
6
001001101
4
011011110
6
101011000
4
111001011
6
001100110
4
011110101
6
101110011
6
111100000
4
(7, 4) ハミング符号:最小ハミング距離は3.
0000000 1000101 0100111 0010110 0010110 1010011 0110001 1110100
0
3
4
3
3
4
3
4
0001011 1001110 0101100 1101001 0011101 1011000 0111010 1111111
3
4
3
4
4
3
4
7
75
一般のハミング符号の最小ハミング距離
定理:ハミング符号の最小ハミング距離は3である
証明方針:検査行列を 𝐻 = (𝒉1, 𝒉2, … , 𝒉𝑛) とする
{𝒉1, … , 𝒉𝑛} = 非ゼロベクトルの全体集合
𝑖1, … , 𝑖𝑤 ビットが 1で,他のビットが 0 である系列 𝒗 を考える.
𝒗 が符号語 ⇔ 𝐻𝒗𝑇 = ℎ𝑖1 + ℎ𝑖2 + ⋯ + ℎ𝑖𝑤 = 𝟎
𝑤 = 1…ℎ𝑖1 = 𝟎 となり,ℎ𝑖1 が非ゼロであることに矛盾
𝑤 = 2…ℎ𝑖1 + ℎ𝑖2 = 𝟎 より ℎ𝑖1 = ℎ𝑖2 .これはℎ𝑖1 ≠ ℎ𝑖2 に矛盾
以上より,ハミング符号は重み2以下の符号語を含まない.
76
証明の続き
定理:ハミング符号の最小ハミング距離は3である
[証明の続き]
ハミング符号は重み2以下の符号語を含まない.
𝑤 = 3... 𝐻𝒗T = ℎ𝑖1 + ℎ𝑖2 + ℎ𝑖3
ℎ𝑖1 + ℎ𝑖2 は非ゼロなので, ℎ = ℎ𝑖1 + ℎ𝑖2 となる
列ベクトル ℎ が検査行列の中に必ず存在する
ℎ𝑖1 + ℎ𝑖2 = ℎ𝑖3 となる i3 が必ず存在する
𝑖1, 𝑖2, 𝑖3 ビット目が 1 である系列 𝒗 に対し,𝐻𝒗T = 𝟎
すなわち,重み3の符号語は必ず存在する.
⇒ ハミング符号の最小ハミング距離は3である.
77
最小ハミング距離と誤りの個数
最小ハミング距離 𝑑min = 3:
どの符号語も,互いに最低3ビット以上異なる.
送信符号語が誤って他の符号語になるのは,
3ビット以上の誤りが発生したときのみ.
誤り 誤り 誤り
誤り
誤り
「符号語 𝒖 から1ビットだけ誤って得られる系列」と,
「符号語 𝒗 から1ビットだけ誤って得られる系列」とを
区別することができる
{𝒖’ | 𝑑𝐻(𝒖, 𝒖’) = 1} ∩ {𝒗’ | 𝑑𝐻(𝒗, 𝒗’) = 1, } = ∅
78
最小ハミング距離と復号領域
𝑑min = 3:各符号語を中心として,領土を設定する
領土の半径を1にしても,領土どうしは重ならない
領土の半径を2にすると,領土どうしが重なってしまう
復号の原理:𝑑min = 3 の場合,
各符号語を中心に半径1の領土を設定
受信系列が符号語𝒖の領土に入ったら,その系列は𝒖に復号
復号領域
𝑑min = 3 ならば,復号領域の半径は最大でも1までしか取れない
復号領域の半径が1 ⇒ 1ビット誤りを訂正可能
79
最小ハミング距離と誤り訂正能力
𝑡max =
𝑑min −1
2
とする( 𝑥 は,𝑥の小数部を切り捨てた整数)
𝑑min = 7, 𝑡max = 3
𝑡max
𝑑min = 8, 𝑡max = 3
𝑡max
𝑡max
𝑡max
復号領域の半径を𝑡maxにしても,復号領域どうしは重ならない
⇒ 符号 𝐶 は,𝑡maxビットの誤りを訂正可能
誤り訂正可能ビット数
80
最小ハミング距離と誤り訂正能力の例
𝑑min
𝑡max
3
1
4
1
5
2
6
2
7
3
8
3
81
復号領域の大きさ
𝑡max =
𝑑min −1
2
は,符号の持つ最大誤り訂正能力
復号領域の半径を𝑡max未満に設定してもOK:限界距離復号法
𝑡max
𝑡
どの復号領域にも属さない
これらの系列に対しては誤りの検出
だけを行い,訂正を行わない
82
復号領域の大きさと誤り確率
送信符号語
𝑡
受信語
正しく復号
誤り検出
誤って復号
復号領域の半径と各種復号結果の確率
半径
正しく復号
誤り検出
誤って復号
大
大
小
大
小
小
大
小
環境と要求により,復号領域を適切に設計する必要がある
83
直感的なイメージ:復号領域の大きさ
A
B
A: 10,000円の賞金
B, C, D: 100 円の罰金
A
B
C
C
D
D
P(A) …大
P(B, C, D) …大
P(miss) …小
P(A) …小
P(B, C, D) …小
P(miss) …大
84
性能評価について:ここまでのまとめ
最小ハミング距離による性能評価
誤り訂正可能ビット数は,最小ハミング距離から決まる
最小ハミング距離が大きければ,誤り訂正能力も大きい
... 性能指標としては,やや大雑把
C1
C2
𝑑min
<
?
𝑑min
=
近接符号語が少ない
C3
𝑑min
近接符号語が多い
C2 と C3 は,最小ハミング距離の議論では区別できない
85
重み分布
C = {000000,100111,010110,110001,
001011,101100,011101,111010}.
符号語 000000 の視点から見ると...
距離 0 に符号語 1 個
距離 3 に符号語 4 個
距離 4 に符号語 3 個
3
000000
4
000000 からの距離分布
線形符号では,どの符号語から見ても距離分布は変わらない
重み 0 の符号語 1 個
重み 3 の符号語 4 個
重み 4 の符号語 3 個
重み分布
86
重み分布を用いた性能評価
C = {000000,100111,010110,110001,
001011,101100,011101,111010}.
以下を仮定...
ビット誤り率 p の2元対称通信路
1ビット以下の誤りを訂正
重み 0 の符号語 1 個
重み 3 の符号語 4 個
重み 4 の符号語 3 個
符号語 000000 を送信し,以下の各確率を求める
正しく復号される
000000
decoder
誤って復号される
𝒓
受信系列
訂正できない誤りを検出する
?
87
受信系列の値域
C = {000000,100111,010110,110001,
001011,101100,011101,111010}.
受信系列 𝒓 は 𝑉6 の要素
𝑉6 には 8個の復号領域が存在
正しく復号される
⇔ 𝒓 が 000000 の復号領域に属する
誤って復号される
⇔ 𝒓 が 000000 以外の復号領域に属する
誤り検出のみ ⇔ 𝒓 が復号領域以外に属する
(イメージ図)
88
正しく復号される確率
正しく復号されるのは,𝒓 が以下に属するとき
𝑇 = {000000, 000001, 000010, 000100, 001000, 010000, 100000}
𝒓𝑇 かつ 𝑤𝐻 (𝒓) = 0 の確率
(1 – 𝑝)6
(1 – 𝑝)6
𝒓𝑇 かつ 𝑤𝐻 (𝒓) = 1 の確率 6𝑝(1 – 𝑝)5
𝑝(1 – 𝑝)5
正しく復号される確率は 𝑃𝑐 = (1 – 𝑝)6 + 6𝑝(1 − 𝑝)5
89
誤って復号される確率(1)
ケース1: 𝒓 が,重み3の符号語 001011 の復号領域に属する
𝑇 = {001011, 001010, 001001, 001111, 000011, 011011, 101011}
𝒓𝑇 かつ 𝑤𝐻 (𝒓) = 3 の確率 𝑝3(1 – 𝑝)3
𝒓𝑇 かつ 𝑤𝐻 (𝒓) = 2 の確率
3𝑝2(1 – 𝑝)4
𝒓𝑇 かつ 𝑤𝐻 (𝒓) = 4 の確率
3𝑝4(1 – 𝑝)2
r が「正しくない符号語 001011」に復号されてしまう確率は
3𝑝2(1 – 𝑝)4 + 𝑝3(1 – 𝑝)3 + 3𝑝4(1 – 𝑝)2
... この確率は,重み3の他の符号語についても同様
90
誤って復号される確率(2)
ケース2: 𝒓 が,重み4の符号語 100111 の復号領域に属する
𝑇 = {100111, 100110, 100101, 100011, 101111, 110111, 000111}
𝒓𝑇 かつ 𝑤𝐻 (𝒓) = 4 の確率 𝑝4(1 – 𝑝)2
𝒓𝑇 かつ 𝑤𝐻 (𝒓) = 3 の確率
4𝑝3(1 – 𝑝)3
𝒓𝑇 かつ 𝑤𝐻 (𝒓) = 5 の確率
2𝑝5(1 – 𝑝)
r が,「正しくない符号語 100111」に復号されてしまう確率は
4𝑝3(1 – 𝑝)3 + 𝑝4(1 – 𝑝)2 + 2𝑝5(1 – 𝑝)
... この確率は,重み4の他の符号語についても同様
91
誤って復号される確率(3)
C = {000000,100111,010110,110001,
001011,101100,011101,111010}.
重み 0 の符号語 1 個
重み 3 の符号語 4 個
重み 4 の符号語 3 個
誤って復号される確率は
𝑃𝑒 = 4 × (重み 3の符号語に復号される)
+ 3 × (重み 4の符号語に復号される)
= 4 × (3𝑝2(1 – 𝑝)4 + 𝑝3(1 – 𝑝)3 + 3𝑝4(1 – 𝑝)2 )
+ 3 × (4𝑝3(1 – 𝑝)3 + 𝑝4(1 – 𝑝)2 + 2𝑝5(1 – 𝑝))
= 12𝑝2(1 – 𝑝)4 + 16𝑝3(1 – 𝑝)3 + 15𝑝4(1 – 𝑝)2 + 6𝑝5(1 – 𝑝)
訂正できない誤りを検出する確率 𝑃𝑑 = 1 – 𝑃𝑐 − 𝑃𝑒
92
確率
特性評価の結果
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
𝑃𝑐
𝑃𝑒
𝑃𝑑
0
0.1
0.2
0.3
ビット誤り率 p
0.4
0.5
93
性能比較例
(7,4)ハミング符号 (Hamm):
符号語:
0000000, 1000101, 0100111, 0010110,
0010110, 1010011, 0110001, 1110100,
0001011, 1001110, 0101100, 1101001,
0011101, 1011000, 0111010, 1111111
重み 符号語数
0
1
3
7
4
7
7
1
(9, 4)水平垂直パリティ検査符号 (2D):
符号語:
000000000, 000101011, 001001101, 001100110,
010010011, 010111000, 011011110, 011110101,
100010101, 100111110, 101011000, 101110011,
110000110, 110101101, 111001011, 111100000
重み 符号語数
0
1
4
9
6
6
94
性能比較
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
Hamm, Pc
Hamm, Pe
Hamm, Pd
2D, Pc
2D, Pe
2D, Pd
0
0.1
0.2
0.3
0.4
0.5
一見すると,ハミング符号のほうが良い性能だが...
95
再送を許す場合
誤り検出時に,一回だけ再送を許すようなシステムでは...
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
Hamm, Pc
Hamm, Pe
Hamm, Pd
2D, Pc
2D, Pe
2D, Pd
2D, Pc (retrans)
0
0.1
0.2
0.3
0.4
0.5
再送が可能で,ビット誤り率が 0.28 以下ならば,
水平垂直パリティ検査符号のほうが有利
96
まとめ:線形符号の性能評価について
最小ハミング重みを使った符号の性能評価
簡便で,多くの符号に対して適用可能
大雑把な性能評価にして用いることができない
重み分布を使った符号の性能評価
少し複雑な計算が必要
規模の大きな符号に対しては適用困難
かなり正確な特性評価が行える
97
chapter 3 の構成
通信路のモデル化
通信路符号化の概要
線形符号
定義と基本的な性質
生成行列・検査行列と符号化・復号
ハミング符号
線形符号の性能評価
シャノンの通信路符号化定理
性能限界に迫る符号化方式
98
通信路符号化定理
通信路符号化の性能の限界について紹介する
「シャノンの通信路符号化定理」
シャノンの情報源符号化定理(Chapter 2)
【逆定理】 𝐿 < 𝐻(𝑆)であるような符号は存在しない
【順定理】 𝐿が𝐻(𝑆)に限りなく近い符号を構成することができる
99
符号化率
誤り訂正・誤り検出
情報記号𝑘 ビットに,検査記号𝑛 − 𝑘ビットを追加して符号化
検査記号の数は,少ないほうが好ましい(効率が良い)
誤り耐性
𝑘
𝑟 = : 符号化率...誤り訂正符号の効率を測る指標(の一つ)
𝑛
効率が高い = 符号化率が高い
⇒ 誤り訂正のための検査記号が少ない
⇒ 誤り訂正能力は期待できない
強
弱
低
効率
高
100
符号化率と符号の性能
信頼性確保のためには,効率を犠牲にしなければならない
𝑝(𝑟): 符号化率 𝑟の一番良い符号で,正しく復号できる確率
3種類の異なる「予想」
a. どれだけ 𝑟 を小さくしても,𝑝(𝑟) は 1に収束しない
b. 𝑟を 0に近づけると,𝑝 𝑟 は 1に収束する
c. 𝑟 がある定数 𝑟’ より小さくなると,𝑝 𝑟 ≈ 1 となる
𝑝(𝑟)
1
b
c
a
どの予想が正解?
0
𝑟’
1
𝑟
101
符号化率と符号の性能(続)
𝑝(𝑟)
正解は...
c. 𝑟 がある定数 𝑟’ より小さくなると, 1
b
𝑝 𝑟 ≈ 1 となる
a
... ただし,これでは少し不正確
c
𝑟
0
𝑟’
1
通信路によって定まる定数 𝑟’ が存在し,
𝑟 ≤ 𝑟’ ならば,
任意の微小な𝜖に対し,
「正しく復号できる確率 ≥ 1 − 𝜖」となる符号が存在する
102
通信路容量
Q: 「通信路によって定まる定数 𝑟’」の正体は?
A: その通信路の通信路容量
通信路容量(chapter 1)
通信路の入力と出力の相互情報量の最大値
ビット誤り率 𝑝 の 2元対称通信路
𝐶 = 1 − (−𝑝 log 2 𝑝 − 1 − 𝑝 log 2 1 − 𝑝)
消失確率 𝑝 の 2元消失通信路
𝐶 =1−𝑝
103
【参考】通信路容量の例
ビット誤り率 p の二元対称通信路の通信路容量を計算してみる
入力が X = {0, 1}, P(0) = q, P(1) = 1 – q なら
𝐼 𝑋; 𝑌 = 𝑝log𝑝 + 1 − 𝑝 log(1 − 𝑝)
− 𝑝 + 𝑞 − 2𝑝𝑞 log 𝑝 + 𝑞 − 2𝑝𝑞
− 1 − 𝑝 − 𝑞 + 2𝑝𝑞 log 1 − 𝑝 − 𝑞 + 2𝑝𝑞
I(X; Y) の最大値は,q = 0.5 のときで,
1.0
𝐶 = max 𝐼(𝑋; 𝑌)
= 1 − (−𝑝log𝑝 − 1 − 𝑝 log 1 − 𝑝 )
C
0.5
0
0.5
1.0
p
104
シャノンの通信路符号化定理
シャノンの通信路符号化定理
通信路容量が 𝐶 である通信路を考える
【順定理】
任意の 𝜖, 𝑟 ≤ 𝐶 である任意の 𝑟 に対し,符号化率が 𝑟 で,
「誤って情報を伝える確率」が 𝜖 以下となる符号が存在する
【逆定理】
𝑟 > 𝐶ならば,符号化率 𝑟 のどの符号も,
「誤って情報を伝える確率」を 0 に近づけることはできない
符号化率を 𝐶 以下に抑えれば,誤りの影響を(ほぼ)排除できる
105
少し具体的な例
1
0.8
𝑝 = 0.11のとき,𝐶 ≈ 0.5
0.6
符号化率 𝑟 = 0.5
0.4
0.2
情報記号と同数の検査記号を 0
「工夫して」付与すればよい
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5
ビット誤り率 𝑝 の2元対称通信路(BSC)
𝐶 = 1 − (−𝑝 log 2 𝑝 − 1 − 𝑝 log 2 1 − 𝑝)
送信データ量を倍にすることを許容すれば,
ほぼ100%正しく情報を伝えることができる,はず
106
いくつかの注意点
【順定理】
任意の 𝜖, 𝑟 ≤ 𝐶 である任意の 𝑟 に対し,符号化率が 𝑟 で,
誤って情報を伝える確率が 𝜖 以下となる符号が存在する
「符号が存在する」ことは証明している
「具体的な符号の作り方」は示されていない
「ハフマン符号 + ブロック化」が,
情報源符号化定理の理論限界に迫るのと対照的
⇒ 「良い符号の具体的な作り方」について,多くの研究が...
107
良い符号の作り方
巡回符号
線形符号の一種
1
0
1
符号化・復号が効率よく行える
符号長が大きくなると,復号計算量が指数的に増大
0
0
畳み込み符号
非常に強力な軟判定ビタビ復号が可能
符号の設計指針が確立されていない
大規模化すると,復号計算量が指数的に増大
Andrew Viterbi
1935-
108
授業では省略
解決法の模索(1)
90年代中ごろまでのアプローチ:
単一技術ではなく,複数の技術の組合せにより問題に対処
二重符号化,連接符号化
誤り訂正符号を二重(多重)に適用
「Reed-Solomon符号 + 畳込み符号」の組合せが一般的
符号化1
外部符号
(RS)
符号化2
内部符号
(畳込み)
復号1
復号2
通信路
109
授業では省略
解決法の模索(2)
積符号
データビットを,符号1により符号化
データビットと符号1のパリティ記号を,符号2により符号化
符号2の復号結果を,符号1の復号処理での受信語とする
データビット
0 1 0 1 1 符号1の
0 1 0 1 0
0 0 0
1 1 0 0 1 パリティ記号
0 1 0 0 1
1 1 0
1 0 0 1 0
1 0 1 1 0
1 0 1
符号2
符号1
1 0 1 1 0
の復号
の復号
0 1 0 0 1
符号2のパリティ記号
110
授業では省略
新時代への扉:積符号方式の問題
0 1 0 1 1
0 1 0 1 0
0 0 0
1 1 0 0 1
0 1 0 0 1
1 1 0
1 0 0 1 0 符号2 1 0 1 1 0 符号1 1 0 1
1 0 1 1 0 の復号
の復号
0 1 0 0 1
問題点:符号1の復号の際,受信情報そのものは使われない
「受信情報」と「符号2の復号結果」の双方を比較活用すれば,
より精度の高い誤り訂正ができるのではないか?
符号1の復号結果を符号2の復号器にフィードバックし,再度復
号させれば,さらに精度を向上できるのでは?
符号1と符号2が,互いに情報を出し合って助け合う仕組を作る
111
授業では省略
繰り返し復号
符号1と符号2が,互いに情報を出し合って助け合う仕組を作る
符号1の復号器
受信情報
符号2の復号器
復号結果
復号器そのものも,若干の改造が必要
改良型ビタビアルゴリズム:
軟判定値を二つ受け取り,軟判定値を一つ出力
各復号器での処理を繰り返し,精度を向上させていく
⇒ 繰り返しを経るたび,誤り訂正の精度向上
112
授業では省略
ターボ符号
1993年,Berrouらにより提案された符号化方式
1セットのデータビットに対し,2セットのパリティ記号を付与
パリティ計算には,畳込み符号を利用
データビット
符号1・符号化
符号系列
インタリーブ
符号2・符号化
(記号の並べ替え)
符号系列
データビット
パリティ記号1
パリティ記号2
113
授業では省略
ターボ符号の復号
受信情報
復号結果
符号1・MAP復号
I–1
I
I
符号2・MAP復号
I インタリーバ
I–1 逆インタリーバ
2つの復号器のあいだで,信頼度情報をやり取りする
情報のやり取りを繰り返し,精度を向上させてゆく
実験によると...
符号長を十分長くとることが必須条件
繰り返し回数は,比較的少なくても十分(10~20回程度)
114
授業では省略
ターボ符号の性能
符号長を十分長く設定すると,
シャノン限界に近づく性能を発揮
(右図の場合,65536ビット長で
1.0dB以下の損失)
右図で示された領域より下では,
エラーフロア現象が発生する
C. Berrou et al.: Near Shannon Limit ErrorCorrecting Coding and Decoding: Turbo Codes,
ICC 93, pp. 1064-1070, 1993.
115
授業では省略
LDPC符号の再発見
ターボ符号の教訓:「符号長を長くすること」
従来の性能指標(最小ハミング距離)に拘る必要は無い
大規模でも扱いやすい符号があれば,有効性は高い
LDPC符号 (Low Density Parity Check 符号)
検査行列が非常に「疎」な線形符号
ほとんどの要素が0で,ごく少数の要素だけ1である行列
1962年にGallagerが提案,長く忘れられていた
1999年,MacKayらによる再発見
Robert Gallager
1931-
David MacKay
1967116
授業では省略
LDPC符号とその復号
ごく普通の線形符号,ただし検査行列が非常に疎
信念伝播(belief propagation)アルゴリズムを用いることで,
ほぼ線形時間での復号が可能
⇒符号長を長く設定しても,復号計算量が爆発することはない
1110100
H= 1011010
0111001
p1
q1
p3
q3
p4
q4
Tanner Graph
p6
q6
0 の確率
1 の確率 (= 1 – pi)
p3 = p1 p4 p6 + q1 q 4 p6 + q1 p4 q6 + p 1 q4 q6
117
授業では省略
LDPC符号 vs. ターボ符号
性能面
両符号とも,非常に優れた性能を発揮する
どちらも,復号計算量は「ほぼ線形オーダー」
LDPC符号のほうが,エラーフロア現象の悪影響が少ない
符号化
ターボ符号は O(n), LDPC 符号は O(n2)
符号設計
ターボ符号は畳み込み符号と同じ問題を引きずっている
LDPC 符号のほうが,設計上の自由度が大きい
118
chapter 3のまとめ
通信路のモデル化
通信路符号化の概要
線形符号
定義と基本的な性質
生成行列・検査行列と符号化・復号
ハミング符号
線形符号の性能評価
シャノンの通信路符号化定理
性能限界に迫る符号化方式
現実世界では,通信系以外への応用も多数検討されている
119