ari23の研究ノート

メーカ勤務エンジニアの技術ブログです

次元の呪いと組み合わせ爆発

機械学習でよく悩まされる次元の呪いと組み合わせ爆発を整理します🐜

次元の呪い

次元の呪いとは、ある系について機械学習モデルを構築するとき、精度向上のために特徴量(次元)の数を増やしすぎると、用意すべき学習データの数が指数関数的に増大してしまうことを指す。

具体例

グレースケールの3x3画像データを考えてみます。1画素が256階調1とすると、この画像データは 256^{3\times3}(=4,722,366,482,869,645,213,696) 通りあります。このサイズの画像データでさえ25桁のデータ量であり、どんなモデルでも数枚の画像では学習データとして全く足りないことがわかります。

しかも実際は、例えば4k画像でデータ収集すると、画素数で 3840\times2160=8,294,400 つまり約829万画素もあります。当然RGBカラーなので1画素に 256^{3} データもあり、計算せずとも天文学的な数値になってしまいます。

対策

画像データで次元の呪いを回避する手っ取り早い方法の1つとして、グレースケールの画像を使うがあります。RGBと比べると、情報は1/3に落ちてしまうのですが、人間の目で見て何が写っているのか認識できるので、”色”そのものが目的変数でなければグレースケールで十分です。

もう1つの方法として、縮小(圧縮)した画像を使うがあります。やりたいことを十分表現できる画像サイズを決めて、そのサイズに画像を縮小して使えば、次元の呪いを回避できます。

組み合わせ爆発

次元の呪いとは少し異なる組み合わせ爆発について、少し触れておきます。

組み合わせ爆発とは、ある系を解くときにその条件や場合の数が増えると、解くべき計算の組み合わせが爆発的に増大し、莫大な計算時間に発展してしまうことを指します。

具体例は有名な日本科学未来館の動画をご覧くださいw

終わりに

次元の呪いと組み合わせ爆発についてまとめました。

自分の中で組み合わせ爆発と混ざって使っていることもあったので、今回の整理ですっきりしました。

参考になれば幸いです(^^)

参考文献

  • 「第1章はじめに」に次元の説明があります。

  • 第2章1次元データに次元の説明があります。私は辞書的な使い方をしてます。

  • メディアラボ第11期展示「フカシギの数え方」 日本科学未来館
    上記の動画がアップロードされたときの展示内容があります。


  1.  2^{8} なので1バイト