情報理論

前回の練習問題
a = 110010111110001000110100101011101100とする(|a|=36)
a を長さ2のブロックに区切り,x2値を計算せよ
長さ2のパターンは4種類,それぞれ出現の期待値は4.5
|00| = 5, |01| = 1, |10| = 6, |11| = 6
x2 = 0.52/4.5 + 3.52/4.5 + 1.52/4.5 + 1.52/4.5 = 3.78
長さ3,4のブロックに区切り,それぞれx2値を計算せよ
長さ 3, 期待値 1.5, x2 = 2.67
長さ 4, 期待値 0.56 , x2 = 14.11
線形合同法を実装し,擬似乱数を生成せよ
上記で生成した擬似乱数を,2次元平面にプロットせよ
⇒講義ページ掲載の excel ファイル参照
1
第三部:情報を正確に伝える
通信途中で発生する誤りを検出し,訂正する
第二部で扱った符号化方式:情報源符号化 (source coding)
情報源に近いところで,通報を効率よく符号化(圧縮)
これから扱う符号化方式:通信路符号化 (channel coding)
信頼性の低い情報伝達媒体を介した情報通信を考える
効率も大事だが,情報を正確に相手に伝えることが最大課題
2
誤り制御方式について:動機
現実世界における情報伝達:
有線・無線の通信,ハードディスク,CD,メモリ...
送った(記録した)ものが,正確に受け取られる保証はない
伝達過程で誤りが発生し間違った情報が相手に届くことも
誤りが発生しないようにするのがベスト...現実には難しい
⇒ 誤りの影響を,できるだけ小さくするようにできないか?
誤りの発生を検出して,再送信を要求する
前後の文脈から本来の情報を推測し,誤り訂正する
3
基本原理:いろはの「い」
電話などでの符丁:聞き間違い防止のための「符号化」
いろはの「い」:
本当に伝えたい情報は,「い」一文字だけ
「いろはの」の部分は,誤り訂正のための冗長な情報
い 距離が近い
り
いろはの「い」
距離が遠い
りんごの「り」
「正しい表現」間の距離が大きくなるよう,冗長情報を付加
冗長情報は,誤りの検出・訂正に利用される
4
0と1の世界での誤り訂正符号
2進数2ビットの情報を送信したい
そのまま送ると... 受信側で01を受信したとしても,
• もともと01が送信されたのか
00
01
• 誤りが発生して01になったのか
10
11
判別できない
人工的に冗長情報を付加すると... 00 → 00000
01 → 01011
10 → 10101
00000
11 → 11110
01010
00010
このような操作を符号化,
符号化して得られる系列を符号語,
00011
01011
符号語の集合を符号と呼ぶ
5
復号と誤りの訂正
どのような符号化をするか,あらかじめ合意しておく
送信側:送りたい情報を符号化して,符号語を送信
受信側:誤りを含んでいる可能性のある系列から,
送信された可能性の高い符号語を推測 ⇒ 復号
00000
01010
00010
00011
01011
00010を受信した場合
00010は正しい符号語ではない
最も「近い」符号語は00000
送信符号語は00000と推測する
誤り訂正符号を使うデメリット?
復号結果が常に正しいとは限らない
長い系列を送るので,系列中の誤り発生確率は増える
6
誤り訂正符号は,本当にトクか?
一文字当たり 0.1 の確率で,誤った情報が相手に届く場合
00 → 00000
01 → 01011
10 → 10101
11 → 11110
符号化を行わない場合
0.92 = 0.81
正しく伝わる確率
誤って伝わる確率 1 – 0.81 = 0.19
符号化を行う場合
正しい復号結果が得られる確率
= 5ビットのうち,1ビット以下で誤りが発生する確率
0.95 + 5C10.94・0.1 = 0.9072
誤った復号結果が得られる確率
1 – 0.9072 = 0.0928
符号や通信路によっては,符号化で損する場合もある
7
通信路のモデル
情報の送受信:
「信頼のできない通信路を解した情報通信」とモデル化可能
片方から情報を「入力」、他方から情報が「出力」
入力と出力が同じとは限らない
入力
(送信側)
通信路
出力
(受信側)
簡単のため、以下の仮定をおく
入力情報、出力情報は「記号(文字)」である
一個の記号を入力すると、必ず一個の記号が出力
遅延や記号の紛失、順番の入れ替わりは考えない
8
通信路の例1
(ビット誤り率 p の)2元対称通信路(通常 p < 0.5)
入力記号の集合 = 出力記号の集合 = {0, 1}.
0 を入力すると,確率 1 – p で 0,確率 p で 1 が出力
1 を入力すると,確率 p で 0,確率 1 – p で 1 が出力
入
0
力 1
1–p
p
p
1–p
0
出
1 力
Binary Symmetric Channel, BSC
誤りの発生は,完全に独立
(記憶のない通信路)
誤り発生する確率は,常に一定
(定常通信路)
00000 送信時,受信系列が 00101 となる確率 = (1–p)3p2
9
通信路の例2
消失通信路:情報が途中で「消失する」通信路
入力記号は {0,1},出力記号は {0, 1, X}
出力 X は,紛失した情報の「プレースホルダ」
入
0
力 1
0
X
出
1 力
現実世界では...
送信側と受信側で同期が取れている通信方式
決まった位置に値を記録するような記録装置
などに対応
10
通信路の例3
記憶のある通信路
誤りの発生確率に,時間的な相関があるもの
バースト誤り通信路が代表的
011010101010010101011010110101010
011010101011011010101010110101010
非定常な通信路
時間経過に伴い,誤り発生の確率分布が変化する
楕円軌道を取る人工衛星など
11
簡単な準備
長さ m の2進系列を Vm と表記する
情報の集合 I = Vk
符号 C ⊂ Vn (n > k とする)
系列 b1b2...bm は (b1, b2, ..., bm)
と表記する場合もある
V3
I=V2
00
01
10
11
e
000
011
101
110
C
とくに断らないかぎり,加減算は2進体上で行う
0 + 0 = 0, 0 + 1 = 1 + 0 = 1, 1 + 1 = 0, a – b = a + b,...
系列の加減算は,各記号ごとに行う (繰り上/下がりなし)
001 + 101 = 100
系列を2進数と解釈して計算するのではない点に注意
12
符号選択の規準
集合 I = Vk に対し,符号長 n と符号 C ⊂ Vn を定める
Vn: 2n 個の系列を含む
C: 2k 個の系列を含む ⇒ C の選び方: 2n C2k 通り.
どのような n, C を選ぶのが良いのか?
n は小さいほうが望ましい
C は十分な誤り訂正能力を持つこと
符号化および復号が簡単に行えることが望ましい
線形符号(linear code):
少し特殊な符号のクラス
...まずは簡単な例から
符号長 n の全ての符号
線形符号
13
偶パリティ符号
偶パリティ符号(even parity code)の符号化操作:
情報 (a1, a2, ..., ak) ∈ Vk に対し...
p = a1 + a2 + ... + ak を計算する
(a1, a2, ..., ak , p) を (a1, a2, ..., ak) の符号語とする
k = 3 の場合 000
001
010
011
100
101
110
111
p=0+1+1=0
0000
0011
0101
0110
1001
1010
1100
1111 符号 C
14
偶パリティ符号の特徴
0000
0011
0101
0110
1001
1010
1100
1111
符号 C
符号長は n = k + 1
符号語は,
(information symbol)
もともと送りたかった情報そのもの(情報記号)
あとで付け足した記号(冗長記号,検査記号)
からなる(組織符号, systematic code) (parity symbol)
情報記号
1010
冗長記号
符号語に含まれる1の個数は,かならず偶数個
受信系列中に1 が奇数個⇒異常事態
奇数個のビット誤りを検出できる線形符号である
15
水平垂直パリティ検査符号
水平垂直パリティ検査符号の符号化:
情報記号を長方形状に並べる
水平方向および垂直方向に偶パリティ符号化を行う
冗長記号を一次元に配列し,情報記号に付加する
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)
16
符号化の例
011100101 を符号化すると,符号語は 0111001010100101
0
1
1
0
1
0
0
1
1
0
1
0
0
1
0
1
0111001010100101
情報記号
冗長記号
特徴
水平垂直パリティ検査符号は,組織符号
k = ab のとき,符号長は n = ab + a + b + 1
17
水平垂直パリティ検査符号の性能(1)
符号語中の1ビット誤りを訂正可能
受信語を,送信語と同じ順番で並べ,
各行および列の1の個数を数える
誤りが発生しなかったとき
⇒ 全ての行,列は偶数個の1を含む
1ビット誤りが発生したとき,
⇒ 1が奇数個ある行,列が,それぞれ1個ずつ存在
⇒ その行と列が交差するところが誤りを含む
010110101
受信語
011110101
誤りを訂正
0
1
1 偶
0
1
0 奇
1
0
1 偶
奇
偶
偶
18
水平垂直パリティ検査符号の性能(2)
2ビット誤りが発生したとき,
実際の誤り
どちらのパターンかわからない
1が奇数個の行,列が
2つずつ存在することになる
誤り検出はできるが,訂正はできない...性能評価は次回以降
19
線形符号の定義
線形符号とは...
すべての冗長記号が,情報記号の線形式で与えられる符号
線形式: p = a1x1 + a2x2 + ... + akxk (a1, a2, ..., ak ∈ {0, 1})
偶パリティ符号
(x1, ..., xk, p)
p = x1 + ... + xk
水平垂直パリティ検査符号
(x1, ..., xab, p1, ..., pb, q1, ..., qa, r)
a
pi   xa (i 1) j ,
j 1
b
q j   xa (i 1) j ,
i 1
b
ab
i 1
i 1
r   pi   xi
...どちらも線形符号
20
線形符号の性質
定理:任意の符号語 u, v ∈ C に対し,u + v も符号語である
補題:任意の線形式 f(x1, x2, ..., xk) = a1x1 + a2x2 + ... + akxk に対し,
f(u1, u2, ..., uk) + f(v1, v2, ..., vk) = f(u1 + v1, u2 + v2, ..., uk + vk)
定理の証明概略
符号語 (u1, u2, ..., uk, ..., f(u1, u2, ..., uk) , ...)
+)符号語 (v1, v2, ..., vk, ..., f(v1, v2, ..., vk) , ...)
(u1 + v1, u2 + v2, ..., uk + vk, ..., f(u1, u2, ..., uk) + f(v1, v2, ..., vk), ...)
= (u1 + v1, u2 + v2, ..., uk + vk, ..., f(u1 + v1, u2 + v2, ..., uk + vk), ...)
符号語
21
線形符号の構成例
k=3 の場合:情報記号列は (x1, x2, x3).
検査記号を適当に定義する.
p1 = x1 + x2
⇒ 符号語を (x1, x2, x3, p1, p2) と定義
p2 =
x2 + x3
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
22
単位ベクトルに対応する符号語
情報記号 x1, x2, ..., xk に対し,m 個の検査記号を定義する
j 番目の検査記号の定義式を,以下の線形式で与える
pj = aj,1x1 + aj,2x2 + ... + aj,kxk
(aj,i = 0 or 1)
i
k
^
^
1
^
(0, 0, ..., 0, 1, 0, ..., 0) (i 番目だけ 1)に対応する符号語 ci は,
ci = (0, ..., 1, ..., 0, a1,i, a2,i, ..., am,i)
前ページの例: k = 3.
情報記号 (x1, x2, x3) に対し,
p1 = x1 + x2
p2 =
x 2 + x3
c1 = 1 0 0 1 0
c2 = 0 1 0 1 1
c3 = 0 0 1 0 1
(a1,1 a1,2 a1,3) = (1 1 0)
(a2,1 a2,2 a2,3) = (0 1 1)
係
数
を
転
置
23
線形符号における基底ベクトル
線形符号=線形空間:
基底符号語 b1, b2, ..., bk ∈ C が存在し,任意の u ∈ C は
u = u1b1 + u2b2 + ... + ukbk
(ui ∈ {0, 1})
と表現可能
定理:
(前ページで定義した)c1, c2, ..., ck は C の基底符号語となる
任意の符号語 u ∈ C は,
u = u1c1 + u2c2 + ... + ukck
と表現される.
(ui ∈ {0, 1})
24
22ページの例では...
情報記号 (x1, x2, x3) に対し,
p1 = x1 + x2
p2 =
x2 + x3
c1 = 1 0 0 1 0
c2 = 0 1 0 1 1
c3 = 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
c1, c2, c3 は基底符号語となっていることがわかる.
25
生成行列
検査記号の定義が pj = aj,1x1 + aj,2x2 + ... + aj,kxk のとき,
ci = (0, ..., 1, ..., 0, a1,i, a2,i, ..., am,i) となる
c1, c2, ..., ck は符号 C の基底符号語をなす
任意の符号語 u は u = u1c1 + u2c2 + ... + ukck と表現可能
u1 u2  uk p1 p2  pm 
1

0
 u1 u2  uk 


符号 C の生成行列  0
a2,1  am,1 

a2 , 2  am , 2 
  

 
 

0  1 a1,k a2,k  am,k 
この式により,情報記号列と符号語とが一対一対応
⇒ 符号化の操作が効率的に行える
0  0 a1,1
1  0 a1, 2
26
生成行列の構造
生成行列
1 0

0 1
 

0 0
 0 a1,1
 0 a1, 2
 

 1 a1,k
k × k 単位行列
a2,1  am,1 

a2 , 2  am , 2 
 
 

a2 , k  am , k 
各行は
単位ベクトルに
対応する符号語
検査記号の定義式の係数を
転置して得られる行列
27
生成行列の例
偶パリティ符号
(u1 u2
p = x1 + x2 + x 3
u3
p)  (u1 u2
水平垂直パリティ検査符号
 1 0 0 1


u3 ) 0 1 0 1.
 0 0 1 1


x1 x2 p1
x3 x4 p2
q1 q2 r
p1 = x1 + x2
p2 =
x3 + x4
q1 = x1
+ x3
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
28
生成行列を用いた符号化操作
水平垂直パリティ検査符号
(u1 u2 u3 u4 p1 p2
1

0
 (u1 u2 u3 u4 )
0

0
0111 を符号化するには...
1 0 0 0

0 1 0 0

(0 1 1 1)
0 0 1 0

0 0 0 1
 0 1 1 1 1 0 1 0
q1 q2
r)
0 0 0 1 0 1 0 1

1 0 0 1 0 0 1 1
0 1 0 0 1 1 0 1

0 0 1 0 1 0 1 1
1 0 1 0 1

1 0 0 1 1
0 1 1 0 1

0 1 0 1 1
1.
符号語は 011110101.
29
論理回路による符号化器の実現
u
情 u1
報 u2
記 u3
号 4
u1 u2 u3 u4 p1
(u1 u2 u3 u4 p1 p2
1

0
 (u1 u2 u3 u4 )
0

0
q1 q2 r )
0 0 0 1 0 1 0 1

1 0 0 1 0 0 1 1
0 1 0 0 1 1 0 1

0 0 1 0 1 0 1 1
符
p2
号
q1
q2
r
語
排他的論理和
30
本日のまとめ
線形符号は...
符号語集合がベクトル空間をなすような符号
検査記号が,情報記号の線形式で定義される符号
単位ベクトルを符号化して得られる符号語 ⇒基底ベクトル
生成行列
基底符号語を行とする行列
符号化操作を効率的に行うための道具
生成行列に基づく組合回路により,符号化器を実現可能
31
練習問題
情報記号 (x1, …, xk) に対し,検査記号 p = x1+…+xk+1として
与えられる奇パリティ符号を考える.この符号が線形符号とな
らないことを証明せよ.
6個の情報記号を,以下のように配置し,水平垂直パリティ検
査符号を構成する.この符号の生成行列を求めよ
a1 a2 a3
a4 a5 a6
q1 q2 q3
p1
p2
r
(a1, ..., a6)
→ (a1, ..., a6, p1, p2, q1, q2, q3, r)
32