現在、AIや機械学習界隈で最も有名なスタンフォード大学のAndrew Ng教授が、「Machine Learning Yearning」というオンライン書籍を執筆中です。2018年4-5月に、そのドラフト版(1-35章)がオンラインで公開中です。この投稿では、いち早く翻訳を進めています。
この本は、機械学習プロジェクトの構築方法を提供します。また、機械学習アルゴリズムを教えるのではなく、機械学習アルゴリズムが機能する方法に焦点を当てています。
本投稿は、**31-32章(Learning curves)**の翻訳になります。少しづつ翻訳していきます。※翻訳違っていたらご指摘ください。
本書籍は、とても読みやすく、かつ各章短めに記載されています。
1~30章までの翻訳
31. Interpreting learning curves: Other cases(学習曲線の解釈:他のケース)
このプロットは、ハイバイアス?ハイバリアンス?もしくは両方?
青線(トレーニングセットのエラー曲線)は比較的低く、赤線(開発セットのエラー曲線)は青線よりも高くあります。したがって、バイアスは小さくバリアンスが大きいです。より多くのトレーニングデータを追加すると恐らく開発セットとトレーニングセット間のエラー数のギャップを埋めるのに役立つでしょう。
今回は、トレーニングセットのエラーは大きく、目標とするパフォーマンスレベルよりもはるかに高く位置します。開発セットのエラーはトレーニングセットのエラーよりも多いです。したがって、大きなバイアスとバリアンスが存在します。アルゴリズムのバイアスとバリアンス両方を減らす方法を探さないといけません。
32. Plotting learning curves(学習曲線を描く)
100サンプルの小さなトレーニングセットを保持しているとしましょう。10サンプルのサブセットをランダムに選択することによって、アルゴリズムをトレーニングします。次に20サンプル、30サンプル、100サンプルまで10件感覚でサンプルの数を増やします。次に10個のポイントを学習曲線にプロットします。小さなトレーニングセットのサイズでは、学習曲線は若干ノイズを含むように見えるかもしれません(値が予想よりも上下にプロットされることを意味します。)。
無作為に抽出された10件のサンプルだけをトレーニングするとき、多くの曖昧/誤ったラベルがついたサンプルなど、不運にも特に「悪い」トレーニングセットを持っているかもしれません。もしくは、運が良ければ、「良い」トレーニングセットを得ているかもしれません。小さなトレーニングセットを持つことは、開発セットとトレーニングセットのエラーがランダムに変動する可能性があることを意味します。
もし、機械学習アプリケーションが1つのクラスにひどく偏っている場合(EX:負のサンプルの割合が正よりもはるかに多いネコ分類器のタスク)、もしくは非常に多くのクラスが存在する場合(EX:100種の動物種の識別など)、特に「代表的でない」または悪いトレーニングセットを選択する機会が高くなります。例えば、サンプルの80%が負(y=0)のサンプルで、20%だけが正(y=1)のサンプルである場合、10件のトレーニングサンプルには、負のサンプルしか含まれない可能性があります。したがって、意味ある何かをアルゴリズムが学習することは非常に難しいです。
トレーニングセットの学習曲線のノイズが真のトレンドの把握を妨げる場合、次の2つの解決方法があります。
-
10サンプルで1つのモデルだけをトレーニングする代わりに、ランダムに選択されたトレーニングセット10サンプルを3~10パターン用意します。これはオリジナルの100サンプルからサンプリングします。それぞれのサブセットについて、異なるモデルをトレーニングし、得られたモデルのトレーニングセットと開発セットのエラーを計算します。トレーニングエラーの平均値と開発エラーの平均値を計算しプロットします。
-
トレーニングセットが1つのクラスに偏っている場合や、多くのクラスがある場合、100サンプルから無作為に10サンプルを取得する代わりに「バランスの取れた(balanced)」サブセットを選択します。例えば、10件中2件が正のサンプルであり、残りの8件が負のラベルであることを確かめます。より一般的には、各クラスのサンプルの割合が元のトレーニングセットの割合に限りなく近似していることを確かめます。
既に学習曲線をプロットを試みて、その学習曲線にノイズが多すぎているため根本的な傾向を把握することができないと結論付けていない限り、これらのテクニックで悩むことはないでしょう。また、もしトレーニングセットが大きく(10,000サンプルを超えている場合)、クラスの分布に偏りがない場合、これらのテクニックが必要ないでしょう。
最後に、学習曲線を描くことは、計算コストがかかる可能性があります。例えば、10個のモデルを1,000、2,000、10万のサンプルまでトレーニングしなくてはならない場合があります。小規模なデータセットでモデルをトレーニングすることは、大規模データセットでよりもはるかに高速です。したがって、上記のようにトレーニングセットのサイズを線形の間隔で均等に空けずに、1,000、2,000、4,000、6,000、10,000サンプルといったサイズでモデルをトレーニングすることができます。これは、学習曲線の傾向の明確な感覚を与えるはずです。もちろん、このテクニックは、トレーニングセットの計算コストが重要な場合のみ関係します。