ディープラーニングには多くの学習データが必要
機械学習の一部であると考えられるディープラーニングでは、
- 一定期間の系列データ
- 大量の画像データ
など、多くの学習データが必要とされるケースが少なくありません。
これらの学習データを用意する、という工程は、
- ディープラーニングのチュートリアルを終えて、自分で何かに応用できないか
- 作りたいプロダクトのためにディープラーニングの活用を考えている
などの場合には、なかなか悩ましいポイントになります。
用意したデータ数が少ないという場合は、ディープラーニングの学習が上手くいかないことがあります。
このような状況で、少ないデータ数を克服する方法が考えられてきました。
ここでは、
- データ収集
- データ拡張
- 学習済みモデルを活用
という方法を紹介します。
少ない学習データを乗り越える方法
データを収集
とてもストレートな解決策ですが、データを集め、学習可能なデータ数を増やすという方法が考えられます。
自らデータを増やすという力技に加え、
などの、データ提供サービスを活用する方法があります。
自ら用意した学習データについて、データを増やす時に、上記サービスが使用できないか検討することができます。
また、公開されているデータ群から、ディープラーニングの学習に使用できるものがないか確認する方法もお勧めです。
- 農業
- 生物
- 天候 / 天気
- 地球科学
- 経済
など多岐にわたる領域のデータがリスト化されています。
以上のように、
- 自分(自らのプロジェクト)でデータを増やす
- データ提供サービスを活用する
- 公開されているデータを利用する
という手段で、学習データの少なさを克服できる可能性があります。
データ拡張
データ拡張とは、すでに用意してある学習用データから、追加の学習用データを作り出すことです。データの水増し、と言われることもあります。
画像処理や自然言語処理などでデータ拡張は使用されています。
画像処理では、学習データである画像について
- 回転
- 切り抜き
- 左右反転
- 明るさの変化
- コントラストの変化
などをさせることで、新しい画像を生成し、追加の学習データとします。
データ拡張用のPythonのライブラリAugmentorが公開されています。
自然言語処理では、
- 単語を類義語で置換
- 文中の単語同士の入れ替え
- 文中の単語の削除
などで、学習データ数を増やす方法があります。
自然言語処理のデータ拡張については、
Data Augmentation in NLP: Best Practices From a Kaggle Masterを参考にできます。
データ拡張の手法は色々と研究されています。
Data augmentationが、データ拡張の概要を知るのに参考になると思います。
データ拡張も、少ない学習データでのディープラーニングを乗り越えるヒントになりえます。
学習済みのモデルを活用する
学習済みのモデルを活用する、という方法はディープラーニングで広く知られています。
大規模なデータや特定のデータを使って学習されたディープラーニングのモデルには、公開されているものがあります。
それらの学習済みモデルを活用して、転移学習やファインチューニングといった手法を用いることで、少ない学習データでのディープラーニングが実現する可能性があります。
学習済みモデルの活用については、
転移学習とは?ディープラーニングで期待の「転移学習」はどうやる?
が参考になります。
転移学習やファインチューニングが活用された例としては、
などがあります。
また、TensorFlowが転移学習やファインチューニングのチュートリアルを公開しています。
学習済みモデルは、様々なWebサイトから探すことができます。
は、それぞれPythonのライブラリであるTensorFlowとPyTorchの学習済みモデルを探すのに便利です。
Model Zooでは、ディープラーニングの様々な学習済みモデルを見つけることができます。
産総研人工知能研究センターは、
- 動画認識
- 自然言語処理
の学習済みモデルを公開しています。
公開されている学習済みモデルを、自分のディープラーニングの課題に活用できるかもしれません。
学習データ数とディープラーニング
ここまで紹介したように、少ないデータでのディープラーニング学習の困難を解消するために、
- データ収集
- データ拡張
- 学習済みのモデルの活用
といった対策が考えられています。
少ない学習データでのディープラーニングへの取り組みは、
などと関連していろいろな解決策が模索されています。
自分で取り組みたいと思ったディープラーニングの課題について、学習データが少量しか用意できない場合でも、諦めるのは早いかもしれません。
データ拡張や学習済みモデルの活用を考えてみるのも良いのではないでしょうか。
コメント