読者です 読者をやめる 読者になる 読者になる

kivantium活動日記

プログラムを使っていろいろやります

友利奈緒判定botを通じて考えたこと

※この記事は技術的な内容をほとんど含まない、いわゆるポエムです

たくさんの人が友利奈緒判定botにいろんな画像を投げてくれていますが、その中でも特に考えさせられたのが次に挙げた4つの画像です。

友利奈緒の胸のみをアップした画像

友利奈緒という文字の画像

佐倉綾音さん(友利奈緒の声優)の画像

透明化した友利奈緒


現状の機械学習について

自分が理解している範囲で現状の機械学習、特に画像認識がどうなっているかをまとめます。


画像に対して機械学習を行う際には、画像の特徴を表す特徴量を画像から計算し、計算した値について処理を行うことが一般的です。特徴量の取り方としてはSIFT, SURF, HOGなどがあります。また、Convolutional Neural Networkでは前回の記事で見たようにネットワークの構造自体が特徴量を計算する過程になっていると解釈することができます。


これを数学的に(というと怖い人に怒られそうですが)解釈してみます。画像はピクセル数次元の空間上の1点として見ることができます。32x32ピクセルのRGB画像だとすれば、32x32x3次元空間上の1点と解釈されます。「友利奈緒」のような同じ属性を持った画像は、そのデータ空間の中でもある限られた領域に集まっていると考えることができます。その集まっている領域を見分けられる境界の式を決定することが出来れば分類はデータを入力とする関数として行えるようになるのです。


ここで問題になるのが次元の呪いと呼ばれる現象です。x軸上に存在する複数の点を2つに分けるには、どこで分けるかを指定する座標の値を一つ指定するだけで済みます。しかし、点がxy平面上に存在する場合を考えてみると、直線で分ける場合は傾きと切片の2つのパラメータが、曲線で分ける場合には2つよりも多いパラメータを指定する必要があります。次元が3次元・4次元……と増えていくと、識別境界を指定するパラメータは膨大な数になります。このように、多次元空間での識別を考えると計算量が膨大になる・パラメータが増えすぎてデータ量が不十分になるなどの困難が生じます。そこで、データ同士の関係性をなるべく保ったまま低次元空間にデータを射影し、その低次元空間で分類を行うのが良いという発想が自然に出てきます。


この低次元空間への写像が特徴抽出であると私は理解しています。HOGなどの画像用特徴量は画像に特有の性質を考慮した上での射影と呼べますし、CNNによって作られた全結合層に入る前の値も射影であると考えることができます。主成分分析はまさに低次元空間への写像の手法であり、AutoEncoderやRBMもデータの性質を元に低次元への射影を求める手法だと位置づけることができます。

カーネルトリックのような逆に高次元への射影を考えることで分類を行う手法もありますが、これも写像を行うことでデータ空間上の分布の偏りがはっきりすることを仮定していると感じます。


機械学習、とくにクラス分類の問題はデータ空間上での各クラスに属するデータの偏りを求めることが出来れば完全に可能であるという信念に基づいて研究が進んでいるというのが今まで機械学習を学んできて感じたことです。

データを見ればそれでいいのか

ここで冒頭に上げた4つの画像を考えてみます。これらはいずれも問題が想定している「友利奈緒の正面顔を人間が同一人物であると認識できる範囲で変形させた画像」のクラスとはかけ離れた画像になっています。しかし、人間がこれらの画像を見て受け取る印象は全て「友利奈緒である」というものです(佐倉綾音さんの画像については議論の余地があるかもしれませんが)。


この画像群が同じ意味を持つということは背景知識を持つ人間であればそれなりに理解できることではありますが、データ空間での分布を見るだけの機械学習の手法では絶対に同じものだと認識することができません。「友利奈緒」という漢字の画像や、透明化している友利奈緒の画像を大量に与えればそのうち解けるようになるのかもしれませんが、それは本質的な問題ではありません。「ともりなお」というひらがなの画像が来たら?友利奈緒が髪の毛を染めているシーンの画像だったら?人間が文脈を知った上であれば同一であると理解できる画像であっても、機械学習器が同一であると理解するためには認識対象と似た画像が既に学習済みデータとして存在することが必要となります。


人間と同じレベルの分類性能を実現したいのであれば、機械学習器は人間がその画像から感じる意味を理解できるようにならなければなりません。この場合であれば音声データを含めてCharlotte全話を見る・Wikipediaを読んで友利奈緒の声優が佐倉綾音であると知る、などといった背景知識をインプットする段階を踏んだ上で、画像から「意味空間」に写像して識別を行う関数を設計するしかないのです。現状のデータだけを見て分類を達成しようとする方法を続ける限り、冒頭の画像を認識できる日は来ないでしょう。


問題は、人間が画像を見て認識する「意味」とは何だろうというところにあります。これに関しては私は何のアイデアも持っていません。あるのは今のままではダメだという危機感だけです。

Deep Learningに対する疑念

ニューラルネットワークは隠れ層を増やすことであらゆる関数を無限の精度で近似することができます。誤差逆伝播がうまく行えるようなネットワークを設計できさえすればデータ空間上で分離しているデータの境界を求めることができるのは当然といえば当然です。


しかし、Deep Learningは関数近似のために大量のパラメータを持つので、パラメータ決定のために大量の教師データが必要となります。Googleが猫を認識したという有名な事例では1000万枚の画像を使ったそうです。しかし、人間が猫を認識するときに一体何枚の画像が必要でしょうか?普通1枚、多くても2, 3枚の画像があれば十分猫という動物の特徴をつかむことができ、街で歩いている動物が猫であることを理解できるはずです。未知の動物の写真であっても枚数はそう大きく変わらないはずです。泥棒をつかまえるのに100枚の画像がないと認識できない警察官を誰が頼りたがるでしょうか?非常に少ないデータ数でも正しく認識できるようにならなければ人間並みとは到底主張することができないでしょう。理想的な画像認識器は、少ないデータを与えるだけで無限に分類対象のクラスを追加できるアルゴリズムでなければならないと感じます。


人間は今まで生きてきた中で獲得した物体に関する知識を流用することで新しい物体に関してもすぐに識別能力を獲得します。これはDeep Learningでいうpre-trainedモデルのfine-tuningに相当するかもしれません。うまいこと工夫して、既に獲得した知識を新しい知識の吸収に活用できるようにならないといけません。

まとめ

  • 現状の機械学習はデータがデータ空間上で分かれて分布していることを前提とし、その分類境界を求めている
  • データの分布だけを見るのではなく、データが持つ人間にとっての「意味」で分類を行うようにしなければならない
  • その方法は全く思いついていない
  • 人間は新しいモノを認識するのに大量のデータを必要としないが、Deep Learningは大量のデータを必要とするのでよくない
  • 人間のように既に獲得している世界についての情報を活用することができれば、必要なデータ量を減らせるかもしれない
  • このままDeep Learningを進めても多分どうにもならない。何かしらの根本的に新しい方法を考えないといけないだろう

お願い

この記事は友利奈緒判定botに投げられた変な画像を見て、特に調査もせずに書いた文章です。事実誤認があればコメントなどで全力でぶん殴ってくれると嬉しいです。