概要
モデル平均に対して適当考察をし、簡単な実験をしました。
背景
最近はエキスパート問題や、boostingと言われる手法について勉強しています。これは、ざっくり言えば複数人から誰を信頼すべきかみたいな問題なのですが、最近これって機械学習のアンサンブル的なアレ(語彙力)なのかな〜みたいなことを適当に考えていました。ただ、今までアンサンブルに関して疑問を持っており、それを示すために簡単な実験をしてみることにしました。正直自明な実験ではありますがまあよいでしょう。
疑問
アンサンブルに関して持っている疑問とは、単なる重み付き平均が果たして有意義なものなのかどうかは自明ではないということです。3人よれば文殊の知恵とは言いますが、3人共あまりよくわかっていない(精度がでていない)問題に対して、多数決を取ったところで性能は上がらないと思うわけです。それよりは、それぞれが特定のトピックに対して理解して、サポートし合うほうが有意義ではないでしょうか。
実験
- データが[-1, 1]×[-1, 1]の2次元が一様にサンプリングされるとします。それに対して、x軸、y軸、y=x、y=-xで区切ってやり、8つの領域を作成します。便宜的に、45度ごとに領域0, 1 ,..., 7として、それぞれが得意な予測器も0, 1 ,..., 7とします。
- 正解ラベルとして、長さ8の配列を考えます。領域iのデータに対しては、要素iに対して80%で1、それ以外に対しては50%で1とします。
- DNNで、各データに対して、どの予測器を信頼すべきかを学習させます。出力は確率で、損失関数として正解ラベルとの内積(最小化問題なので×-1)を採用します。こうすれば、各学習器の重み×正解率を最適化するため、領域iのデータに対して要素i(分類器i)を信頼するはずです。
コードはこちらです。
結果
結果として、うまく学習できていそうです。45度ごとに領域0, 1 ,..., 7となるわけですが、領域4に対しては予測器4が重み1で信頼されています。
考察
今回の場合、単一の予測器を全体に対して適応すると、正解率は53.75%になります。また、多数決をとっても、1つの予測器以外は50%でしか当たらないので、それほど正解率は上がりません。ただ、実際にはアンサンブルといって多数決を取っているだけでもうまくいっている例はよく見る気がします。これに対する一つの考察として、多くの予測器は一部にだけ苦手な領域ができるというのがあると思います。そのようであれば、多数決をとることでその領域を補い合えますし、一部なので広いデータ領域でそれがかぶることはそれほどないだろうと考えられます。その場合、それぞれがある程度予測できないと結局はほとんどの領域で意味のない予測をするようになると思います。
また、今回の場合、データは領域に対して密に集まっていますが、次元に応じてデータ空間を密に埋めるために必要なデータ量は次元数乗で大きくなるため、今回の実験の結果が適用できるか怪しいことも考慮すべきだと思います。
ちなみに、実際のboostingはデータに対する重み付けを変更するという手法が取られているようなので、今回とはあまり関係ないようです。残念。
追記
今回のアンサンブルのように、アルゴリズムをまとめるメタアルゴリズムに関する研究ってどのくらいなされているんでしょう?