第1部 パターン認識の基礎 1 |
第1章 パターン認識って何? 2 |
1.1 パターン認識システムの構成 3 |
1.2 パターンの前処理 5 |
1.3 特徴抽出とは 5 |
1.4 識別部の役割 7 |
1.4.1 識別部の構成 7 |
1.4.2 プロトタイプの決め方 8 |
演習問題 11 |
第2章 データをきちんと取り込もう 12 |
2.1 アナログ信号のディジタル化 12 |
2.1.1 アナログ信号は波である 12 |
2.1.2 標本化と量子化 13 |
2.2 特徴抽出をしやすくする処理 16 |
2.2.1 音の場合 16 |
2.2.2 画像の場合 17 |
演習問題 18 |
第3章 パターンの特徴を調べよう 19 |
3.1 変動に強い特徴とは 20 |
3.1.1 音声の場合 20 |
3.1.2 文字の場合 24 |
3.2 特徴の正規化 24 |
3.3 特徴は多いほどよいか 27 |
3.3.1 偶然に見つかってしまってはまずい 27 |
3.3.2 特徴を減らそう 30 |
演習問題 34 |
第4章 パターンを識別しよう 35 |
4.1 NN法の定式化 35 |
4.1.1 距離最小とは 36 |
4.1.2 プロトタイプと決定境界の関係 37 |
4.2 プロトタイプの決め方 38 |
4.3 パーセプトロンの学習規則 40 |
4.3.1 識別関数の設定 41 |
4.3.2 識別関数とパーセプトロン 41 |
4.3.3 2クラスの識別関数の学習 42 |
4.3.4 パーセプトロンの学習アルゴリズム 45 |
4.4 区分的線形識別関数とk-NN法 48 |
4.4.1 平面で区切れない場合 48 |
4.4.2 区分的線形識別関数の実現 48 |
4.4.3 区分的線形識別関数の識別能力 50 |
4.4.4 学習をあきらめるのも一手 50 |
4.4.5 k-NN法の実現 51 |
演習問題 52 |
第5章 誤差をできるだけ少なくしよう 53 |
5.1 誤差評価にもとづく学習とは 53 |
5.2 Widrow-Hoffの学習規則 55 |
5.2.1 最急降下法 55 |
5.2.2 Widrow-Hoffの学習規則 56 |
5.3 パーセプトロンの学習規則との比較 58 |
5.3.1 パーセプトロンの学習規則を導く 58 |
5.3.2 着目するデータの違い 59 |
演習問題 60 |
第6章 限界は破れるか-SVMとニューラルネットワーク 61 |
6.1 サポートベクトルマシン 61 |
6.1.1 分離面は見つかったけれど 62 |
6.1.2 SVMの学習アルゴリズム 62 |
6.1.3 線形分離可能にしてしまう 69 |
6.2 ニューラルネットワーク 71 |
6.2.1 ニューラルネットワークの構成 72 |
6.2.2 誤差逆伝播法による学習 73 |
演習問題 80 |
第7章 未知データを推定しよう-統計的方法 81 |
7.1 間違う確率を最小にしたい 81 |
7.1.1 誤り確率最小の判定法 82 |
7.1.2 事後確率の求め方 82 |
7.1.3 事後確率の間接的な求め方 83 |
7.1.4 厄介者P(x)を消そう 83 |
7.1.5 事前確率 84 |
7.1.6 最後の難敵「尤度」 85 |
7.2 データの広がりを推定する 85 |
7.2.1 未知データの統計的性質を予測する 85 |
7.2.2 最尤推定 87 |
7.2.3 統計的な識別 88 |
演習問題 91 |
第8章 本当にすごいシステムができたの? 92 |
8.1 未知データに対する認識率の評価 92 |
8.1.1 分割学習法 92 |
8.1.2 交差確認法 93 |
8.2 システムを調整する方法 95 |
8.2.1 悪いところを探す 96 |
8.2.2 前処理の確認 96 |
8.2.3 特徴空間の評価 96 |
8.2.4 ハイパーパラメータの調整 100 |
演習問題 102 |
第2部 実践編-音声認識システムをつくる 103 |
第9章 連続音声を認識してみよう 104 |
9.1 統計的音声認識手法 105 |
9.2 音響モデルの難しさ 106 |
9.3 言語モデルの難しさ 107 |
9.3.1 文法による記述 107 |
9.3.2 統計的言語モデル 108 |
9.4 探索の難しさ 109 |
演習問題 111 |
第10章 声をモデル化してみよう-音響モデルの作り方・使い方・鍛え方 112 |
10.1 なぜ音響「モデル」か 112 |
10.2 音響モデルの作り方 113 |
10.3 音響モデルの使い方 118 |
10.3.1 HMMにおける確率計算 118 |
10.3.2 トレリスによる効率のよい計算 119 |
10.3.3 ビタビアルゴリズムによる近似計算 120 |
10.4 音響モデルの鍛え方 122 |
10.4.1 状態遷移系列がわかっている場合 123 |
10.4.2 状態遷移系列の確率がわかっている場合 123 |
10.4.3 Baum-Welchアルゴリズム 124 |
10.5 実際の音響モデル 127 |
10.5.1 離散値から連続値へ 127 |
10.5.2 モノフォンとトライフォン 128 |
演習問題 129 |
第11章 HTKを使って単語を認識してみよう 130 |
11.1 HTKの構成 130 |
11.2 音声の録音とラベル付け 132 |
11.2.1 音声の録音(HSLabの場合) 132 |
11.2.2 音声の録音(wavesurferの場合) 132 |
11.2.3 正解ラベル付け 134 |
11.3 特徴抽出 136 |
11.4 初期モデルの作成 137 |
11.5 初期値の設定 140 |
11.6 HMMの学習 141 |
11.7 単語認識 143 |
11.8 認識率の評価 145 |
演習問題 147 |
第12章 文法を使って音声を認識してみよう 148 |
12.1 文法とは 148 |
12.2 正規文法と文脈自由文法 150 |
12.2.1 文脈自由文法 151 |
12.2.2 正規文法 152 |
12.3 具体的な文法の記述法 152 |
12.3.1 Julianでの文法の記述方法 152 |
12.3.2 標準化された文法記述 158 |
演習問題 162 |
第13章 統計的言語モデルを作ろう 163 |
13.1 N-グラムで確率計算 164 |
13.2 N-グラム言語モデルを作る 165 |
13.2.1 N-グラムの推定 165 |
13.2.2 語彙の制限 165 |
13.2.3 バックオフスムージング 166 |
13.2.4 ディスカウント値の決め方 168 |
13.2.5 線形補間法 169 |
13.3 言語モデルの評価 170 |
13.4 Palmkit入門 170 |
演習問題 177 |
第14章 連続音声認識に挑戦しよう 178 |
14.1 音声認識における探索 178 |
14.1.1 順番に探してゆこう 179 |
14.1.2 ヒューリスティック探索 180 |
14.1.3 調べる候補を絞り込む 186 |
14.2 ゴールまでの近さの情報 187 |
14.3 Juliusを動かす 189 |
14.4 Julianを動かす 192 |
14.5 認識結果の評価 193 |
14.5.1 評価用データの準備 193 |
14.5.2 認識実験 194 |
14.5.3 認識率の算出 195 |
演習問題 197 |
第15章 会話のできるコンピュータを目指して 198 |
15.1 会話のできるコンピュータの要素技術 198 |
15.2 音声合成のツール 200 |
15.2.1 音声合成の手順 200 |
15.2.2 日本語音声合成ツール Galatea talk 201 |
15.3 顔画像合成のツール 203 |
15.4 対話制御 203 |
15.4.1 対話記述言語VoiceXML 203 |
15.4.2 VoiceXMLによる擬人化エージェントの制御 204 |
15.5 より自然な会話のために 207 |
15.5.1 話し出すタイミング 208 |
15.5.2 わかるということ 208 |
15.5.3 本当の意味は 209 |
演習問題 210 |
演習問題の解答 211 |
付録A 数学的な補足 220 |
A.1 平均と分散 220 |
A.2 共分散行列 220 |
A.3 固有ベクトル 221 |
A.4 正規分布 222 |
付録B インストールガイド 223 |
B.1 cygwln 223 |
B.2 savesurfer 223 |
B.3 WEKA 223 |
B.4 HTK 224 |
B.5 Palmkit 224 |
B.6 Julius/Julian 225 |
B.7 Galatea 225 |
付録C 「楽して学べるパターン認識」と「その後」 226 |
参考文献 228 |
あとがき 229 |
索引 230 |