PowerPoint Presentation

Similar documents
11yama

進捗状況の確認 1. gj も gjp も動いた 2. gj は動いた 3. gj も動かない 2

アルゴリズム入門

PowerPoint Presentation

5_motif 公開版.ppt

A Constructive Approach to Gene Expression Dynamics

生命情報学

アルゴリズム入門

第4回バイオインフォマティクスアルゴリズム実習

Microsoft PowerPoint - H17-5時限(パターン認識).ppt

算法の設計と評価

オートマトン 形式言語及び演習 4. 正規言語の性質 酒井正彦 正規言語の性質 反復補題正規言語が満たす性質 ある与えられた言語が正規言語でないことを証明するために その言語が正規言語であると

Microsoft Word - 3new.doc

Microsoft PowerPoint - comprog11.pptx


PowerPoint プレゼンテーション

Microsoft PowerPoint - 3.ppt [互換モード]


プログラミング基礎

Taro-再帰関数Ⅲ(公開版).jtd

生命情報学

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

PowerPoint プレゼンテーション

☆joshin_表_0524.ai

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

Taro-最大値探索法の開発(公開版

a s d

a s d

所得税の確定申告の手引き

Prog1_10th

PowerPoint Presentation

PowerPoint Presentation

Taro-再帰関数Ⅱ(公開版).jtd

Microsoft PowerPoint - lec10.ppt

PowerPoint プレゼンテーション

レコード class Point attr_accessor("x", "y") インスタンス変数の宣言 point.rb

カイ二乗フィット検定、パラメータの誤差

2006年10月5日(木)実施

講習No.10

生命情報学

Microsoft PowerPoint - lecture a.pptx

Microsoft Word - 卒論レジュメ_最終_.doc

Microsoft PowerPoint - 09re.ppt [互換モード]

Microsoft PowerPoint - Compiler03note.pptx

文庫●注文一覧表2016c(7月)/岩波文庫


PowerPoint プレゼンテーション

始めに, 最下位共通先祖を求めるための関数 LcaDFS( int v ) の処理を記述する. この関数は値を返さない再帰的な void 関数で, 点 v を根とする木 T の部分木を深さ優先探索する. 整数の引数 v は, 木 T の点を示す点番号で, 配列 NodeSpace[ ] へのカーソル

2

コンピュータリテラシ 第 6 回表計算 2 このスライド 例題 /reidai6.xlsx /reidai6a.xlsx 課題 12 /reidai6b.xlsx /table12_13.xlsx

Microsoft PowerPoint - pr_12_template-bs.pptx

メソッドのまとめ

問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java

第12回 モナドパーサ

Taro-cshプログラミングの応用.jt

Microsoft PowerPoint P演習 第10回 関数.ppt [互換モード]

日本外傷歯学会認定医(平成24年11月30日付) H

離散数理工学 第 2回 数え上げの基礎:漸化式の立て方

福沢論文

分子系統樹推定の落とし穴と回避法 筑波大 生命環境 田辺晶史

Microsoft PowerPoint - 05.pptx

情報処理Ⅰ

文法と言語 ー文脈自由文法とLR構文解析2ー

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

AC-2

エンジョイ北スポーツ

Microsoft PowerPoint - BIセンターセミナー2013.pptx[読み取り専用]

Microsoft PowerPoint - lecture a.pptx

航空機の運動方程式

論理と計算(2)

分子系統解析における様々な問題について 田辺晶史

untitled

untitled


離散数理工学 第 2回 数え上げの基礎:漸化式の立て方

バイオインフォマティクスⅠ

Microsoft PowerPoint - ca ppt [互換モード]

2014年度 名古屋大・理系数学

program7app.ppt

A

2

Microsoft Word - Training10_プリプロセッサ.docx

模擬試験問題(第1章~第3章)

電子ブック 基本制作説明書

レコードとオブジェクト

Prog1_12th

テキスト処理第 12 回 ( ) 田中哲産業技術総合研究所情報技術研究部門 u.ac.jp /

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

オートマトンと言語

PowerPoint プレゼンテーション

13FG-生物-問題_H1.indd

Microsoft Word - Javacc.docx

TC316_A5_2面_web用PDF台紙.indd

untitled

<4D F736F F D E95F14E565F838C D955F907D90E096BE5F8F4390B394C5816A2E646F63>

情報量と符号化

レコードとオブジェクト

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

Taro-スタック(公開版).jtd

Transcription:

パターン認識入門

パターン認識 音や画像に中に隠れたパターンを認識する 音素 音節 単語 文 基本図形 文字 指紋 物体 人物 顔 パターン は唯一のデータではなく 似通ったデータの集まりを表している 多様性 ノイズ 等しい から 似ている へ ~ だ から ~ らしい へ

等しい から 似ている へ 完全に等しいかどうかではなく 似ているか どうかを判定する パターンを代表する模範的データとどのくらい似ているか 例 : 二つの文字列の比較 多少の文字の食い違いや 文字の欠落を許して 似ているか アラインメントという 動的計画法を活用

DNA やタンパクの比較 DNA --- 塩基 ( 四種類 ) の配列 セントラル ドグマ DNA RNA タンパク 三塩基 ( コドン ) が一つのアミノ酸に 似ている配列は似ているタンパクに 似ている配列は同じ祖先から進化 タンパク --- アミノ酸 (20 種類 ) の配列 似ている配列は似た構造に 似ている配列は似た機能を

アラインメント アラインメント二つ ( 複数 ) の文字列の比較 音声認識 文字認識 DNAやタンパクの比較 GACGGATTAG と GATCGGA ギャップ 不一致 GA-CGGATTAG GATCGGA

ぴったり同じでなくとも 似ているかどうかを判定 スコア 一致不一致ギャップ足し合わせる アラインメントの類似度 類似度が最大の アラインメント 最適化 アラインメント ( ギャップの入れ方 ) を求める

例 AAC と をアラインするには 2 0 0 AA と ATA のアラインメントに C と G を付加 A-A ATA A-AC AAC と ATA のアラインメントに - と G を付加 AAC ATA AA と のアラインメントに C と - を付加 A-A- A-A-C AAC- - 1-2 -2 スコア : 一致 +2 不一致 -1 ギャップ -2 これを採用!

def align_sub(s,t,i,j) if i==0 j==0 i*g() + j*g() else 再帰版のアラインメント g : ギャップのペナルティ v0 = align_sub(s,t,i, j-1) + g() v1 = align_sub(s,t,i-1,j-1) + q(s[i-1],t[j-1]) v2 = align_sub(s,t,i-1,j) + g() max(v0,max(v1,v2)) end q(c, d) : c と d の類似度 end def align_rec(s,t) align_sub(s,t,s.length(),t.length()) end align_rec.rb

def g() -2 end def q(c,d) if c == d return 2 else return -1 end end ギャップのペナルティ 文字 c と文字 d の類似度を返す 一致 不一致 align_rec.rb いわずもがな x と y の最大値 def max(x,y) end if x>y else end return x return y max.rb

練習 (max.rb を作る ) align_rec.rb をダウンロードし align_rec("aac","") を実行する RNase_P.rb をダウンロードし align_rec(seq0(),seq1()) を実行する

動的計画法 プロ野球日本シリーズにおける優勝の確率 P(i, j): A がシリーズに勝つまでにあと i 勝 B はあと j 勝という状況で 最終的に A がシリーズに勝つ確率 P(i, j) = 1 i=0 かつ j>0 = 0 i>0 かつ j=0 = (P(i-1, j) + P(i, j-1))/2 i>0 かつ j>0 j i 1 1 1 1 0 1/2 3/4 7/8 0 0 1/4 1/8 1/2 A と B は同じ強さと仮定

1. 1/16 2. 3/16 3. 5/16 4. 7/16 5. 9/16 ここは? j i 1 1 1 1 0 1/2 3/4 7/8 0 0 1/4 1/8 1/2

動的計画法 テーブルを用意して 再帰的な計算の重複を避ける テーブルの中身を順に埋めることにより 求める値を計算する 各種の最適化問題に適用 アラインメント DNA RNAのエネルギー最小化 構文解析

アラインメントの動的計画法 二つの配列 s と t の間の類似度 a[i][j] : s の部分配列 s[0],...,s[i-1] と t の部分配列 t[0],...,t[j-1] の間の類似度 a[i][j] = max{a[i][j-1] + g(), a[i-1][j-1] + q(s[i-1], t[j-1]), a[i-1][j] + g() } g() : ギャップのペナルティ ( 負の数 ) q(c, d) : c と d の類似度 c と d が等しければ適当なスコア ( 正 ) 似ていればそれなりのスコア似ていなければ不一致のペナルティ ( 負 )

境界条件 a[0][0] = 0 a[0][j] = a[0][j-1] + g() (j>0) a[i][0] = a[i-1][0] + g() (i>0) 例えば g() = -2 結局 a[0][j] = j*g() a[i][0] = i*g() となる 要するに ギャップばかり

スコア : 一致 +2 不一致 -1 ギャップ -2 t A T A G A-AC s 0-2 -4-6 -8 A -2 A -4 C -6

スコア : 一致 +2 不一致 -1 ギャップ -2 t A T A G A-AC s 0-2 -4-6 -8 A -2 2 A -4 C -6

スコア : 一致 +2 不一致 -1 ギャップ -2 t A T A G A-AC s 0-2 -4-6 -8 A -2 2 0 A -4 0 C -6

スコア : 一致 +2 不一致 -1 ギャップ -2 t A T A G A-AC s 0-2 -4-6 -8 A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0

スコア : 一致 +2 不一致 -1 ギャップ -2 t A T A G A-AC s 0-2 -4-6 -8 A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 A-A ATA A-A- AAC ATA

スコア : 一致 +2 不一致 -1 ギャップ -2 t A T A G A-AC s 0-2 -4-6 -8 A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1 AAC ATA A-A ATA A-A- A-AC

def align(s,t) m = s.length() n = t.length() a = make2d(m+1,n+1) a[0][0] = 0 for j in 1..n a[0][j] = a[0][j-1] + g() end for i in 1..m a[i][0] = a[i-1][0] + g() end for i in 1..m for j in 1..n # ここを埋めてみよう end end a end 境界条件 align.rb

スコア : 一致 +2 不一致 -1 ギャップ -2 t A T A C s 0-2 -4-6 -8 A -2 T -4 C -6 ここは? 1. 1 2. 2 3. 3 4. 4 5. 0 6. -1 7. -2 8. -3 9. -4

スコア : 一致 +2 不一致 -1 ギャップ -2 t A T A C s 0-2 -4-6 -8 A -2 T -4 C -6 ここは? 1. 1 2. 2 3. 3 4. 4 5. 0 6. -1 7. -2 8. -3 9. -4

スコア : 一致 +2 不一致 -1 ギャップ -2 t A T A C s 0-2 -4-6 -8 A -2 T -4 C -6 ここは? 1. 1 2. 2 3. 3 4. 4 5. 0 6. -1 7. -2 8. -3 9. -4

トレースバック 最大の類似度を与えるアラインメントを提示するために 配列の最後から それまでの選択を振り返る ( トレースバック ) ギャップの入った文字列を ( 配列にして ) 二つ返す

スコア : 一致 +2 不一致 -1 ギャップ -2 j t A T A G A-AC s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1

スコア : 一致 +2 不一致 -1 ギャップ -2 j t A T A G A-AC s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1

スコア : 一致 +2 不一致 -1 ギャップ -2 j t A T A G A-AC i s 0-2 -4-6 -8 A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1 A-A ATA A-AC

スコア : 一致 +2 不一致 -1 ギャップ -2 j t A T A G A-AC s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1

スコア : 一致 +2 不一致 -1 ギャップ -2 j t A T A G A-AC s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1

スコア : 一致 +2 不一致 -1 ギャップ -2 A A A- j t A T AT A G A-AC s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1

u の前に - を追加 v の前に t[j-1] を追加 def traceback(a,s,t) u = "" v = "" i = s.length() j = t.length() while i>0 j>0 if j>0 && a[i][j] == a[i][j-1] + g() u = "-" + u v = t[j-1.. j-1] + v j = j - 1 # go left else if i>0 && j>0 && a[i][j] == a[i-1][j-1] + q(s[i-1], t[j-1]) # ここを埋めてみよう else if i>0 && a[i][j] == a[i-1][j] + g() # ここを埋めてみよう end end end end [u,v] end 条件 align.rb

スコア : 一致 +2 不一致 -1 ギャップ -2 j t A T A G A-AC s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1

スコア : 一致 +2 不一致 -1 ギャップ -2 j t A T A G A-AC s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1

スコア : 一致 +2 不一致 -1 ギャップ -2 j t A T A G A-AC s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1 G C

スコア : 一致 +2 不一致 -1 ギャップ -2 j t A T A G A-AC s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1 AG AC

スコア : 一致 +2 不一致 -1 ギャップ -2 j t A T A G A-AC s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1 -AG GAC

スコア : 一致 +2 不一致 -1 ギャップ -2 j t A T A G A-AC s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1 A-AG AGAC

スコア : 一致 +2 不一致 -1 ギャップ -2 アラインメントは? t A T A C s 0-2 -4-6 -8 A -2 T -4 C -6 1.-ATC ATAC 2.A-TC ATAC 3.AT-C ATAC 4.ATC- ATAC

練習 align.rb をダウンロードする align を完成させて align("aac","") を実行する align(seq0(),seq1()) を実行する traceback を完成させて align_dp("aac","") を実行する align_dp(seq0(),seq1()) を実行する

進捗状況の確認 1. align_dp が正しく動いた時点で投票してください 2. align_dp(traceback) が動かない 3. align は動いたが traceback がまだできていない 4. align はできたが うまく動かない 5. align がまだできていない

~ だ から ~ らしい へ あるデータがパターンに従っているか 否かを 断定するのではなく その確からしさを求める 例 : 文字列の判別 文字列がパターンに従っている確からしさを求める 隠れマルコフモデル ここでも動的計画法を活用

隠れマルコフモデル 有限オートマトンに確率を付加したようなもの 遷移ではなく 状態に文字が対応 出力文字と考える ( 本質的ではない ) 各遷移と各出力文字に確率が与えられる A: 0.2 G: 0.8 0 0.5 0.1 1.0 1 0.3 0.6 A: 0.3 G: 0.1 C: 0.5 T: 0.1 0.5 2 T: 1.0

遷移と出力に確率が付加 A: 0.2 G: 0.8 0 0.5 0.1 1.0 1 0.3 0.6 A: 0.3 G: 0.1 C: 0.5 T: 0.1 0.5 2 T: 1.0 状態遷移 0 1 0 0.5*0.1 = 0.05 0 1 1 0.5*0.6 = 0.30 0 1 2 0.5*0.3 = 0.15... 出力文字列 GCG 0.8*0.5*0.8=0.32 0.016 GCG 0.8*0.5*0.1=0.04 0.012 GCT 0.8*0.5*0.1=0.04 0.012 GCT 0.8*0.5*1.0=0.40 0.060

隠れマルコフ過程 マルコフ過程 次の状態は 現在の状態のみに依存し 過去の履歴には依存しない 隠れ? 各状態の出力も確率的に定まる 従って 状態遷移は直接観測できない 観測可能な現象の背後にある確率的なモデル

音声認識 実際のパターン認識 波形データから音素を抽出 音素列に対する隠れマルコフモデル 手書き文字認識 ストロークをセグメントに分割 セグメントの列に対するアラインメント 画像認識 様々な前処理 エッジ検出 背景分別 アラインメント 隠れマルコフモデル 実際ははるかに複雑 実際はもっと複雑 画像の種類に応じた様々な手法