Data Augmentation (데이터 증강)
포스트 난이도: HOO_Senior
# Data augmentation이란 무엇인가요?
한국말로 데이터 증강이라고 불리는 Data augmentation은 쉽게 말해서 부족한 데이터 수를 반강제적으로 늘려주는 역할을 의미한다. 우리가 일반적으로 테스트 데이터가 부족하면 학습데이터에서 가져오지만 학습 데이터 자체가 부족해지면 결국 데이터를 더 수집하고 가공해줘야 한다. 이럴 때 데이터를 새롭게 수집하는 게 가장 기본적인 방법이지만 현실적으로 원시 데이터의 추가적인 수집과 가공 과정 자체가 어려울 수 있다. 이런 경우 우리는 Data augmentation 통해 데이터의 수를 마치 원래부터 많았던 것처럼 늘려주는 것이다.
Data augmentation를 반강제적으로 늘려주는 데이터라고 표현한 이유는 우리가 일반적으로 수집하는 데이터와의 구분을 두기 위해서 이러한 표현을 사용했다. Data augmentation는 기존 데이터의 인위적 변화를 주어서 마치 새로운 데이터처럼 보이게 하여 학습 데이터를 늘려준다. 예를 들어서 이미지 데이터의 경우 크기를 조정하거나 자르고 색감을 조정하여 밝기를 바꾸거나 반대로 대비시키는 등 다양한 방법으로 모델에게 새로운 학습 데이터 유형들을 제공해 준다. 마치 수학 문제를 풀다 보면 비슷하면서도 숫자만 바뀌어 있는 문제들을 간혹 볼 수 있는데 Data augmentation이 이러한 문제들과 비슷한 경우라고 생각하면 이해하기 쉽다.
# Data augmentation를 사용하는 이유는 뭔가요?
Data augmentation를 사용하는 가장 큰 이유는 데이터가 부족하기 때문이다. 사실상 Data augmentation를 사용하는게 Computer vision model를 만드는 데 있어서 좋은 방법은 아니라고 생각한다. 원천 데이터를 가지고 변형하여 추가적인 데이터를 제공하기 때문에 학습되는 방향이 편중될 수 있기 때문이다. 그렇기에 우리 모두는 새로운 데이터를 학습시켜 주는 게 가장 좋다는 걸 누구나 알고 있다. 그럼에도 Data augmentation를 많이 사용하는 이유는 데이터를 수집하는 데에 한계가 존재하기 때문이다. 학습할 데이터를 수집하는 단계에서도 시간과 비용이 많이 들지만 학습시킬 데이터로 가공하는 단계 또한 많은 시간과 비용이 들기 때문에 모든 모델에 대해서 "빅데이터"라고 불리는 양만큼의 데이터를 현실적으로 학습시키기가 어렵다. 연구 기관을 비롯하여 민간 기업의 경우 현실적인 부분을 고려하지 않을 수 없기 때문에 결국 Data augmentation를 사용하는 것이다. 대표적인 예로 테슬라 또한 Data augmentation를 사용하여 자율 주행 시스템을 효율적으로 학습시키고 있기 때문에 이보다 규모가 작은 연구소나 기업의 경우는 Data augmentation를 사용하지 않을 이유가 없다.
위의 글쓴이가 작성한 내용만 보면 마치 Data augmentation가 나쁜 것처럼 보일 수는 있는데 사실 원천 데이터와 비교했을때 나쁘지 않고 효율적으로 더 좋기 때문에 글쓴이를 포함하여 많은 개발자들과 기업들이 Data augmentation를 사용하고 있다. 실제로 데이터가 많다고 할지라도 테스트를 하는 단계에서도 Data augmentation를 사용하여 모델의 정확도를 향상할 수 있으며, overfitting문제를 사전에 예방하는 데에도 좋다. 무엇보다 글쓴이가 Data augmentation를 좋아하는 이유 중 하나는 라벨링에 대한 데이터 정리 및 가공하는 과정의 시간을 많이 줄일 수 있기 때문이다. 기업이나 연구소 입장에서는 연구원 또느 개발자의 시간을 많이 아낄 수 있다는 것은 결국 운영 비용을 절감할 수 있다는 것이기에 이 역시도 모두에게 행복한 결말인 셈이다.
# Data augmentation 종류
이번 포스트는 컴퓨터 비전에서의 Data augmentation이기 때문에 이미지나 영상에 대한 부분만 언급할 예정이지만 사실상 Data augmentation은 텍스트나 오디오에서도 이루어진다. 왜냐하면 우리는 머신러닝을 통해서 텍스트를 학습시키거나 오디오를 학습시키기도 하기 때문이다. 예를 들어 텍스트의 경우는 word shuffling, random word insertion, deletion 등의 방법을 통해서 Data augmentation를 하고 있으며, 오디오의 경우는 chaning speed or pitch, shifting, noise injection 등을 통해서 Data augmentation를 하고 있다.
영상의 경우도 Data augmentation가 가능한데 사실상 이미지화 해서 학습을 시킬 경우 이미지 Data augmentation 방법이 동일하게 적용된다. 아래는 이미지 Data augmentation 방법들에 대한 예시이다.
- Mixing images
- Random erasing
- Color space transformations
- Geometric transformations (randomly flip, stretch, rotate, crop, zoom, and etc.)
- Kernel fillters
이 외에도 우리는 GANs라고 불리는 Generative adversarial networks나 NST라고 부리는 Neural style transfer를 사용하여 Data augmentation를 하기도 한다. 이 포스트를 작성하는 시점에서 글쓴이도 새로 시작하는 사이드 연구에 대해서 데이터셋이 부족하여 Data augmentation를 사용하여 데이터의 수를 늘려주었다.
'Computer Science > AI & Data' 카테고리의 다른 글
[Computer Vision] Object Detection Systems: YOLO (욜로) (2) | 2023.11.10 |
---|---|
[Computer Vision] R-CNN vs Fast R-CNN vs YOLO (2) | 2023.10.31 |
[Data Science] 엑셀에서 데이터 분석하기 (Data Analysis on Excel) (0) | 2023.10.26 |
[Computer Vision] 공개형 학습 데이터셋: 로보플로우 (Roboflow) (4) | 2023.10.25 |
[AI & ML Examples] Computer Vision Calibration: Normalized Points 예제코드 (0) | 2023.10.13 |
댓글