1. バイアスとバリアンス
どうもNegimaruです。今回はバイアスとバリアンスについてまとめます。具体的には、次の3つについて書きます。複雑な数式は使わず、言葉による説明での直感的な理解を目指します。
- バイアスとバリアンスとは何か
- バイアスとバリアンスの測り方
- バイアスとバリアンスの視点から考える機械学習の基本的な流れ
2. バイアスとバリアンスとは
まずは、バイアスとバリアンスとはそもそも何かを説明します。バイアスとは、モデルの予測と学習データのずれの大きさのことです。つまり、バイアスが「大きい」というのはモデルが十分に訓練されておらず学習データに対して良い予測ができないことを表し、バイアスが「小さい」というのはモデルが学習データに対して良い予測ができることを表します。一方、バリアンスとはモデルの予測の分散、つまりモデルの複雑さの度合いのことです。したがって、バリアンスが「大きい」とはモデルが複雑であることを表し、バリアンスが「小さい」とはモデルが単純であることを表します。一般に、バイアスもバリアンスも小さくすることが望ましいです。バイアスが小さいことは訓練データによくフィットしていることを表し、バリアンスが小さいことはモデルの予測の分散が小さく未知のデータによくフィットする可能性が高いことを表すからです。(モデルの予測の分散が小さいということは、学習データのノイズをモデルが学習していないことを表し、未知のデータも正しく予測できることが期待できます)。
3. バイアスとバリアンスの測り方
あるモデルのバイアスとバリアンスの大小は、訓練データに対するそのモデルの性能と、検証データに対するそのモデルの性能から分かります。二値分類モデルを例に説明します。今、ベイズエラーは0に近いとします。(つまり、理想的な分類器は100%に近い精度で分類できるとします)。このとき、訓練データに対するエラー率(train set error)と検証データに対するエラー率(dev set error)の値によって次の4つに分類できます。数字は厳密ではないです。雰囲気が伝わればと思います。
- train set error = 1%、dev set error = 11%のとき
訓練データによくフィットしているが、検証データにあまりフィットしていない。つまり、バイアスが小さく、バリアンスが大きいといえる。この状態のことを過学習という。 - train set error = 15%、dev set error = 16%のとき
訓練データにあまりフィットできていない。検証データにもフィットできていないが、これは、バリアンスが大きいからではなくモデルが訓練集合にすらフィットできていないことからくると考えられる。よって、バイアスが大きく、バリアンスが小さい状態であるといえる。この状態のことを学習不足という。 - train set error = 15%、dev set error = 30%のとき
訓練データをあまり再現できておらず、検証データはそれよりさらに再現できていない。これは、バイアスが大きく、バリアンスも大きい状態である。基本的には線形に近いモデルが、訓練データの一部に過剰にフィットしてしまったときなどに起こる。 - train set error = 0.5%、dev set error = 1%のとき
訓練データも検証データもよく再現できている理想的な状態。つまり、バイアスが小さく、バリアンスも小さい状態である。
(注)古典的機械学習では、バイアスとバリアンスは一般的にトレードオフの関係にあります。しかし、ニューラルネットワークの文脈では、このトレードオフ関係が議論されることはあまりないようです。
4. バイアスとバリアンスの視点から考える機械学習の基本的な流れ
それでは上記を踏まえて、機械学習をどのような流れで行えばよいかを説明します。学習の基本的な流れは次のような図で表せます。
ポイントは次の3つです。
- バイアスから小さくすること。まず、訓練データに適合したモデルが手に入らないと始まらない。
- バイアスを小さくする主な方法はニューラルネットワークを大きくすることと、より長く学習すること。ニューラルネットワークを大きくして複雑なモデルにすればモデルの表現力が上がって訓練集合により適合させることができる。また、単純に訓練時間が足りなくてモデルが適合していない場合は訓練時間を伸ばすことが有効。
- バリアンスを小さくする主な方法は、訓練データを増やすことと正則化を強めること。訓練データを増やせば特定のデータへの過剰なフィットは避けれる可能性がある。また、正則化でモデルの表現力を弱めれば過学習を防げる。正則化の方法としては、L2正則化やドロップアウトなどが挙げられる。