データセットの分ける時の train, validation, trainval, test それぞれの意味

データセットの分け方 AI

概要

機械学習におけるモデルの開発を行う際に、基本的にデータセットをいくつかのグループに分割して検証を行います。

具体的には trainデータvalidationデータtestデータ という3つのグループに分けられることが多くあります。

また、扱うデータセットや検証の目的によっては trainvalデータ というグループを作ることもあります。

本記事では、上記のグループそれぞれについて解説を行います。

train, validation, test のそれぞれの意味と用途

一般的に、収集したデータセットは train, validation, test の3グループに分割されることが多いです。

trainデータ

trainデータはその名の通り、学習に用いるデータセットを指します。

よって、モデルの学習(重みの更新)はこのデータセットのみを基に行われます。

validationデータ

validationデータは、日本語で言うと検証データです。

検証データ、というと後述のテストデータと日本語的に区別がつきにくいですが、用途が異なります。

機械学習の枠組みでは ハイパーパラメータのチューニングEarly Stopping(学習の早期打ち切り) などを行う際に利用するデータとして利用されます。

モデルの精度を向上させたい、という目的は train データと同じですが、validationデータはこのように重みの更新以外の用途に利用されます。

testデータ

testデータはその名の通り、精度検証に用いるデータセットを指します。

testデータはvalidationデータと違い学習時には一切利用せずに、最終的なモデルの精度を測るためだけに使われます。

validationデータを精度を測るために使ってしまうと不当に高い精度が結果として得られてしまうケースが多くあります。

これはvalidationデータを基準にハイパーパラメータが設定されていたり、学習の打ち切りがされていることに起因します。

testデータは学習時には絶対に使われないため、これを用いることで学習したモデルに対してより正当な精度検証を行うことが可能です。

trainvalデータについて

扱うデータセットや対象とする問題設定によっては、前述の3つのデータセットの他にtrainvalデータセットが存在する場合があります。

例えば、PASCAL VOC という画像データセットを利用する場面です。

VOC2012データセットのドキュメント
http://host.robots.ox.ac.uk/pascal/VOC/voc2012/htmldoc/index.html

これを確認すると、train、val (validationのこと), test の他に trainval という項目があることが分かります。

この trainval は何を示しているかと言うと、単純に train と validation を合わせたデータセット、という意味になります。

せっかく train と validation に分けられているデータセットなのに、どうしてわざわざ合わせてしまうのか、と思う方がいるかもしれません。

データセットを合わせる理由はとてもシンプルで、モデルの学習(重みの更新)に利用するデータは多ければ多いほどよい結果が出る傾向にあるからです。 (あくまでも傾向です)

例えば、PASCAL VOC2012 の資料を確認するとデータセットに関する言及に以下の記載があります。

train: Training data
val: Validation data (suggested). The validation data may be used as additional training data (see below).
trainval: The union of train and val.

https://pjreddie.com/media/files/VOC2012_doc.pdf 2.1 Classification/Detection Image Sets

上記を読むと分かるように、validation data を検証用データとして利用するのはあくまでも提案に留めており、train data (学習用データ) として利用されることも想定されていることが分かります。

また、COCO (https://cocodataset.org) というデータセットを利用した検証をする際には、開発者が独自に validation data を再配分したデータ trainval35k というデータセットを train data として利用されることが多くあります。 ( 物体検知のサーベイ論文より https://arxiv.org/pdf/1907.09408v2.pdf )

用途は違えど validation data も train data もモデルの精度を上げる、という目的のもとで利用されるので、その分割方法などはモデルの開発者に一任される、と言い換えても良いかもしれません。

コメント

タイトルとURLをコピーしました