検証データValidation Set

学習に使わず点検にだけ使う取り分けたデータ

ポイント
  • 検証データは学習には一度も使わず、点検にだけ使うデータです。持っているデータの一部を最初から取り分けておきます。
  • 学習が進むあいだ、このデータで点数をつけていつ止めるか、設定をどう変えるかを決めます。
  • 訓練の点数は上がり続けるのに検証の点数が下がり始めたら、データを覚え始めた合図です。
  • 検証の点数を見ながら設定を何十回も直すと、検証データにもだんだん合わせ込まれます。そのため最後にただ一度だけ取り出すテストデータを別に残しておきます。
  • 取り分けるときは偏りなく選ぶ必要があり、同じ内容が両方に重なって入ると点数が水増しされます。
目次

1たとえで理解する

色あせたフィルム写真を100枚よみがえらせるとします。何枚かを前に置いて、色を上げたり下げたりしながら補正の値を決めていきます。手を加えて調整したその写真は当然きれいに仕上がります。きれいになるよう作ったのですから。そこで最初に何枚かをまるごと取り分けておきます。手を加えず引き出しにしまっておき、値がだいたい決まったころに取り出して、そのまま適用してみます。ここで色がずれていれば、値がまだ十分でないということです。**手を加えた写真がきれいなのは実力ではありません。**値を決めるのに使う写真と、確認用に取り分けておく写真は、始める前に分けておく必要があります。AIを学習させるとき、こうして引き出しにしまっておく分が検証データです。

2くわしく

学ぶデータと点検するデータを最初から分けます

持っているデータをまるごと学習に入れて、そのデータで点数をつけると、点数は常に良く出ます。うまくいくよう合わせたものを、また採点しているだけだからです。そこでデータを集めたら、学習を始める前にひとかたまりを取り分けて別にしまっておきます。割合はだいたい10のうち1ほどで、データがとても多ければそれより少なく取り分けることもあります。

取り分けたデータは、モデルの値を直すのには一度も使いません。ただ採点にだけ使います。そうしてこそ点数が、初めて見るものを前にしたときの実力を示します。検証用のデータを学習に一度でも流し込むと、その瞬間から点数は実力ではなく記憶を測るものになってしまいます。

検証の点数が代わりに下す決定

学習は1周するたびに少しずつ良くなっていきます。1周終えるたびに検証データで採点して点数を記録しておくと、その点数の流れがさまざまな決定を代わりに下してくれます。もっともよくある決定は止めどきです。検証の点数が何周も足踏みしたり、逆に悪くなり始めたら、その場で学習を打ち切ります。

層をいくつ積むか、学習率をいくつにするか、ドロップアウトをどれくらいかけるかといった値も検証の点数で選びます。こうした値はモデルが自分で学ぶ値ではなく人があらかじめ決めておく値なので、候補をいくつも作って動かしてみて、検証の点数が一番良いものを残すという方法で選ぶことになります。

検証データにも合わせ込まれてしまうことがあります

引き出しから同じ写真を100回取り出して値を直していると、その数枚だけにぴったり合う値になってしまうこともあります。検証データも同じです。同じデータで点数をつけながら設定を何十回、何百回と直していると、モデルではなく作る人のほうがそのデータに合わせ込まれていきます。検証の点数は上がり続けるのに、いざ新しいデータではそれほど出ないという事態が起こります。

そこでデータを三つに分けるやり方が定着しました。学ぶ分、学習中に点検する分、そしてすべての決定が終わったあとにただ一度だけ取り出す分です。最後の分で測った点数だけが、誰も合わせ込んでいない点数です。

取り分け方が点数を変えます

前から順番に切り出すのは危険です。データが日付順や種類順に並んでいると、検証用の分に特定の時期や特定の種類だけが集中することがあります。そこで普通はよく混ぜてから無作為に取り分け、種類ごとの比率まで元と同じになるよう取り分けることもあります。

同じ内容が両方に重なって入ってしまうこともよく起こります。同じ文書を二つの場所から受け取っていたり、写真1枚を少しずつ変えて何枚にも増やしていたりすると、学習に使ったものとほぼ同じものが検証用に紛れ込みます。そうなると点数は実際よりずっと高く出てしまいます。時間の経過があるデータなら、検証用の分を後ろの期間から取り分けるほうが実際の状況に近づきます。

データが少ないとき

持っているデータが数百件しかなければ、10のうち1を取り分けるだけでもったいなく、その少ない分で出した点数はどのデータに当たったかで大きく揺れます。こうしたときは一つの分を固定する代わりに、データを複数に分けて順番に検証し、点数を平均します。交差検証と呼ばれる方法です。データを無駄にせずに点数の揺れを減らせます。

3もう少し正確に

検証データは、モデルのパラメータを更新するのには使われず、ハイパーパラメータの選択と学習を止める時点の決定にだけ使われるデータのまとまりです。学習に使う訓練データ、途中の点検用の検証データ、最終報告用のテストデータの三つに分けるのが基本の形です。英語圏の論文では検証データをdev setと呼ぶこともあり、分野によっては検証とテストという言葉が逆の意味で使われる場合もあるので、どちらの分を指しているか確認したほうがよいでしょう。

たとえがずれる点もあります。写真の補正は人が目で見てどこがずれているかを指摘できますが、検証データが返してくれるのは点数一つだけなので、何を直すべきかまでは教えてくれません。また引き出しの写真は一度取り出して見れば終わりですが、検証データは学習が回っているあいだずっと同じ分を何十回も採点し直します。繰り返し使う分だけ、その分に合わせ込まれる危険も一緒に積み重なる点が、写真の補正と違うところです。

4やってみる

5よくある誤解

  • 検証データも結局は学習の役に立つのだから入れてもよいと考えがちですが、実際には一度でも入れた瞬間、そのデータで測った点数は実力ではなく記憶を測る数字になります。

  • 検証の点数が高ければ実際にも優れていると思われがちですが、実際には同じ分を見ながら設定を長く直していれば、その点数も水増しされています。

  • 検証データは多いほどよいと信じられがちですが、実際には取り分けた分だけ学ぶデータが減るので、ちょうどよい線で釣り合いを取る必要があります。

7ひとこと要約

つまり検証データは始める前に引き出しへしまっておいた分で、手を加えていないからこそ、その点数だけがいつ止めるかを教えてくれます。

誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新2026-09-02