Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
829
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
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ページ参照)