Python
機械学習
データ分析
ディープラーニング
Kaggle

機械学習プロジェクトの進め方:『Machine Learning Yearning』20-22章(Bias and Variance)

現在、AIや機械学習界隈で最も有名なスタンフォード大学のAndrew Ng教授が、「Machine Learning Yearning」というオンライン書籍を執筆中です。2018年4-5月に、そのドラフト版(1-30章)がオンラインで公開中です。この投稿では、いち早く翻訳を進めています。

http://www.mlyearning.org/
図1.png

この本は、機械学習プロジェクトの構築方法を提供します。また、機械学習アルゴリズムを教えるのではなく、機械学習アルゴリズムが機能する方法に焦点を当てています。

本投稿は、20-22章(Bias and Variance)の翻訳になります。少しづつ翻訳していきます。※翻訳違っていたらご指摘ください。
本書籍は、とても読みやすく、かつ各章短めに記載されています。

1~5章の翻訳

【Draft版公開】Machine Learning Yearning 1~5章 by stanford大学Andrew Ng教授

6章の翻訳

【Draft版公開】Machine Learning Yearning 6章 by stanford大学Andrew Ng教授

7-8章の翻訳

【Draft版公開】Machine Learning Yearning 7~8章 by stanford大学Andrew Ng教授

9-10章の翻訳

【Draft版公開】Machine Learning Yearning 9~10章 by stanford大学Andrew Ng教授

11-12章の翻訳

【Draft版公開】Machine Learning Yearning 11~12章 by stanford大学Andrew Ng教授

13-14章の翻訳

機械学習プロジェクトの進め方:『Machine Learning Yearning』13-14章(スタンフォード大学Andrew Ng教授)

15-16章の翻訳

機械学習プロジェクトの進め方:『Machine Learning Yearning』15-16章(スタンフォード大学Andrew Ng教授)

17-18章の翻訳

機械学習プロジェクトの進め方:『Machine Learning Yearning』17-18章(スタンフォード大学Andrew Ng教授)

19章の翻訳

機械学習プロジェクトの進め方:『Machine Learning Yearning』19章(スタンフォード大学Andrew Ng教授)

20.Bias and Variance: The two big sources of error(バイアスとバリアンス:2つの大きなエラー要因)

トレーニングの最中、開発セットとテストセットは同じ分布から生成されているものとしましょう。パフォーマンスを改善するために、常により多くのトレーニングデータを取得してください。ただし、残念ながら常にあなたが望むような結果になるわけではありません。データの取得に取組むことで、時間を浪費するかもしれません。ですので、どのようなタイミングでデータを追加するべきか、逆に気に留めるべきか、これらを決定すべきでしょうか。
機械学習には、2つの主要なエラー(誤差)要因があります。バイアスとバリアンスです。それらを理解することで、パフォーマンスを改善するための他の戦術と同様に、「データを追加することは時間の有効活用であるかどうか」の意思決定を手助けします。

5%のエラーをもつ猫の分類器を構築するとしましょう。現在、あなたのトレーニングセットのエラー率は15%で、開発セット上では16%のエラー率をもつとします。この場合、トレーニングデータを追加しても、十中八九役に立たないでしょう。他のアクションにフォーカスするべきです。実際、トレーニングセットにたくさんのサンプルを追加することは、トレーニングセット上でのアルゴリズムが、より改善するのを難しくするだけです。(なぜかはあとの章で説明します。)

もし、トレーニングセット上のエラーの割合が15%(正解率85%)で目標は5%のエラー率(95%の正解率)であるとき、解決すべき最初の問題はトレーニングセット上でのアルゴリズムのパフォーマンスを改善することです。

あなたの開発/テストセットのパフォーマンスは、通常はトレーニングセットよりも悪いものです。よって、もし開発/テストセットのサンプルが85%の正解率が得ているなら、95%の正解率を得る方法はありません。

上記の例の通り、開発セット上で、あなたのアルゴリズムが16%のエラー率(84%の正解率)であるとしましょう。16%のエラーを2つのコンポーネントに分解しましょう。

  • 1点目として、トレーニングセット上でのアルゴリズムのエラー率、このサンプルでは15%です。私たちはこれを非公式にアルゴリズムのバイアスと考えます。

  • 2点目として、トレーニングセット上での結果と比較して、開発セットのアルゴリズムの結果がどれくらい悪いか。このサンプルでは、トレーニングセット上よりも1%悪化しています。これを非公式にアルゴリズムのバリアンスと考えます。

学習アルゴリズムに対するいくつかの変更は、エラーの1つ目のコンポーネント(=バイアス)で対処ができ、トレーニングセット上のパフォーマンスを改善できます。いくつかの変更は2つめのコンポーネント(=バリアンス)で対処します。これは、トレーニングセットから開発/テストセットへの汎化を助けます。
最も有望な変更を選択するために、これら2つのコンポーネントのうち、どちらがより緊急に対応するべきかを理解することが非常に有効です。
バイアスとバリアンスに関する良い直感を得ることは、アルゴリズムの効果的な変更の選択に役立ちます。

21. Examples of Bias and Variance(バイアスとバリアンスの例)

猫分類器のタスクについて考えてみましょう。「理想」の分類器(人間のように)は、このタスクについて完璧に近いパフォーマンスを達成する可能性があります。
あなたのアルゴリズムが次のように実行されるとしましょう。

  • トレーニングセット上のエラー:1%
  • 開発セット上のエラー:11%

どのような問題を抱えているでしょうか。前章の定義を適用すると、バイアスは1%、バリアンスは10%(11%-11%)と推定されます。したがって、ハイバリアンスな状態です。この分類器は、トレーニングセット上のエラーは非常に低いですが、開発セットへ汎化できていません。これはオーバーフィットと呼ばれます。

次にこれを考えてみましょう

  • トレーニングセット上のエラー:15%
  • 開発セット上のエラー:16%

バイアスは15%、バリアンスは1%と評価します。この分類器はトレーニングセットをエラー15%でぴったりと適合させていますが、開発セットの誤差はトレーニングセットよりわずかに高い状態です。
したがってこの分類器はバイアスが高いがバリアンスが低い。このアルゴリズムをアンダーフィッティングと言います。

次にこれを考えてみましょう

  • トレーニングセット上のエラー:15%
  • 開発セット上のエラー:30%

バイアスは15%、バリアンスは15%と評価します。この分類器は、高いバイアスと高いバリアンスを持っています。トレーニングセット上でうまくいっていないため、したがって高いバイアスとなり、開発セット上でさらに悪い結果になりバリアンスが高くなります。
オーバーフィッティング/アンダーフィッティングの用語をここで適用することは難しいです。なぜなら分類器はオーバーフィッティング/アンダーフィッティング両方で不合格だからです。

最後に次を考えてみましょう。

  • トレーニングセット上のエラー:0.5%
  • 開発セット上のエラー:1%

この分類器はうまくいっています。バイアスが小さく、バリアンスも小さいです。
この素晴らしいパフォーマンスが達成されたことをお祝いしましょう。

22. Comparing to the optimal error rate(最適なエラー率との比較)

私たちの猫認識の例では、「理想的な」エラー率 - すなわち、「最適な」分類器による1つの達成可能なエラー率は、ほぼ0%です。画像を見ている人間は、ほとんど猫が含む画像を認識できるだろう。このように、私たち同様に働く機械であることを望みます。
他の問題はより困難です。例えば、音声認識システムを構築していて、14%のオーディオクリップが背後にノイズや何か人間には認識できないほどの雑音が含まれているとします。この場合、最も「最適な」音声認識システムはエラー率が14%前後かもしれません。
この音声認識システムでは、あなたのアルゴリズムは以下を達成すると仮定します。

  • トレーニングセットエラー:15%
  • 開発セットエラー:30%

トレーニングセットのパフォーマンスはすでに最適なエラー率である14%に近い値になっています。このように、バイアスの観点やトレーニングセットの観点では、改善の余地はあまりありません。しかしながら、このアルゴリズムは開発セットに対して汎化されていません。このように、バリアンスによるエラーには改善の余地が十分にあります。

この例では、前章の3番目の例に似ています(トレーニングセットが15%のエラー、開発セットが30%のエラーを持っている例)。もし、最適エラー率が0%周辺である場合、トレーニングセットのエラー率15%は、改善の余地が非常に多いです。これは、バイアスを減らすことによる変化が有益である可能性を示唆している。しかし最適エラー率が14%であるとき、同じトレーニングセットのパフォーマンスは、分類器のバイアスによる改善ではほとんど改善余地がないことを示しています。

最適エラー率がゼロから離れている問題については、ここではアルゴリズムのエラーに関するより詳細を示します。上記の音声認識システムの例を続けると、合計30%の開発セット上のエラーは以下のように分解されます。(同様の解析をテストセットエラーに対しても適用できます。)

  • 最適エラー率(不可避バイアスUnavoidable bias):14%。私たちは世界で最高の音声認識システムを作ったとしても、14%のエラーに苦しむとしましょう。私たちは、学習アルゴリズムのバイアスのうち、「避けられない」部分として考えることができます。
  • 回避可能バイアスAvoidable bias):1%。これは、トレーニングセットのエラー率と最適エラー率の差として計算されます。
  • バリアンスVariance):開発セットとトレーニングセットのエラー率の差。

これを以前に示した定義と関連付けるため、バイアス回避可能バイアスは以下に従います。
 バイアス = 最適エラー率(不可避バイアス)+ 回避可能バイアス

回避可能バイアスは、アルゴリズムのパフォーマンスがトレーニングセット上で「最適エラー率」よりどれ程度悪いかを反映しています。バリアンスの概念は以前と同様です。理論的には、大規模なトレーニングセットを訓練することによって、ゼロの値に近づくようにバリアンスを減らすことができます。このように、全てのバリアンスは、十分に大きなデータセットがあれば「回避可能」であり、「不可避バリアンス(unavoidable variance)」とうようなことはありません。

もう一つ例を考えましょう。最適エラー率が14%、そして以下の条件とします。

  • トレーニングセットエラー:15%
  • 開発セットエラー:16%

これまでの章では、私たちはこれを高バイアス分類器と呼んでいましたが、回避可能バイアスによるエラーは1%であり、バリアンスからくるエラーも約1%です。このように、このアルゴリズムは改善の余地はほとんどなく、すでによくやっています。最適エラー率より2%悪いだけです。
これらの例からは、最適エラー率を知ることは次のステップに導くのに役立つことがわかります。統計学的には、最適エラー率はベイズ誤り率(​Bayes error rate, ​Bayes rate)と呼ばれています。

どのように最適エラー率を知るのでしょうか。写真認識やオーディオクリップを転写する作業など、人間が合理的に優れているタスクにとっては、人間にラベルを提供して、トレーニングセットに対する人間のラベルの正解率を測定することができます。これは最適エラー率の推定値を得られます。もし、人間でさえも解決することが難しい問題に取り組んでいる場合には(映画レコメンドの予測、広告の出し分けなど)、最適エラー率を推定することは困難です。

33-35章(「ヒューマンレベルのパフォーマンスと比較」)では、学習アルゴリズムのパフォーマンスとヒューマンレベルのパフォーマンスとの比較のプロセスについて、更なる詳細を説明するでしょう。

最後の数章では、トレーニング/開発セットのエラー率を見ることで、どのように回避可能/不可避バイアスとバリアンスの評価方法について学びます。その次の章では、「バイアスを減らすテクニック」や「バリアンスを減らすテクニック」に優先順位を付ける分析をおこなうことにより、得られる洞察をどう使うかを説明します。
あなたのプロジェクトの現在の問題がハイバイアス(回避可能バイアス)かハイバリアンスかにより、適用すべき異なるテクニックが存在します。読んでください!