6 info theory

31
1 前前前前前前前 ABACABADACABAD 前LZ77 前前前前前前前前前 A B AC ABAD ACABAD 2 前前前 前前4 前前前 前前 3 6 前前前 前前 6 前前前前前前 (0, 0, A), (0, 0, B), (2, 1, C), (4, 3, D), ( 前前前前前前前前前前前前前前前前前前前前前 前前前前前前前前前前前前前前 A B AC ABAD ACABAD 2 前前前 前前4 前前前 前前 3 6 前前前 前前 6

Upload: melvincabatuan

Post on 11-Jun-2015

884 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: 6 Info Theory

1

前回の練習問題ABACABADACABAD を, LZ77 法により符号化せよ

A B AC ABAD ACABAD

2 文字前長さ1

4 文字前長さ 3

6 文字前長さ 6

符号語系列は(0, 0, A), (0, 0, B), (2, 1, C), (4, 3, D), (6, 6, *)

上記問題により得られた符号語系列を復号せよ符号化と逆の手順を行えばよい

A B AC ABAD ACABAD

2 文字前長さ1

4 文字前長さ 3

6 文字前長さ 6

Page 2: 6 Info Theory

2

前回の練習問題LZW アルゴリズムの特許に関し,どのような問題が発生したか調べよ

UNISYS 社が特許権を保有していた当初は特許権の行使をしないと言明 ⇒ 後に方針転換GIF 画像を扱うソフトウェアの取り扱いに混乱2003 年に米国, 2004 年に日本での特許失効

非可逆符号化を実現するアルゴリズムにはどのようなものがあるか調べよ(アルゴリズムとデータフォーマットの区別が明確でないが)JPEG, MPEG, GIF 等

Page 3: 6 Info Theory

3

本日の講義乱数,擬似乱数について ... 「情報理論」からは少し寄り道

乱数,擬似乱数Kolmogorov による乱数の定義

擬似乱数の統計的検定x2 検定

擬似乱数の生成法

Page 4: 6 Info Theory

4

乱数とは乱数,乱数系列( random numbers, random sequence )広辞苑による記述:0 から 9 までの数字から無作為復元抽出を繰り返して得られ

る数の列.完全に無秩序で,かつ全体としては出現の頻度が等

しい.

工学の立場からは,上記の記述では不十分「 0 から 9 までの数字」というのは本質的でない

⇒ 0 と 1 だけからなる乱数を考える場合も多い「完全に無秩序」が,どのような状態を示すのか明確でない

Page 5: 6 Info Theory

5

「無秩序さ」の定式化計算機の出現により,「無秩序さ」の定式化に新たなアプローチ

0 と 1 からなる有限系列 x を考えるx を出力するプログラムの集合を (x) とする

プログラム ... 入力なしの決定性プログラム(毎回同じ動作)プログラムの p の記述長を |p| と書く

x のコルモゴロフ複雑さ( Kolmogorov complexity )||)( min

)(pxK

xp

( x を出力する最小のプログラムのサイズ)

Page 6: 6 Info Theory

6

コルモゴロフ複雑さの例(1)x1 = “0101010101010101010101010101010101010101”... 40 文字

x1 を出力するプログラム

プログラム p1 : printf(“010101...01”); ...51 文字

プログラム p2 : for(i=0;i<20;i++)printf(“01”); ...30 文字

⇒K(x1) 30 < 40

x2 = “0110100010101101001011010110100100100010”... 40 文字

x2 を出力するプログラム

プログラム p1 : printf(“011010...10”); ...51 文字

プログラム p2 : 存在する ?

⇒K(x2) 51

Page 7: 6 Info Theory

7

コルモゴロフ複雑さの例(2)x3 = “11235813213455891442333776109871597...”... 100 万文字

x3 を出力するプログラム

プログラム p1 : printf(“1123...”); ...100 万 +11 文字

プログラム p2 :

フィボナッチ数列を計算して出力 ⇒ 数百文字で十分⇒K(x3) は数百文字以下

「プログラム」は広義に解釈しても良い⇒ 「 XXX という本の YY ページから抜き出す」という

のもOK

Page 8: 6 Info Theory

8

コルモゴロフ複雑さと無秩序さコルモゴロフ複雑さが大きいほど「無秩序」である

ただし,コルモゴロフ複雑さを実際に計算することは困難「無秩序さ」を定式化するための概念的なもの

エントロピーとの違いは?エントロピーは,記号発生の統計的側面だけに着目コルモゴロフ複雑さは,記号発生のメカニズムも考慮に

Page 9: 6 Info Theory

9

コルモゴロフ的な乱数の定義コルモゴロフ複雑さに基づく乱数の定義:系列 x について, K(x) x のとき, x を乱数(系列)という

x を記述するには, x を「ベタ書き」するしかないx をコンパクトに表現することができない(圧縮不能)

プログラムも2進系列で表現すると考えると ...

長さ n の2進系列 ...2n 個存在長さ n 未満の2進系列 ...2n – 1 個しか存在しない

⇒ 必ず, K(x) x である系列(圧縮不能な系列)が存在する⇒ 任意の長さの乱数が,必ず存在する

Page 10: 6 Info Theory

10

乱数の存在確率Vn :長さ n の2進系列集合, |Vn| = 2n, |V1|+ |V2|+...+|Vn–1| = 2n–1

もし, Vn に属する系列のうち 2n – 1 個が圧縮可能だとすると,V1, ..., Vn–1 に属する系列はいずれも圧縮不能ということになる

1 n–2 n–1 n

サイズ n 未満のプログラムはすべて,長さ n の系列を出力

n+α

長さ n 未満の系列は,サイズ n 以上のプログラムでしか作れない

⇒ ほとんどすべての系列は圧縮不能(乱数である)ことを導ける

Page 11: 6 Info Theory

11

乱数の計算可能性ほとんどすべての系列は乱数である:乱数の存在は保証しているが,具体的な作り方は不明

サイコロを振る,無作為に生成されるデータを利用 etc.

十分に無秩序で良い乱数を得ることができるが ...

大量の乱数を得るには効率が悪い専用の乱数生成装置を利用

大量の乱数を効率よく生成できる特殊なハードウェアが必要でコスト高

真の乱数(真性乱数)を,大量かつ安価に生成するのは困難

Page 12: 6 Info Theory

12

擬似乱数擬似乱数 ( pseudorandom numbers ):

ある種の規則性にしたがって生成される「乱数のようなもの」コルモゴロフ的な意味での乱数ではない

コンピュータプログラム等により,大量かつ安価に生成可能⇒ 各種の実験やシミュレーション等の実施に有益

擬似乱数にも良いものと悪いものがある⇒ 各種の検定により,擬似乱数の品質を評価することが必要

(検定法を頭に入れた後で,具体的な擬似乱数生成法を学ぶ)

Page 13: 6 Info Theory

13

統計的検定擬似乱数の評価尺度:

予測が困難か? 暗号等の用途では重要だが,評価が難しい

十分に無秩序か?数列の統計的性質を検定すれば良い ...比較的容易

本講義では,統計的検定法について紹介「あるプログラムから生成された十分長い系列が,どれだけ真性乱数に近い統計的性質を有するか」を議論「特定の系列が乱数か否か」を判定する問題ではない

Page 14: 6 Info Theory

14

復習:確率,確率密度関数確率変数:ある試行にともなって,なんらかの値を取る変数

確率分布:確率変数が,どの確率でどの値を取るかをあらわしたモノ

確率変数が離散的な場合,確率分布は表の形で与えられる確率変数が連続的な場合,確率分布は関数により与えられる

晴曇雨雪

0.30.40.20.1

確率密度関数

Page 15: 6 Info Theory

15

確率密度関数について確率密度関数( probability density function, pdf )

連続的な確率変数の確率分布を表現する関数確率変数が x 以上 y 未満の値を取る確率=

y

xdttf )(

x y

ここの面積

x → 最小値, y → 最大値とすると,面積=1

Page 16: 6 Info Theory

16

x2値の定義確率変数 X の取る値を,有限個のクラス C1, C2, ..., Cl に分

割するたとえば X が 0 から 100 の値を取る場合 ...

C1 = [0, 10), C2 = [10, 30), C3 = {30 以上の偶数 }, C4 = その他

理想的なケースにおいて, X が Ci に属する確率は pi とする実際に観測された値の系列を a = a1, a2, ... an とする

系列 a が,どれだけ理想に近いか評価したい⇒ 以下の x2 値( x2 value, Chi square value )を評価すれば良い

l

i i

ii

np

npnx

1

22 )(

ni... 系列 a において Ci に属する値の個数

(カイ2乗値)

Page 17: 6 Info Theory

17

x2値の解釈ni... 系列 a において Ci に属する値の個数

npi... 長さ n の理想的系列における ni の期待値

l

i i

ii

np

npnx

1

22 )( 系列 a が理想的な系列に近ければ ...

⇒ 分子部分は 0 に近づく ⇒ x2 値も 0 に近づく

Page 18: 6 Info Theory

18

x2値の計算例1, 2, ...6 からなる42文字の系列( n = 42 )を考える

これが真性乱数なら, pi = 1/6 ⇒ npi = 7

a1 = 145325415432115341662126421535631153154363

n1 = 10, n2 = 5, n3 = 8, n4 = 6, n5 =8, n6 = 5

x2 = 32/7 + 22/7 + 12/7 + 12/7 + 12/7 + 22/7 = 20/7

a2 = 112111421115331111544111544111134411151114

n1 = 25, n2 = 2, n3 = 3, n4 = 8, n5 =4, n6 = 0

x2 = 182/7 + 52/7 + 42/7 + 12/7 + 32/7 + 72/7 = 424/7

a1 のほうが a2 よりも理想的なケースに近い

Page 19: 6 Info Theory

19

x2値の計算例(続)a3 = 111111111111222222...666666 (長さ 72 )

n1 = 12, n2 = 12, n3 = 12, n4 = 12, n5 =12, n6 = 12

x2 = 02/12 + 02/12 + 02/12 + 02/12 + 02/12 + 02/12 = 0/12

理想的な乱数? 当然 no

長さ2のブロック化を考える ...n = 36 ブロック理想は,“ 11”, ... “66” が 1/36 の確率で発生, npi = 1

n11 = 6, n12 = 0, ..., n22 = 6, ...

x2 = (6 – 1)2/1 + (0 – 1)2/1 + ... = 180 ⇒ かなり大きい

様々なクラス分割により,多面的に評価する必要がある

Page 20: 6 Info Theory

20

x2値の評価理想的な系列であっても, x2 値が必ず 0 になるとは限らない理想的系列における x2 値の分布と,実測値とを比較すべき

[ 定理 ]

分割クラス数が l のとき,理想的系列における x2 値の分布は,自由度が l – 1 の x2 分布 ( Chi square distribution )にした

がう

自由度 2 自由度 4

自由度 6

x2O

Page 21: 6 Info Theory

21

x2値の比較a3 = 111111111111222222...666666 (長さ 72 )

x2 = 02/12 + 02/12 + 02/12 + 02/12 + 02/12 + 02/12 = 0/12

クラス数が 6 ⇒ 自由度が 5 の x2 分布に従うはず

x2O

自由度 5

理想系列では, x2 値が 0 になる確率はきわめて小さい観測系列の x2 値が 0 ⇒ 理想系列では考えにくい振る舞い

x2 値の大小だけでなく,理想的な x2 分布と比較することが重要

Page 22: 6 Info Theory

22

x2値検定の実施例x2 値の大小だけでなく,理想的な x2 分布と比較することが

重要

実際には ...

1. 元のデータをいくつかに分割2. 各データセットに対して x2 値を計算3. 得られた x2 値の集合の妥当性を検証

再び統計的検定を行う上下パーセント点と比較する

上側 1% 点 ...

100 回に 1 回くらいは,この値を超えるかもという点

Page 23: 6 Info Theory

23

その他の統計的検定手法KS 検定 (Kolmogorov-Smirnov 検定)

x2 検定の連続変数バージョン(クラス分割不要)ラン長検定

長さ k のラン発生確率 = 0.5× 長さ k – 1 のラン発生確率(2元の無記憶定常情報源で,通報発生が等確率のとき)ランの発生個数について, x2 検定を行う手法

ポーカー検定,衝突検定,間隔検定 etc.

いずれの方法も,十分長い系列に対して行う必要がある(短い系列では,統計的性質が出現しにくい)

Page 24: 6 Info Theory

24

擬似乱数生成アルゴリズムについて様々な擬似乱数生成アルゴリズムが提案されているその多くが,少量の乱数の種(シード , seed )から,多量の擬似乱数系列を生成するもの

線形合同法 (linear congruent method)

漸化式に基づいて擬似乱数を生成する方式i 番目の値が Xi のとき, Xi+1 = aXi + c mod M とする

a, c, M は適当なパラメータ(選び方にはコツがある)

得られる値は 0 から M – 1 の整数値

Page 25: 6 Info Theory

25

線形合同法の性質について 得られる擬似乱数列の周期は,必ず M 以下となる

M は,ある程度大きな値にすべき

M の選択がまずいと, Xi の下位ビットのランダム性が悪化する

M は素数にするのが良い処理を簡便にするため, M = 2e とする実装もある

パラメータ a や c の選択についても,ある程度の規則が存在

Page 26: 6 Info Theory

26

線形合同法の問題点(Xi, Xi+1) で与えられる2次元平面上の点を考える(Xi, Xi+1) の点が,平面全体に広がることが理想的線形合同法では, Xi が決まれば Xi+1 が一意に決まる⇒ 直線 x = a 上には,高々一個の点しか配置されない

Xi+1 = 5Xi + 1 mod 7 のとき ...

1 2 3 4 5 6O

1

6

5

4

3

2平面上の点を一個選んで ...という用途には使えない

(初期値が 5 のとき)

Page 27: 6 Info Theory

27

M 系列法M 系列法 ( M-sequence method)

線形フィードバックシフトレジスタを利用して擬似乱数を生成p 段シフトレジスタ ⇒ 状態数は 2p 通り存在する結線方法によっては,周期 2p–1 の擬似乱数系列が生成可能

特異点(全ゼロ状態)以外のすべての状態を経由 ⇒ 2p–1 という周期は,レジスタ数 p 段では最大値( Max )

Xi

Xi–1Xi–p Xi–p+1 Xi–p+2

結線or断線

Page 28: 6 Info Theory

28

M 系列法について結線方法は,原始多項式の係数にしたがって決定(省略)

生成される系列は,非常に優れた統計的性質を持つ

レジスタの初期値の違い ⇒ 生成される系列の位相の違い

シフト加法性

高い自己相関性を持つ ⇒ CDMA などの通信方式でも利用

Page 29: 6 Info Theory

29

その他の擬似乱数生成法メルセンヌ・ツイスタ法 (MT 法, Mersenne Twister method)

松本眞氏(現広島大),西村拓士氏(現山形大)により提案メルセンヌ素数を使い,シフトレジスタ法を一捻りした方高品質の擬似乱数を高速に生成することが可能

予測不能な擬似乱数生成法いわゆる「記憶のない」乱数生成 ⇒ 暗号的用途に向くBlum 法など線形合同法,M系列法,MT法は,暗号用途には使えない

Page 30: 6 Info Theory

30

まとめコルモゴロフ的な乱数の定式化擬似乱数の統計的検定

x2 検定具体的な擬似乱数生成アルゴリズム線形合同法, M 系列法

Page 31: 6 Info Theory

31

練習問題a = 110010111110001000110100101011101100 とする( |a|=36 )

a を長さ2のブロックに区切り, x2値を計算せよ長さ3,4のブロックに区切り,それぞれ x2値を計算せよ

線形合同法を実装し,擬似乱数を生成せよ上記で生成した擬似乱数を,2次元平面にプロットせよ(スライドの26ページ参照)