データ拡張とは
Data Augmentation
既存の学習データへ変換を加えて多様性を増やし、モデルの汎化性能を高める技術
ひとことで言うと
手持ちの学習データを回転させたり言い換えたりして「水増し」し、AIが応用を利かせられるようにする技術。
概要
データ拡張とは、既存の学習データへ変換を加えて訓練サンプルの多様性を増やし、モデルの汎化性能を高める技術を指す。 画像では回転・反転・切り抜き・色調変更、音声では速度変更やノイズ付加、テキストでは言い換えや逆翻訳などが使われる。 ラベル付きデータが限られる状況で過学習を抑える基本的な手段であり、対照学習では正例ペアを作る中核的な役割も担う。 LLMの時代には、モデル自身に学習データを生成させる合成データがデータ拡張の発展形として広く使われている。
歴史
画像分類の分野では、2012年のAlexNetの論文(Krizhevskyら)が、切り抜きや左右反転などの変換を過学習抑制の手段として使用したことで広く知られるようになった。
コード例
torchvisionによる画像のデータ拡張
import torchvision.transforms as transforms
transform = transforms.Compose([
transforms.RandomHorizontalFlip(),
transforms.RandomRotation(15),
transforms.ColorJitter(brightness=0.2, contrast=0.2),
transforms.ToTensor(),
])利点
- 追加のデータ収集コストをかけずに、訓練サンプルの多様性を増やせる
- 過学習を抑え、モデルの汎化性能を高められる
- ドメインに応じた変換(画像の回転、テキストの言い換えなど)を柔軟に設計できる
欠点
- 過度な変換はデータの意味やラベルとの整合性を崩す場合がある
- どの変換が有効かはタスクやドメインに依存し、試行錯誤が必要になる
- 拡張後のデータ分布が実データの分布から乖離すると、かえって性能を下げることがある
関連用語
よくある質問
データ拡張と合成データの違いは何か。
データ拡張は既存の実データへ変換を加えて多様性を増やす手法であるのに対し、合成データはモデルなどを使って新たにデータそのものを生成する手法を指す。両者は組み合わせて使われることも多い。
テキストデータでもデータ拡張は使えるか。
使える。言い換え(パラフレーズ)、逆翻訳、同義語置換などの手法があるが、画像に比べると意味を保ったまま変換する難度が高い。