오늘은 다양한 데이터 증강 기법들에 대하여 간단하게 정리하였다.
일반적으로 데이터가 충분하지 않다면 과적합이 일어나기 때문에 충분한 양의 데이터를 확보하는 것은 중요하다. 그러나 더 이상 새로운 데이터를 얻을 수 없는 경우, 데이터 증강기법등을 사용해 볼 수 있다.
다만 데이터 증강을 진행할 때 함부로 데이터를 변형하여 증폭시키면 안되고, 해당 데이터의 도메인을 잘 고려해서 처리해야 한다. 예를 들어 객체 인식을 하고 있는데, 이미지를 크롭 하였는데 해당 영역에 객체가 없거나 숫자 6을 돌려서 9로 만들어버리는 등 문제가 생길 수도 있으므로 적절한 기법을 이용해야 한다.
이미지 데이터 증강
기본적으로 이미지 데이터 증강 기법에는 `Resize:사이즈조절`,`Rotation:회전`,`Flipping:뒤집기`,`Crop:자르기`이 있다.
위의 일반적인 증강기법들 외에 `Cutout`,`Mixup`,`Cutmix`등의 기법도 있는데,
우선 Cutout은 이미지의 일부 영역을 검정색 혹은 특정 값으로 가림으로써 변화를 주는 방법이고,
Mixup은 두 이미지의 픽셀값을 선형적으로 조합하여 새로운 이미지를 생성한다. 또한 해당 이미지들의 정답 레이블도 동일한 비율로 조합하는 것을 말하며
Cutmix는 하나의 이미지에서 잘라낸 영역을 다른 이미지에 붙여 넣는 방식으로, Mixup과 비슷하게 두 이미지의 정답 레이블도 조합된다.
파이썬에서는 `OpenCV` 라이브러리를 이용하여 간단하게 구현할 수 있다. 이것 외에도 다양한 오픈소스 라이브러리들이 있는데, `Albumentations`라는 라이브러리도 Tensorflow와 Pytorch를 모두 지원하는 라이브러리다. 아래와 같이 픽셀단위로 색상을 변경하여 데이터를 증강한다.
다음으로는 `ImgAug`라는 라이브러리는 객체인식과 같은 태스크에서 이미지 증강을할 때, 정답레이블 Ground Truth를 수정해야 할 때 많이 사용되는 라이브러리이다.
텍스트 데이터 증강
기본적인 텍스트 데이터 증강으로는 `동의어대체`,`무작위삽입`,`무작위교체`,`의미유지변환`등이 있다.
동의어 대체,Synonym Replacement:SR은 문장에서 불용어가 아닌 n개의 단어를 무작위로 선택하여 이 단어들을 무작위로 선택된 동의어로 바꾸는 작업이다.
다음으로 무작위삽입, Random Insertion:RI는 문장의 불용어가 아닌 단어의 동의어를 찾아 그 동의어를 문장의 무작위 위치에 삽입하는 것이다.
무작위 교체 Random Swap:RS는 문장에서 두 단어를 임의로 선택하여 그들의 위치를 교환하는데 원본 데이터의 의미나 문맥을 잘 반영하도록 주의해야 한다.
의미유지변환 기법은 문장의 의미를 유지하면서 다양한 구조적 변화나 문법적 변화를 준다. 능동태에서 수동태로 변환하거나, 직접화에서 간접화로 변환하는 것과 같은 것을 말한다.
또한 최근에는 사전학습된 언어 모델 Pretrained LM을 이용하여 증강을 하는데, BERT, GPT2, BART와 같이 사전학습된 언어 모델을 이용하여 주어진 문장의 문맥을 기반으로 새로운 문장이나 문장 내용을 생성하는 방식이다.
각 모델마다 다르지만 GPT모델의 경우 temperature라는 파라미터(창의성을 조절)를 통해 더 다양한 문장도 생성할 수 있다.
'ML & DL > 개념정리' 카테고리의 다른 글
Random Forest: 랜덤포레스트 (0) | 2023.12.26 |
---|---|
PyTorch- 텐서 조작 (0) | 2023.12.26 |
최적화 알고리즘 (0) | 2023.12.26 |
가중치 초기화, 규제, 학습 (0) | 2023.12.26 |
성능 고도화 기법 (0) | 2023.12.23 |