Your SlideShare is downloading. ×
6 Info Theory
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

6 Info Theory

852
views

Published on

Published in: Technology, Art & Photos

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
852
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 前回の練習問題
    • ABACABADACABADを,LZ77法により符号化せよ
    A B A C ABA D ACABAD 2 文字前 長さ1 4 文字前 長さ 3 6 文字前 長さ 6 符号語系列は (0, 0, A), (0, 0, B), (2, 1, C), (4, 3, D), (6, 6, *)
    • 上記問題により得られた符号語系列を復号せよ
    • 符号化と逆の手順を行えばよい
    A B A C ABA D ACABAD 2 文字前 長さ1 4 文字前 長さ 3 6 文字前 長さ 6
  • 2. 前回の練習問題
    • LZWアルゴリズムの特許に関し,どのような問題が
    • 発生したか調べよ
      • UNISYS社が特許権を保有していた
      • 当初は特許権の行使をしないと言明 ⇒ 後に方針転換
      • GIF 画像を扱うソフトウェアの取り扱いに混乱
      • 2003年に米国,2004年に日本での特許失効
    • 非可逆符号化を実現するアルゴリズムにはどのような
    • ものがあるか調べよ
    • (アルゴリズムとデータフォーマットの区別が明確でないが)
    • JPEG, MPEG, GIF 等
  • 3. 本日の講義
    • 乱数,擬似乱数について ... 「情報理論」からは少し寄り道
    • 乱数,擬似乱数
      • Kolmogorov による乱数の定義
    • 擬似乱数の統計的検定
      • x 2 検定
    • 擬似乱数の生成法
  • 4. 乱数とは
    • 乱数,乱数系列 ( random numbers, random sequence )
    • 広辞苑による記述:
    • 0から9までの数字から 無作為復元抽出を繰り返して得られる数
    • の列. 完全に無秩序 で,かつ全体としては出現の頻度が等しい.
    • 工学の立場からは,上記の記述では不十分
    • 「0から9までの数字」というのは本質的でない
    • ⇒ 0 と 1 だけからなる乱数を考える場合も多い
    • 「完全に無秩序」が,どのような状態を示すのか明確でない
  • 5. 「無秩序さ」の定式化
    • 計算機の出現により,「無秩序さ」の定式化に新たなアプローチ
    • 0 と 1 からなる有限系列 x を考える
    • x を出力する プログラムの集合 を  ( x ) とする
      • プログラム ... 入力なしの決定性プログラム(毎回同じ動作)
      • プログラムの p  の 記述長 を | p | と書く
    • x の コルモゴロフ複雑さ ( Kolmogorov complexity )
    ( x を出力する 最小のプログラム のサイズ)
  • 6. コルモゴロフ複雑さの例(1)
    • x 1 = “0101010101010101010101010101010101010101”... 40 文字
    • x 1 を出力するプログラム
      • プログラム p 1 : printf(“010101...01”); ...51 文字
      • プログラム p 2 : for(i=0;i<20;i++)printf(“01”); ...30 文字
    • ⇒ K ( x 1 )  30 < 40
    • x 2 = “0110100010101101001011010110100100100010”... 40 文字
    • x 2 を出力するプログラム
      • プログラム p 1 : printf(“011010...10”); ...51 文字
      • プログラム p 2 : 存在する ?
    • ⇒ K ( x 2 )  51
  • 7. コルモゴロフ複雑さの例(2)
    • x 3 = “11235813213455891442333776109871597...”... 100 万文字
    • x 3 を出力するプログラム
      • プログラム p 1 : printf(“1123...”); ...100 万 +11 文字
      • プログラム p 2 :
      • フィボナッチ数列を計算して出力 ⇒ 数百文字で十分
    • ⇒ K ( x 3 ) は数百文字以下
    • 「プログラム」は広義に解釈しても良い
    • ⇒ 「 XXX という本の YY ページから抜き出す」というのもOK
  • 8. コルモゴロフ複雑さと無秩序さ
    • コルモゴロフ複雑さが大きいほど「無秩序」である
      • ただし,コルモゴロフ複雑さを実際に計算することは困難
      • 「無秩序さ」を定式化するための概念的なもの
    • エントロピーとの違いは?
      • エントロピーは,記号発生の 統計的側面 だけに着目
      • コルモゴロフ複雑さは,記号発生の メカニズム も考慮に
  • 9. コルモゴロフ的な乱数の定義
    • コルモゴロフ複雑さに基づく乱数の定義:
    • 系列 x について, K ( x )  x のとき, x を 乱数(系列)という
      • x を記述するには, x を「ベタ書き」するしかない
      • x をコンパクトに表現することができない( 圧縮不能 )
    • プログラムも2進系列で表現すると考えると ...
    • 長さ n の2進系列 ...2 n 個存在
    • 長さ n 未満 の2進系列 ...2 n – 1 個しか存在しない
    • ⇒ 必ず, K ( x )  x である系列(圧縮不能な系列)が存在 する
    • ⇒ 任意の長さの乱数が,必ず存在する
  • 10. 乱数の存在確率
    • V n :長さ n の2進系列集合, | V n | = 2 n, | V 1 |+ | V 2 |+...+| V n –1 | = 2 n –1
    • もし, V n に属する系列のうち 2 n – 1 個が圧縮可能だとすると,
    • V 1 , ..., V n –1 に属する系列はいずれも圧縮不能ということになる
    ⇒ ほとんどすべての系列は圧縮不能(乱数である) ことを導ける 1 n –2 n –1 n サイズ n 未満のプログラムはすべて,長さ n の系列を出力 n+ α 長さ n 未満の系列は,サイズ n 以上のプログラムでしか作れない
  • 11. 乱数の計算可能性
    • ほとんどすべての系列は乱数である:
    • 乱数の 存在は保証 しているが,具体的な 作り方は不明
    • サイコロを振る,無作為に生成されるデータを利用 etc.
      • 十分に無秩序で良い乱数を得ることができるが ...
      • 大量の乱数を得るには効率が悪い
    • 専用の乱数生成装置を利用
      • 大量の乱数を効率よく生成できる
      • 特殊なハードウェアが必要でコスト高
    • 真の乱数(真性乱数)を,大量かつ安価に生成するのは困難
  • 12. 擬似乱数
    • 擬似乱数 ( pseudorandom numbers ):
    • ある種の規則性にしたがって生成される「乱数のようなもの」
      • コルモゴロフ的な意味での乱数ではない
    • コンピュータプログラム等により,大量かつ安価に生成可能
    • ⇒ 各種の実験やシミュレーション等の実施に有益
    • 擬似乱数にも良いものと悪いものがある
    • ⇒ 各種の検定により, 擬似乱数の品質を評価 することが必要
    • (検定法を頭に入れた後で,具体的な擬似乱数生成法を学ぶ)
  • 13. 統計的検定
    • 擬似乱数の評価尺度:
    • 予測が困難か?
      • 暗号等の用途では重要だが,評価が難しい
    • 十分に無秩序か?
      • 数列の統計的性質 を検定すれば良い...比較的容易
    • 本講義では,統計的検定法について紹介
      • 「あるプログラムから生成された十分長い系列が,
      • どれだけ真性乱数に近い統計的性質を有するか」を議論
      • 「特定の系列が乱数か否か」を判定する問題ではない
  • 14. 復習:確率,確率密度関数
    • 確率変数:ある試行にともなって,なんらかの値を取る変数
    • 確率分布:
    • 確率変数が,どの確率でどの値を取るかをあらわしたモノ
    • 確率変数が離散的な場合,確率分布は表の形で与えられる
    • 確率変数が連続的な場合,確率分布は 関数 により与えられる
    確率密度関数 晴 曇 雨 雪 0.3 0.4 0.2 0.1
  • 15. 確率密度関数について
    • 確率密度関数 ( probability density function , pdf )
    • 連続的な確率変数の確率分布を表現する関数
    • 確率変数が x 以上 y 未満の値を取る確率=
    = x y ここの面積 x -> 最小値, y -> 最大値とすると,面積=1
  • 16. x 2 値の定義
    • 確率変数 X の取る値を, 有限個のクラス C 1 , C 2 , ..., C l に分割する
    • たとえば X が 0 から 100 の値を取る場合 ...
    • C 1 = [0, 10), C 2 = [10, 30), C 3 = {30 以上の偶数 }, C 4 = その他
    • 理想的なケース において, X が C i に属する確率は p i とする
    • 実際に観測された値の系列を a = a 1 , a 2 , ... a n とする
    • 系列 a が,どれだけ理想に近いか評価したい
    • ⇒ 以下の x 2 値 ( x 2 value, Chi square value )を評価すれば良い
    n i ... 系列 a において C i に属する値の個数 (カイ2乗値)
  • 17. x 2 値の解釈
    • n i ... 系列 a において C i に属する値の個数
    • np i ... 長さ n の理想的系列における n i の期待値
    系列 a が 理想的な系列に近ければ ... ⇒ 分子部分は 0 に近づく ⇒ x 2 値も 0 に近づく
  • 18. x 2 値の計算例
    • 1, 2, ...6 からなる42文字の系列( n = 42 )を考える
      • これが真性乱数なら, p i = 1/6 ⇒ np i = 7
    • a 1 = 145325415432115341662126421535631153154363
      • n 1 = 10, n 2 = 5, n 3 = 8, n 4 = 6, n 5 =8, n 6 = 5
      • x 2 = 3 2 /7 + 2 2 /7 + 1 2 /7 + 1 2 /7 + 1 2 /7 + 2 2 /7 = 20/7
    • a 2 = 112111421115331111544111544111134411151114
      • n 1 = 25, n 2 = 2, n 3 = 3, n 4 = 8, n 5 =4, n 6 = 0
      • x 2 = 18 2 /7 + 5 2 /7 + 4 2 /7 + 1 2 /7 + 3 2 /7 + 7 2 /7 = 424/7
    • a 1 のほうが a 2 よりも理想的なケースに近い
  • 19. x 2 値の計算例(続)
    • a 3 = 111111111111222222...666666 (長さ 72 )
      • n 1 = 12, n 2 = 12, n 3 = 12, n 4 = 12, n 5 =12, n 6 = 12
      • x 2 = 0 2 /12 + 0 2 /12 + 0 2 /12 + 0 2 /12 + 0 2 /12 + 0 2 /12 = 0/12
      • 理想的な乱数? 当然 no
    • 長さ2のブロック化を考える ... n = 36 ブロック
      • 理想は,“ 11”, ... “66” が 1/36 の確率で発生, np i = 1
      • n 11 = 6, n 12 = 0, ..., n 22 = 6, ...
      • x 2 = (6 – 1) 2 /1 + (0 – 1) 2 /1 + ... = 180 ⇒ かなり大きい
    • 様々なクラス分割により,多面的に評価する必要がある
  • 20. x 2 値の評価
    • 理想的な系列であっても, x 2 値が必ず0になるとは限らない
    • 理想的系列における x 2 値の分布と,実測値とを比較すべき
    • [定理]
    • 分割クラス数が l のとき,理想的系列における x 2 値の分布は,
    • 自由度が l – 1 の x 2 分布 ( Chi square distribution )にしたがう
    自由度 2 自由度 4 自由度 6 x 2 O
  • 21. x 2 値の比較
    • a 3 = 111111111111222222...666666 (長さ 72 )
      • x 2 = 0 2 /12 + 0 2 /12 + 0 2 /12 + 0 2 /12 + 0 2 /12 + 0 2 /12 = 0/12
      • クラス数が 6 ⇒ 自由度が 5 の x 2 分布に従うはず
    理想系列では, x 2 値が 0 になる確率はきわめて小さい 観測系列の x 2 値が 0 ⇒ 理想系列では考えにくい振る舞い x 2 値の大小だけでなく,理想的な x 2 分布と比較することが重要 x 2 O 自由度 5
  • 22. x 2 値検定の実施例
    • x 2 値の大小だけでなく,理想的な x 2 分布と比較することが重要
    • 実際には ...
    • 元のデータをいくつかに分割
    • 各データセットに対して x 2 値を計算
    • 得られた x 2 値の集合の妥当性を検証
      • 再び統計的検定を行う
      • 上下パーセント点 と比較する
        • 上側 1% 点 ...
        • 100 回に 1 回くらいは,この値を超えるかもという点
  • 23. その他の統計的検定手法
    • KS 検定 (Kolmogorov-Smirnov 検定)
      • x 2 検定の連続変数バージョン(クラス分割不要)
    • ラン長検定
      • 長さ k のラン発生確率 = 0.5 × 長さ k – 1 のラン発生確率
      • (2元の無記憶定常情報源で,通報発生が等確率のとき)
      • ランの発生個数について, x 2 検定を行う手法
    • ポーカー検定,衝突検定,間隔検定 etc.
    • いずれの方法も, 十分長い系列に対して行う必要がある
    • (短い系列では,統計的性質が出現しにくい)
  • 24. 擬似乱数生成アルゴリズムについて
    • 様々な擬似乱数生成アルゴリズムが提案されている
    • その多くが,少量の乱数の 種 ( シード , seed )から,多量の
    • 擬似乱数系列を生成するもの
    • 線形合同法 ( linear congruent method )
    • 漸化式に基づいて擬似乱数を生成する方式
    • i 番目の値が X i のとき, X i +1 = aX i + c mod M とする
      • a , c , M は適当なパラメータ(選び方にはコツがある)
    • 得られる値は 0 から M – 1 の整数値
  • 25. 線形合同法の性質について
    • 得られる 擬似乱数列の周期は,必ず M 以下 となる
      • M は,ある程度大きな値にすべき
    • M の選択がまずいと, X i の下位ビットのランダム性が悪化 する
      • M は素数にするのが良い
      • 処理を簡便にするため, M = 2 e とする実装もある
    • パラメータ a や c の選択についても,ある程度の規則が存在
  • 26. 線形合同法の問題点
    • ( X i , X i +1 ) で与えられる2次元平面上の点を考える
    • ( X i , X i +1 ) の点が, 平面全体に広がることが理想的
    • 線形合同法では, X i が決まれば X i +1 が一意に決まる
    • ⇒ 直線 x = a 上には,高々一個の点しか配置されない
    X i +1 = 5 X i + 1 mod 7 のとき ... 1 2 3 4 5 6 O 1 6 5 4 3 2 平面上の点を一個選んで ... という用途には使えない (初期値が 5 のとき)
  • 27. M系列法
    • M 系列法 ( M-sequence method )
    • 線形フィードバックシフトレジスタを利用して擬似乱数を生成
    • p 段シフトレジスタ ⇒ 状態数は 2 p 通り存在する
    • 結線方法によっては, 周期 2 p –1 の擬似乱数系列 が生成可能
      • 特異点(全ゼロ状態)以外のすべての状態を経由
      • ⇒ 2 p –1 という周期は,レジスタ数 p 段では最大値( M ax)
    X i X i –1 X i – p X i – p +1 X i – p +2 結線 or 断線
  • 28. M系列法について
    • 結線方法は,原始多項式の係数にしたがって決定(省略)
    • 生成される系列は,非常に優れた統計的性質を持つ
    • レジスタの初期値の違い ⇒ 生成される系列の位相の違い
    • シフト加法性
    • 高い自己相関性を持つ ⇒ CDMA などの通信方式でも利用
  • 29. その他の擬似乱数生成法
    • メルセンヌ・ツイスタ法 ( MT 法, Mersenne Twister method )
      • 松本眞氏(現広島大),西村拓士氏(現山形大)により提案
      • メルセンヌ素数を使い,シフトレジスタ法を一捻りした方
      • 高品質の擬似乱数を高速に生成することが可能
    • 予測不能な 擬似乱数生成法
      • いわゆる「記憶のない」乱数生成 ⇒ 暗号的用途に向く
      • Blum 法など
      • 線形合同法,M系列法,MT法は,暗号用途には使えない
  • 30. まとめ
    • コルモゴロフ的な乱数の定式化
    • 擬似乱数の統計的検定
      • x 2 検定
    • 具体的な擬似乱数生成アルゴリズム
      • 線形合同法,M系列法
  • 31. 練習問題
    • a = 110010111110001000110100101011101100とする(| a |=36)
      • a を長さ2のブロックに区切り, x 2 値を計算せよ
      • 長さ3,4のブロックに区切り,それぞれ x 2 値を計算せよ
    • 線形合同法を実装し,擬似乱数を生成せよ
    • 上記で生成した擬似乱数を,2次元平面にプロットせよ
    • (スライドの26ページ参照)