Deep Learningの精度を決めるのは、結局のところデータ数のようです。
近年、AIが注目を浴びた大きな要因は、インターネットを用いて大量のデータを集められるようになったからだ、と言われます。
もちろん、Deep Learningの様々なモデルや技術が研究・開発された結果、より高い汎化性能を獲得できるようになった要因はあると思われますが、むしろ近年のPCの発展、特にGPUの活躍により、計算速度が極めて早くなり、少々力業なニューラルネットワークが実装できるようになった結果、ネットワークの階層を深く出来るようになった事の方が、モデルの工夫や新しい活性化関数、アップデート関数の採用よりも大きく寄与しているのだと思います。
と言いますのも。幾つかディープラーニングのモデル、特にCNNを試してみましたが、データ数が少なければ、やはりいくらモデルを工夫したとしても、さほど変化は得られないなという実感を、最近抱いているわけです。そんなことは百も承知で、それでもAIを用いたい課題は存在して、それに対して用意できるデータ数が限られている場面も多く存在し、今ある材料で何とかよい精度を得るために、モデルや学習方法を工夫する訳ではあります。しかしながらその労力に見合うだけの結果を得る事は、なかなかに難しいようです。ディープラーニングを試してみたけど、まだまだだなという感想を持つ人の多くは、このような状況で諦めているのではと思います。世の中にはインターネットで集められないデータを用いたい状況も数多く存在し、そのような課題に対してはまだまだディープラーニングが上手く機能しない状況があるにも関わらず、上司からAIの活用を義務付けられ、板挟みに合っているエンジニアもさぞ多いだろうなと想像します。
AIが従来のプログラムと異なる優れた点(または、AIに期待する点)は、汎化性能であると思われます。コンピュータにおけるデータ処理は多くの事はプログラムでき、その大半はエクセルマクロのような、小規模のプログラムでも対応できます。VBAは使ってみると大変使い勝手がよく、マクロの記録機能も大変便利で、私のような素人さんでも結構なレベルで使いこなす事ができます。しかしながら課題に対して、その都度プログラムを作成する必要があるので、言ってみれば解決できる課題は一つだけです。人間は様々な課題に対して柔軟に、個別に対応する事ができるため、人工”知能”に求められるものはそのような対応力、汎化的な能力とも言えます。果たして現在のディープラーニングの技術はそういったものになっているでしょうか。出来る事は極めて大量のデータを用意して学習し、新しいデータの結果を予測する、というただ一つの事です。これは従来の解析手法の一つであった”外挿”と、大して変わらないかもしれません。実際使っていると、これはディープラーニングが解くべき課題ではないのに、”とりあえずディープラーニングでやってみました!”的な報告に出くわす事が良くあります。ディープラーニングが活躍できる問題と、従来の手法で解くべき問題は良く考えた方が良さそうです。
今現在、私はディープラーニングが解くべき問題と従来の手法で解くべき問題の境目は、結果に厳密性を求めるか否かのところにあって、判断を求める場合は前者、厳密さを求める場合は後者にあるのではと思っています。ディープラーニングが割り出す答えはあくまで判断材料であり(悪く言えば偽物であり)、結論を一旦保留して、最終的には人間が判断をするための材料として用いるのであれば大いに活用できるけれども、その結果を丸々信じなくてはならないような課題にはやはり使えないのではと思います。出てきた答えは偽物ですから。いくら本物のように見えても。
そのあたりを混同しないように、今後もディープラーニングを楽しんでいこうと思います。データが少なくても高い汎化性能が得られるモデルを開発したいですね。今のところアーギュメンテーション工夫するくらいしかアイデアはありませんが。