데이터 세트 증대: 인공 데이터 생성 [간단히 설명]
게시 됨: 2020-12-07목차
소개
기계 학습 알고리즘을 설계하는 동안 항상 최적화 와 일반화 간의 균형을 유지해야 합니다 . 이 단어는 초보자에게는 너무 복잡해 보일 수 있지만 기계 학습을 마스터하기 위한 여정의 초기 단계에서 이들 단어의 차이점을 아는 것은 모델이 특정 방식으로 작동하는 이유에 대한 기본 작동을 이해하는 데 확실히 도움이 될 것입니다.
최적화 측면은 훈련 데이터에 대한 성능이 최고가 되도록 모델을 조정하는 것을 말합니다. 반면에 일반화는 이전에 본 적이 없는 데이터, 즉 유효성 검사 세트에 대한 학습 모델의 성능과 관련이 있습니다.
훈련 데이터에 대한 특정 에포크 수 이후에 모델의 일반화가 더 이상 개선되지 않고 검증 메트릭이 저하되기 시작하는 경우가 종종 있습니다. 이는 모델이 과적합 되었다고 말하는 경우입니다 . 훈련 데이터이지만 새로운 데이터와의 상관 관계에는 유용하지 않습니다.
과적합 문제를 해결하기 위한 최상의 솔루션은 더 많은 훈련 데이터를 수집하는 것입니다. 모델에서 본 데이터가 많을수록 새 데이터의 표현도 학습할 확률이 높아집니다. 그러나 더 많은 훈련 데이터를 수집하는 것은 해결해야 하는 마스터 문제를 해결하는 것보다 비용이 더 많이 들 수 있습니다. 이 제한을 피하기 위해 가짜 데이터를 만들어 훈련 세트에 추가할 수 있습니다. 이를 데이터 증강이라고 합니다.
심층 데이터 증강
이미지에서 시각적 표현을 학습한다는 전제는 많은 컴퓨터 비전 문제를 해결하는 데 도움이 되었습니다. 그러나 훈련할 더 작은 데이터 세트가 있는 경우 이러한 시각적 표현이 오해의 소지가 있을 수 있습니다. 데이터 증강은 이러한 단점을 극복하기 위한 훌륭한 전략입니다.
증강 동안 훈련 세트의 이미지는 회전, 크기 조정, 전단 등과 같은 특정 작업에 의해 변환됩니다. 예를 들어 훈련 세트가 서 있는 위치의 인간 이미지로만 구성된 경우 구축하려는 분류기 사람이 누워있는 이미지를 예측하지 못할 수 있으므로 증강은 훈련 세트의 사진을 90도 회전하여 누워있는 사람의 이미지를 시뮬레이션할 수 있습니다.

이것은 데이터 세트를 확장하고 모델의 검증 메트릭을 증가시키는 저렴하고 중요한 방법입니다.
데이터 증강은 특히 객체 인식과 같은 분류 문제에 대한 강력한 도구입니다. 훈련 이미지를 각 방향으로 몇 픽셀 이동하는 것과 같은 작업은 일반화를 크게 향상시킬 수 있습니다.
Augmentation의 또 다른 장점은 이미지가 흐름에서 변환된다는 것입니다. 즉, 기존 데이터 세트가 무시되지 않습니다. 훈련을 위해 이미지가 신경망에 로드될 때 증강이 이루어지므로 메모리 요구 사항이 증가하지 않으며 추가 실험을 위해 데이터도 보존됩니다.
증강과 같은 변환 기술을 적용하는 것은 새로운 데이터를 수집하는 데 비용이 많이 드는 경우에 매우 유용하지만 교육 클래스의 기존 분포를 변경할 수 있는 변환을 적용하지 않는다는 점을 명심해야 합니다. 예를 들어 훈련 세트에 0에서 9까지의 손으로 쓴 숫자 이미지가 포함된 경우 숫자 "6"과 "9"를 뒤집거나 회전하는 것은 훈련 세트를 쓸모없게 만들므로 적절한 변환이 아닙니다.
더 읽어보기: 최고의 머신 러닝 데이터 세트 프로젝트 아이디어
TensorFlow와 함께 데이터 증강 사용
TensorFlow를 백엔드로 사용하는 Keras의 ImageDataGenerator API를 사용하여 증강을 달성할 수 있습니다 . ImageDataGenerator 인스턴스 는 훈련 지점에서 이미지에 대해 여러 무작위 변환을 수행할 수 있습니다. 이 경우에 사용할 수 있는 몇 가지 인기 있는 인수는 다음과 같습니다.
- rotation_range: 0-180 사이의 정수 값으로 사진을 무작위로 회전합니다.
- width_shift_range: 더 많은 예제를 생성하기 위해 프레임을 중심으로 이미지를 수평으로 이동합니다.
- height_shift_range: 더 많은 예제를 생성하기 위해 프레임을 중심으로 이미지를 수직으로 이동합니다.
- 전단 범위: 이미지에 무작위 전단 변환을 적용하여 여러 예를 생성합니다.
- zoom_range: 무작위로 확대/축소할 이미지의 상대적 부분입니다.
- horizontal_flip: 이미지를 수평으로 뒤집을 때 사용합니다.
- fill_mode: 새로 생성된 픽셀을 채우는 방법.
아래는 ImageDataGenerator 인스턴스를 사용하여 앞서 언급한 변환을 수행하는 방법을 보여주는 코드 조각입니다 .

- train_datagen = ImageDataGenerator(
- 재조정 = 1./255,
- 회전 범위=40,
- width_shift_range=0.2,
- height_shift_range=0.2,
- 전단 범위 = 0.2,
- 확대/축소 범위=0.2,
- horizontal_flip=사실,
- fill_mode='가장 가까운')
훈련 세트에 이러한 무작위 변환을 적용한 결과를 보는 것도 간단합니다. 이를 위해 훈련 세트를 반복하여 무작위로 증강된 훈련 이미지를 표시할 수 있습니다.
그림 1: 증강을 사용하여 생성된 이미지
(Francois Chollet의 Python을 사용한 딥 러닝 이미지, 5장, 140페이지)
그림 1은 훈련 시간에 수행된 무작위 변환 때문에 모든 이미지가 표면적으로 서로 다른 단일 입력 이미지에서 증강이 어떻게 여러 이미지를 생성할 수 있는지에 대한 아이디어를 제공합니다.
증강 전략 사용의 진정한 본질을 이해하려면 모델의 훈련 및 검증 메트릭에 미치는 영향을 이해해야 합니다. 이를 위해 우리는 두 가지 모델을 훈련할 것입니다. 하나는 데이터 증강을 사용하지 않을 것이고 다른 하나는 사용할 것입니다. 이를 검증하기 위해 다음 위치에서 사용할 수 있는 Cats and Dogs 데이터 세트를 사용합니다.
https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip
두 모델 모두에서 관찰된 정확도 곡선은 다음과 같습니다.

그림 2: 교육 및 검증 정확도. 왼쪽 : 보강을 하지 않은 모델. 오른쪽 : 무작위 데이터 증대 변환을 사용한 모델.
반드시 읽어야 할 내용: 감정 분석을 위해 확립된 상위 데이터 세트
결론
증강 전략 없이 훈련된 모델이 낮은 일반화력을 나타내는 것은 그림 2에서 분명합니다. 검증 세트의 모델 성능은 훈련 세트의 성능과 동등하지 않습니다. 이는 모델이 과적합되었음을 의미합니다.
반면, Augmentation 전략을 사용하는 두 번째 모델은 학습 정확도만큼 검증 정확도가 높아 우수한 메트릭을 보여줍니다. 이는 모델이 과적합의 징후를 나타내는 데이터 세트 증대 기술을 사용하는 것이 얼마나 유용한지 보여줍니다.
감정 분석 및 인공 지능 및 기계 학습과 같은 관련 기술에 대해 더 배우고 싶다면 기계 학습 및 AI 과정의 PG 디플로마를 확인할 수 있습니다 .