フリーソフトでつくる音声認識システム

8章

Created by 2GMon

話の流れ

  • なぜシステムの評価が必要なのか
  • システムの評価方法
  • 評価結果に基づいて、システムの性能を向上させる方法

システムが学習データに過剰に適応してしまうと、学習データに対する識別率はほぼ100%になる

しかし、未知のデータに対する識別率は低いものになってしまう

システムの評価方法

分割学習法

  1. データを、学習用データと評価用データにわける


簡単な方法だが欠点がある

  • 学習データが少なくなるので、識別率が下がる
  • 学習データを多くすると評価用データが少なくなり、評価用データの分布が真の未知データの分布とずれる確率が高くなる

交差検定法

  1. $X$を$m$個のグループ$\{X_1, \cdots , X_m\}$にわける
  2. $X_i$を除いた$(m-1)$個のグループで学習し、$X_i$で識別率を求める
  3. 1, 2を全ての$i$に対して行い、$m$個の識別率の平均を識別率の推定値とする

システムの性能を向上させる方法

システムの性能を向上させるには、性能が低い箇所を特定する必要がある

  • 前処理部
  • 特徴抽出部
  • 識別部

前処理部

  • サンプリングレートや量子化ビット数が適切かどうか?
  • ノイズ除去によって、必要なデータまで除去されていないか?
  • etc

特徴抽出部

特徴空間上で各クラスが適切に分離されているかを確認する

二次元データならプロットできるが、多次元の場合なんらかの評価尺度が必要

クラス内分散・クラス間分散比

  • クラス内分散$\sigma_W^2$ : 各クラスでデータの分散を計算して足し合わせたもの
  • クラス間分散$\sigma_B^2$ : クラスの平均ベクトルの分散
  • クラス内分散・クラス間分散比$J = \frac{\sigma_B^2}{\sigma_W^2}$

$\sigma_W^2$が小さいほど、同じクラス同士はまとまっていて、 $\sigma_B^2$が大きいほど、異なるクラスは離れている

$J$が大きいほど、特徴空間上で各クラスを分離できている

3クラス以上の場合、特定のクラス同士が重なっていても他のクラスが離れていれば大きくなる

相対的によい特徴空間ということしか分からない

ベイズ誤り率

2クラス$\{\omega_1, \omega_2\}$の識別問題において、特徴ベクトル${\bf x}$が与えられた時、 ベイズ判定規則が誤る確率は$e_B({\bf x}) = min\{ P(\omega_1|{\bf x}), P(\omega_2|{\bf x})\}$

これを全ての${\bf x}$について積分したものがベイズ誤り率 $$ \begin{array} e_B & = \int e_B({\bf x}) p({\bf x}) d{\bf x} \\ & = \int min\{ P(\omega_1|{\bf x}), P(\omega_2|{\bf x})\} p({\bf x}) d{\bf x} \end{array} $$

$e_B$は分布の重なりを表しているので、理論的にはこれ以上誤り確率を小さく出来ない

識別部

SVMやニューラルネットワークで学習するべき重みの数は、識別器の構成が決まらなければ定まらない

識別関数の次数やニューラルネットワークの中間層の数などが、識別器の構成を決める

このようなパラメータをハイパーパラメータと呼ぶ

ハイパーパラメータとパラメータは同時に学習できないので、 ハイパーパラメータ毎にパラメータを学習して最適なハイパーパラメータを決定する