SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
BLUE*アルゴリズム
                  西尾泰和




13年4月14日日曜日
論文紹介

       • Marc Sebban, et. al. “BLUE*: a Blue-Fringe
          Procedure for Learning DFA with Noisy Data”
       • http://labh-curien.univ-st-etienne.fr/~janodet/
          pub/tjs04.pdf
       • ノイズを含む信号列から状態遷移図を推定
          →それが何の役に立つの?



13年4月14日日曜日
論文紹介
   • Thomas Arts and Simon Thompson, “From Test Cases
      to FSMs: Augmented Test-driven Development and
      Property Inference”
   • http://www.cs.kent.ac.uk/pubs/2010/3041/content.pdf
   • ユニットテストの結果からシステム内部の状態遷
      移図を推定し、シナリオテストの自動生成&テス
      トの不足の指摘をする


13年4月14日日曜日
FSM?DFA?

        • FSM: Finite-State Machine: 有限状態機械
        • DFA: Deterministic Finite Automaton:
              決定性有限オートマトン

        • 前のスライドでは「状態遷移図」と呼んだ

13年4月14日日曜日
DFAの推定

         • 入力:
              受理される信号列の集合
              受理されない信号列の集合

         • 出力:
              DFA



13年4月14日日曜日
 
BLUE*の流れ




         • まずイメージを共有するために
              BLUE*の流れを追って見る




13年4月14日日曜日
 
BLUE*の流れ


                     入力データ


         • e_plus = ['ac', 'abc', 'abbc']
         • e_minus = ['b', 'c']



13年4月14日日曜日
 
BLUE*の流れ


     PTA(Prefix Tree Acceptor)




                 • e_plus = ['ac', 'abc', 'abbc']
                 • e_minus = ['b', 'c']
13年4月14日日曜日
 
BLUE*の流れ




              端から徐々に
              赤い部分が
               広がる




13年4月14日日曜日
 
BLUE*の流れ




              2と3をマージ!




13年4月14日日曜日
 
BLUE*の流れ




              2と5をマージ!



              2と6をマージ!



              できあがり!

13年4月14日日曜日
 
DFAの推定


                  既存手法

         • RPNI(Oncina&Garcia, 1992)
         • EDSM(Lang et al., 1998)
         • 多項式時間でDFAを構築できる
         • 入力列にノイズが入ることを想定してい
              ない→むりやりフィット→過学習



13年4月14日日曜日
 
DFAの推定


                      RPNI*
         • Sebban & Janodet, 2003
         • RPNIに確率を持ち込む
         • 分類を間違える確率が状態のマージの前
              (p1)と後(p2)で変わらないことを検定

         • p1, p2の真の値はわからない。
              教師データから推定: p1^, p2^


13年4月14日日曜日
 
DFAの推定: RPNI*


              正規分布で近似
    • p2^ - p1^の分布を正規分布で近似
    • N(p2 - p1, sqrt(2 * p^ q^ / N))
      where p^ = (p1^ + p2^) / 2, q^ = 1 - p^
      Nは教師データの総数

    • T = p2^ - p1^がこの分布の(1 - α)-percentile Zαを
      超えるなら、危険率αで仮説p1 = p2は棄却される


13年4月14日日曜日
 
DFAの推定: RPNI*


                RPNI*の改良
    • RPNI*はRPNIよりもノイズのあるデータからの学
      習がよくなった。

    • しかし、大きなDFAを少ないデータから学習する
      ことは不得手。

    • そういうデータでの最近の勝者がとった戦略:
      ・マージを可能な限り遅延させる
      ・複数の選択肢の中で一番よいものを行う
      →これを真似してみよう!
13年4月14日日曜日
 
DFAの推定: BLUE*


     PTA(Prefix Tree Acceptor)




                 • e_plus = ['ac', 'abc', 'abbc']
                 • e_minus = ['b', 'c']
13年4月14日日曜日
 
DFAの推定: BLUE*


              BLUE*の1ステップ




    • promotion: blueをredに変える   どちらかをやる
    • merging: blueをredに合成する
13年4月14日日曜日
 
DFAの推定: BLUE*


              BLUE*の1ステップ
    • すべてのblueとredの組み合わせについて
        「マージ可能かどうか」を判断(前述の検定)

    • mergeできないblueがあるならその中から
        「一番良いpromotion」を行う

    • なければ「一番良いマージ」を行う
                「一番良い」の定義は?

13年4月14日日曜日
一番よいpromotion

     • blueは他のどのredとmergeしても
         有意にエラー率が増える場合に
         「mergeできない」と考えてpromoteされる。

     • しかし「本当はmergeすべきなのにされな
         い」が起こりうる(第一種の過誤)

     • この確率が最も小さいものを選ぶ
13年4月14日日曜日
一番よいmerging
         • 「本当はmergeすべきでないのにする」
              確率が最も小さいもの(第二種の過誤)

         • P(マージ | p2 - p1 > 0)
         • これを直接計算するのは大変、そこで
              δ > 0を導入して P(マージ | p2 - p1 = δ)
              を計算する。Pを最小とするようなred-
              blue対はδに関係なく決まる

13年4月14日日曜日
tweak

         • この尺度でマージ対象を選ぶと頂点数の
              あまり減らないマージが多くなる傾向

         • 安全だが、面白くない
         • そこで「マージによって減る頂点の数」
              で割ったものを代わりに使う

                それをやっても結果がδに影響されないとは言い切れない…
                                            
13年4月14日日曜日
 
abを負例に追加


                          2と3のマージ
                       →abはマージ前は
                         非受理だったが
                         マージ後は受理


                      ↓abは教師データに
                         含まれていない
              • e_plus = ['ac', 'abc', 'abbc']
              • e_minus = ['b', 'c']
13年4月14日日曜日
 
abを負例に追加


              abを負例に追加


                     2,3がマージ
                    されなくなる




13年4月14日日曜日
 
abを負例に追加




                            1と5をマージ




                            4と6がマージ



     注: promotionの図を省略しているため青同士でマージされたように見える
                                            
13年4月14日日曜日
シナリオテストとの対応
               • e_plus = ['ac', 'abc', 'abbc']
               • e_minus = ['b', 'c']
      • 例えば
          a: ファイルオープン b: 書き込み c: クローズ
          と読み替えてみる

      • e_minus = ['b', 'c'] # いきなり書き込みやク
          ローズをしたらエラー、というテスト

13年4月14日日曜日
「開いて書き込んで、クローズしない」は
              エラーではない、という解釈


                正しい?正しくない?
               それは人間が決めること


              正しくない→テストケースを追加
13年4月14日日曜日
形式的仕様記述との比較

              形式的仕様記述    BLUE*

モデルの表現力         高い       FSMだけ
                人間が     テストケース
    記述コスト
               全部記述     から学習

    学習コスト       高い        低い

13年4月14日日曜日

Más contenido relacionado

Más de nishio

量子アニーリングマシンのプログラミング
量子アニーリングマシンのプログラミング量子アニーリングマシンのプログラミング
量子アニーリングマシンのプログラミングnishio
 
夏プロ報告
夏プロ報告夏プロ報告
夏プロ報告nishio
 
ITと経営
ITと経営ITと経営
ITと経営nishio
 
部分観測モンテカルロ計画法を用いたガイスターAI
部分観測モンテカルロ計画法を用いたガイスターAI部分観測モンテカルロ計画法を用いたガイスターAI
部分観測モンテカルロ計画法を用いたガイスターAInishio
 
交渉力について
交渉力について交渉力について
交渉力についてnishio
 
If文から機械学習への道
If文から機械学習への道If文から機械学習への道
If文から機械学習への道nishio
 
組織横断型研究室構想
組織横断型研究室構想組織横断型研究室構想
組織横断型研究室構想nishio
 
2017首都大学東京情報通信特別講義
2017首都大学東京情報通信特別講義2017首都大学東京情報通信特別講義
2017首都大学東京情報通信特別講義nishio
 
強化学習その5
強化学習その5強化学習その5
強化学習その5nishio
 
良いアイデアを出すための方法
良いアイデアを出すための方法良いアイデアを出すための方法
良いアイデアを出すための方法nishio
 
強化学習その4
強化学習その4強化学習その4
強化学習その4nishio
 
強化学習その3
強化学習その3強化学習その3
強化学習その3nishio
 
強化学習その2
強化学習その2強化学習その2
強化学習その2nishio
 
強化学習その1
強化学習その1強化学習その1
強化学習その1nishio
 
線形?非線形?
線形?非線形?線形?非線形?
線形?非線形?nishio
 
機械学習キャンバス0.1
機械学習キャンバス0.1機械学習キャンバス0.1
機械学習キャンバス0.1nishio
 
首都大学東京「情報通信特別講義」2016年西尾担当分
首都大学東京「情報通信特別講義」2016年西尾担当分首都大学東京「情報通信特別講義」2016年西尾担当分
首都大学東京「情報通信特別講義」2016年西尾担当分nishio
 
勾配降下法の 最適化アルゴリズム
勾配降下法の最適化アルゴリズム勾配降下法の最適化アルゴリズム
勾配降下法の 最適化アルゴリズムnishio
 
Wifiで位置推定
Wifiで位置推定Wifiで位置推定
Wifiで位置推定nishio
 
ESP8266EXで位置推定
ESP8266EXで位置推定ESP8266EXで位置推定
ESP8266EXで位置推定nishio
 

Más de nishio (20)

量子アニーリングマシンのプログラミング
量子アニーリングマシンのプログラミング量子アニーリングマシンのプログラミング
量子アニーリングマシンのプログラミング
 
夏プロ報告
夏プロ報告夏プロ報告
夏プロ報告
 
ITと経営
ITと経営ITと経営
ITと経営
 
部分観測モンテカルロ計画法を用いたガイスターAI
部分観測モンテカルロ計画法を用いたガイスターAI部分観測モンテカルロ計画法を用いたガイスターAI
部分観測モンテカルロ計画法を用いたガイスターAI
 
交渉力について
交渉力について交渉力について
交渉力について
 
If文から機械学習への道
If文から機械学習への道If文から機械学習への道
If文から機械学習への道
 
組織横断型研究室構想
組織横断型研究室構想組織横断型研究室構想
組織横断型研究室構想
 
2017首都大学東京情報通信特別講義
2017首都大学東京情報通信特別講義2017首都大学東京情報通信特別講義
2017首都大学東京情報通信特別講義
 
強化学習その5
強化学習その5強化学習その5
強化学習その5
 
良いアイデアを出すための方法
良いアイデアを出すための方法良いアイデアを出すための方法
良いアイデアを出すための方法
 
強化学習その4
強化学習その4強化学習その4
強化学習その4
 
強化学習その3
強化学習その3強化学習その3
強化学習その3
 
強化学習その2
強化学習その2強化学習その2
強化学習その2
 
強化学習その1
強化学習その1強化学習その1
強化学習その1
 
線形?非線形?
線形?非線形?線形?非線形?
線形?非線形?
 
機械学習キャンバス0.1
機械学習キャンバス0.1機械学習キャンバス0.1
機械学習キャンバス0.1
 
首都大学東京「情報通信特別講義」2016年西尾担当分
首都大学東京「情報通信特別講義」2016年西尾担当分首都大学東京「情報通信特別講義」2016年西尾担当分
首都大学東京「情報通信特別講義」2016年西尾担当分
 
勾配降下法の 最適化アルゴリズム
勾配降下法の最適化アルゴリズム勾配降下法の最適化アルゴリズム
勾配降下法の 最適化アルゴリズム
 
Wifiで位置推定
Wifiで位置推定Wifiで位置推定
Wifiで位置推定
 
ESP8266EXで位置推定
ESP8266EXで位置推定ESP8266EXで位置推定
ESP8266EXで位置推定
 

BLUE*アルゴリズム

  • 1. BLUE*アルゴリズム 西尾泰和 13年4月14日日曜日
  • 2. 論文紹介 • Marc Sebban, et. al. “BLUE*: a Blue-Fringe Procedure for Learning DFA with Noisy Data” • http://labh-curien.univ-st-etienne.fr/~janodet/ pub/tjs04.pdf • ノイズを含む信号列から状態遷移図を推定 →それが何の役に立つの? 13年4月14日日曜日
  • 3. 論文紹介 • Thomas Arts and Simon Thompson, “From Test Cases to FSMs: Augmented Test-driven Development and Property Inference” • http://www.cs.kent.ac.uk/pubs/2010/3041/content.pdf • ユニットテストの結果からシステム内部の状態遷 移図を推定し、シナリオテストの自動生成&テス トの不足の指摘をする 13年4月14日日曜日
  • 4. FSM?DFA? • FSM: Finite-State Machine: 有限状態機械 • DFA: Deterministic Finite Automaton: 決定性有限オートマトン • 前のスライドでは「状態遷移図」と呼んだ 13年4月14日日曜日
  • 5. DFAの推定 • 入力: 受理される信号列の集合 受理されない信号列の集合 • 出力: DFA 13年4月14日日曜日
  • 6.   BLUE*の流れ • まずイメージを共有するために BLUE*の流れを追って見る 13年4月14日日曜日
  • 7.   BLUE*の流れ 入力データ • e_plus = ['ac', 'abc', 'abbc'] • e_minus = ['b', 'c'] 13年4月14日日曜日
  • 8.   BLUE*の流れ PTA(Prefix Tree Acceptor) • e_plus = ['ac', 'abc', 'abbc'] • e_minus = ['b', 'c'] 13年4月14日日曜日
  • 9.   BLUE*の流れ 端から徐々に 赤い部分が 広がる 13年4月14日日曜日
  • 10.   BLUE*の流れ 2と3をマージ! 13年4月14日日曜日
  • 11.   BLUE*の流れ 2と5をマージ! 2と6をマージ! できあがり! 13年4月14日日曜日
  • 12.   DFAの推定 既存手法 • RPNI(Oncina&Garcia, 1992) • EDSM(Lang et al., 1998) • 多項式時間でDFAを構築できる • 入力列にノイズが入ることを想定してい ない→むりやりフィット→過学習 13年4月14日日曜日
  • 13.   DFAの推定 RPNI* • Sebban & Janodet, 2003 • RPNIに確率を持ち込む • 分類を間違える確率が状態のマージの前 (p1)と後(p2)で変わらないことを検定 • p1, p2の真の値はわからない。 教師データから推定: p1^, p2^ 13年4月14日日曜日
  • 14.   DFAの推定: RPNI* 正規分布で近似 • p2^ - p1^の分布を正規分布で近似 • N(p2 - p1, sqrt(2 * p^ q^ / N)) where p^ = (p1^ + p2^) / 2, q^ = 1 - p^ Nは教師データの総数 • T = p2^ - p1^がこの分布の(1 - α)-percentile Zαを 超えるなら、危険率αで仮説p1 = p2は棄却される 13年4月14日日曜日
  • 15.   DFAの推定: RPNI* RPNI*の改良 • RPNI*はRPNIよりもノイズのあるデータからの学 習がよくなった。 • しかし、大きなDFAを少ないデータから学習する ことは不得手。 • そういうデータでの最近の勝者がとった戦略: ・マージを可能な限り遅延させる ・複数の選択肢の中で一番よいものを行う →これを真似してみよう! 13年4月14日日曜日
  • 16.   DFAの推定: BLUE* PTA(Prefix Tree Acceptor) • e_plus = ['ac', 'abc', 'abbc'] • e_minus = ['b', 'c'] 13年4月14日日曜日
  • 17.   DFAの推定: BLUE* BLUE*の1ステップ • promotion: blueをredに変える どちらかをやる • merging: blueをredに合成する 13年4月14日日曜日
  • 18.   DFAの推定: BLUE* BLUE*の1ステップ • すべてのblueとredの組み合わせについて 「マージ可能かどうか」を判断(前述の検定) • mergeできないblueがあるならその中から 「一番良いpromotion」を行う • なければ「一番良いマージ」を行う 「一番良い」の定義は? 13年4月14日日曜日
  • 19. 一番よいpromotion • blueは他のどのredとmergeしても 有意にエラー率が増える場合に 「mergeできない」と考えてpromoteされる。 • しかし「本当はmergeすべきなのにされな い」が起こりうる(第一種の過誤) • この確率が最も小さいものを選ぶ 13年4月14日日曜日
  • 20. 一番よいmerging • 「本当はmergeすべきでないのにする」 確率が最も小さいもの(第二種の過誤) • P(マージ | p2 - p1 > 0) • これを直接計算するのは大変、そこで δ > 0を導入して P(マージ | p2 - p1 = δ) を計算する。Pを最小とするようなred- blue対はδに関係なく決まる 13年4月14日日曜日
  • 21. tweak • この尺度でマージ対象を選ぶと頂点数の あまり減らないマージが多くなる傾向 • 安全だが、面白くない • そこで「マージによって減る頂点の数」 で割ったものを代わりに使う それをやっても結果がδに影響されないとは言い切れない…   13年4月14日日曜日
  • 22.   abを負例に追加 2と3のマージ →abはマージ前は 非受理だったが マージ後は受理 ↓abは教師データに 含まれていない • e_plus = ['ac', 'abc', 'abbc'] • e_minus = ['b', 'c'] 13年4月14日日曜日
  • 23.   abを負例に追加 abを負例に追加 2,3がマージ されなくなる 13年4月14日日曜日
  • 24.   abを負例に追加 1と5をマージ 4と6がマージ 注: promotionの図を省略しているため青同士でマージされたように見える   13年4月14日日曜日
  • 25. シナリオテストとの対応 • e_plus = ['ac', 'abc', 'abbc'] • e_minus = ['b', 'c'] • 例えば a: ファイルオープン b: 書き込み c: クローズ と読み替えてみる • e_minus = ['b', 'c'] # いきなり書き込みやク ローズをしたらエラー、というテスト 13年4月14日日曜日
  • 26. 「開いて書き込んで、クローズしない」は エラーではない、という解釈 正しい?正しくない? それは人間が決めること 正しくない→テストケースを追加 13年4月14日日曜日
  • 27. 形式的仕様記述との比較 形式的仕様記述 BLUE* モデルの表現力 高い FSMだけ 人間が テストケース 記述コスト 全部記述 から学習 学習コスト 高い 低い 13年4月14日日曜日