トレーニングセットのみのデータ拡張?


9

データ拡張をトレーニングセットのみに適用するのか、トレーニングとテストセットの両方に適用するのが一般的な方法ですか?


最近、テスト時間の増加がかなり一般的だと思いました。Iここに2012年論文ではそれについての最初の読み取り:papers.nips.cc/paper/...
ライアン・チャン

回答:


12

拡張の概念、つまり、何らかの理由でデータセットを大きくすることに関しては、トレーニングセットのみを拡張する傾向があります。検証セットに対するさまざまな拡張アプローチの結果を評価します。

ただし、@ŁukaszGradが指摘しているように、トレーニングセットで行ったのと同様の手順をテストセットに対して実行する必要がある場合があります。これは通常、テストセットからの入力データがトレーニングセットのデータに可能な限り類似するようにするためです。たとえば、@ŁukaszGradは、画像トリミングの例を示しています。ここでは、テスト画像もトリミングする必要があるため、トレーニング画像と同じサイズです。ただし、トレーニング画像の場合、各トレーニング画像を複数回使用して、クロップを異なる場所/オフセットに配置することがあります。テスト時には、単一の中心のクロップを行うか、ランダムなクロップを行って平均を取る可能性があります。

テストデータに対して拡張手順を実行することは、テストデータをより大きく/より正確にすることではなく、テストセットからの入力データをトレーニングセットからの入力データに類似させることで、同じネットにフィードできるようにします(例えば同じ寸法)。補強手順を適用することで、テストセットが何らかの点で「より良い」とは決して考えません。少なくとも、それは私が今まで見たものではありません。

一方、トレーニングセットの場合、補強のポイントは、トレーニング中の過剰適合を減らすことです。そして、訓練されたモデルを多かれ少なかれ固定されたテスト/検証セットに対して実行することにより、拡張の品質を評価します。


2

通常、畳み込みニューラルネットワークをトレーニングするためのデータ拡張は、トレーニングセットに対してのみ行われます。テストデータの値は主にモデルの選択と評価のためであり、これらの量の測定にノイズを追加しているため、テストデータを増強することでどのようなメリットが得られるかわかりません。


1
私は同意します。最も紙imagenetデータセットの列を使用して増強の形でランダムクロッピングとのそれらの分類器、テスト
ルカシュグラを

私は確かに間違っている可能性があります、参照を提供してもらえますか?迅速なAlexNetのようないくつかの論文のサンプルnvidia.cn/content/tesla/pdf/machine-learning/...、Resnet arxiv.org/pdf/1512.03385.pdf、およびYOLO9000 arxiv.org/pdf/1612.08242.pdf、それはのように思えますこれらはどれも(私が知る限り)テストセットで拡張を行いません。
MachineEpsilon 2017

3
ある意味であなたはどちらも正しいと思います。ネットがランダムクロップでトレーニングされている場合、テスト画像もクロップされる傾向があります。しかし、それらはランダムな作物ではないかもしれません:それらはセンター作物かもしれません。しかしいつもではない。テストセット内の入力データの分布がトレーニングセットの分布とある程度一致するように、これがテストセット自体の「拡張」であるかどうかは本当にわかりません。しかし、それは実際にはセマンティクスです。技術的な観点から、テストセットでドロップアウトが機能するのと同じように、テストセットに何かをする必要があるかもしれません。
ヒューパーキンス2017

1
はい、それは理にかなっています。トリミングは、入力レイヤーのサイズを変更することでモデルアーキテクチャに影響を与え、他の拡張変換(ノイズ、反射、ぼかしの追加など)は影響を及ぼさないため、私が見た限りでは特別なケースです。
MachineEpsilon 2017

1
ここ@Machineepsilon表4、Iは、開始のパプから見つけることができる最初の例である:arxiv.org/pdf/1512.00567.pdf
ルカシュグラ

0

回答を補足して、テスト時のデータ拡張に関する2セントを追加します。

データの拡張は、分散を減らすことを目的として、テスト時に実行することもできます。これは、入力画像の修正バージョンの予測の平均を取ることで実行できます。

データセットの拡張は、トレーニングセットのみを前処理する方法と見なすことができます。データセット拡張は、ほとんどのコンピュータービジョンモデルの一般化エラーを削減する優れた方法です。テスト時に適用できる関連アイデアは、同じ入力の多くの異なるバージョン(たとえば、同じ画像がわずかに異なる場所でトリミングされている)をモデルに表示し、モデル投票の異なるインスタンス化を行って出力を決定することです。この後者のアイデアは、アンサンブルアプローチとして解釈でき、汎化エラーを減らすのに役立ちます。(ディープラーニングブック、第12章)。

テスト時の拡張を適用することは非常に一般的な方法です。AlexNetとResNetは、10クロップテクニック(元の画像の四隅と中央からパッチを取り、それらをミラーリングする)でそれを行います。Inceptionはさらに進んで、10だけではなく144のパッチを生成します。Kaggleや他のコンテストをチェックすると、ほとんどの勝者もテスト時の拡張を適用します。

私は、皮膚病変分類(低データタスク)のためにトレーニングを行ってテストを行い、データの増大コードに関する論文の著者です。場合によっては、トレーニングのみで強力なデータ拡張を使用する方が、データ拡張を使用しない場合よりもわずかに優れていますが、トレーニングおよびテスト拡張を使用すると、モデルのパフォーマンスが大幅に向上します。


ここで1つのことをしたいだけです。データセット全体に5つの異なる角度の回転とランダムなトリミングを適用し、トレーニングテストと検証に分割した場合。データセットの評価が完全に間違っているでしょうか?
Aadnan Farooq A

@AadnanFarooqAはい、検証セットが汚染されます。
ファビオ・ペレス

だから、何が最良のデータ配置になります。トレーニングデータのデータ拡張。元のデータとして残っている検証とテスト。もしそうなら..訓練データはデータの拡張が10000枚の画像となり、検証とテストはそれぞれ500枚の画像になるとしましょうか?
Aadnan Farooq A 19/06/15
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.