# 240624
데이터 증강 기법
학습 데이터가 부족하다면
=> 일반적으로 데이터가 부족하면 과적합이 발생, 충분한 데이터 확보가 중요
=> 데이터를 구할 수 없으면 데이터 증강 기법(Data Augmentation)을 고려해야 함
기본적인 이미지 데이터 증강 기법
- 이미지 데이터 증강 방법 : 이미지 사이즈 조절(Resize), 회전(Rotation), 뒤집기(Flipping), 자르기(Crop)
- 파이썬에서는 OpenCV 라이브러리를 이용하면 간단하게 구현할 수 있음
- => 텐서플로우(TensorFlow)나 파이토치(PyTorch)와 같은 딥러닝 프레임워크(Deep Learning Framework)에서는 이미 기본적인 데이터 증강 기법을 지원
- Albumentations : 앞서 설명한 방법 이외에도 다양한 이미지 데이터 증강 기법을 지원
- ImgAug는 객체 인식(Object detection)과 같은 태스크에서 이미지 증강을 할 때, 정답 레이블(Ground Truth)를 수정해야할 경우 많이 활용
- 주의
- 함부로 데이터를 변형하여 증폭시키면 안됨. 해당 데이터의 도메인(Domain)을 잘 고려해서 처리해야 함 때문에 데이터 증강 기법을 적용할 때 문맥이나 의미를 왜곡하지 않도록 주의해야 함
- ex) 나침반 이미지의 경우 이미지를 뒤집어도 인식하느지, 글자이미지의 경우 글자를 뒤집었을 때 의미가 바뀌지 않는지 등...
- 이외 방법
- Cutout : 이미지의 일부 영역을 검은색 또는 특정 값으로 가림으로써 데이터에 변화
- Mixup : 두 이미지의 픽셀 값을 선형적으로 조합하여 새로운 이미지를 생성, 해당 이미지의 정답 레이블도 동일한 비율로 조합
- CutMix : 하나의 이미지에서 잘라낸 영역을 다른 이미지에 붙여넣는 방식, mixup과 비슷하게 두 이미지의 정답 레이블도 조합
기본적인 텍스트 증강 기법
- 동의어 대체(Synonym Replacement, SR) : 문장에서 불용어가 아닌 n개의 단어를 무작위로 선택하고 이 단어들을 무작위로 선택된 동의어로 바꾼다.
- 무작위 삽입(Random Insertion, RI) : 문장의 불용어가 아닌 무작위 단어의 동의어를 찾고 그 동의어를 문장의 무작위 위치에 삽입한다.
- 무작위 교체(Random Swap, RS) : 문장에서 두 단어를 무작위로 선택하고 그들의 위치를 교환한다. 이 방법은 항상 성공적인 결과를 보이지 않으며, 문맥이나 문법에 따라 의도하지 않는 결과를 초래할 수 잇음. 증강된 데ㅣ터가 원본 데이터의 의미나 문맥을 잘 반영하도록 주의 필요
- 무작위 삭제(Random Deletion, RD) : 각 단어를 확률 p로 문장에서 무작위로 제거한다. 무작위 교체와 동일하게 적용시, 문맥이나 문법에 따라 의도하지 않은 결과를 초래할 수 있으니 주의
의미 유지 변환 방법
문장의 의미를 유지하면서 다양한 구조적 변화나 문법적 변화를 줌
능동태에서 수동태로, 직접화에서 간접화로 변환
역번역(Back Translation)을 이용한 방법
문장을 한 언어에서 다른 언어로 번역한 후, 다시 원래의 언어로 번역하는 방식
과정에서 발생하는 약간의 번역 오류나 단어 선택의 변화는 원본 데이터셋에 다양성을 추가해 줌
원래 문장의 의미를 크게 훼손하지 않으면서 약간의 변화를 주기 위해 사용
사전학습된 언어모델(Pretrained LM)을 이용한 방법
BERT, GPT2, BART와 같이 사전학습된 언어모델(LM)을 사용하여 주어진 문장의 문맥을 기반으로 새로운 문장이나 문장 내용을 생성한다.
이 방법을 통해 원본 문장과 관련된 새로운 문장 예시를 만들 수 있다.
근래 들어 LLM의 등장과 함께 떠오르는 방법
GPT의 경우 Temperature, Top-k나 Top-p의 파라미터를 사용하여 더욱 다양한 데이터를 생성 가능
전이 학습
전이 학습(Transfer Learning)은 이미 다른 문제에 대해 학습된 모델의 지식을 새로운 작업에 활용하는 방법
대표적으로 의료 이미지 분석 (Medical Image Analysis) 분야에서는 소량의 데이터로 전이 학습을 통해 높은 성능을 달성
텍스트 데이터에서도 감정 분석 같은 작업에서 전이 학습의 효과를 볼 수 있음
한계
소스(Source) 데이터셋와 타겟(Target) 데이터셋의 도메인 간의 큰 차이나게 되면 전이 학습의 효율이 떨어짐
많은 레이어를 학습시킬 때 과적합의 위험
기존 대이터에 얼마나 전이 학습을 시킬지도 문제
자기 지도 학습
전통적인 지도 학습(Supervised Learning, SL)은 데이터의 레이블에 크게 의존함
지도학습을 위한 레이블링은 시간과 비용이 많이 드는 작업이며, 때로는 전문 지식이 필요
자기 지도 학습(Self-Supervised Learning, SSL) : 레이블이 명시적으로 제공되지 않아도 모델이 스스로 학습할 수 있도록 하는 방식, 대신, 데이터 내부의 패턴이나 구조를 이용해 "가상의" 레이블 또는 문제를 생성하고, 이를 통해 모델이 유용한 특징을 추출하도록 학습함
생성 학습(Generative Learning)
대표적인 자기 지도 학습. 동일한 이미지를 다르게 변형하거나 조작하여 '원본 이미지'와 '변형된 이미지'의 관계를 학습하는 방식, 입력 데이터가 출력 데이터임
대체 작업 학습(Proxy Task Learning)
주요 작업을 직접 학습하기 보다는 대리 작업을 사용해 모델을 학습, 학습된 특징들은 후에 원래의 작업에 활용, 이 방식은 데이터의 각각의 인스턴스를 구분하는 능력을 향상
대조 학습(Contrastive Learning)
서로 다른 이미지나 데이터 포인트를 얼마나 비슷하거나 다른지를 비교하는 것을 목표로 한다.이를 통해 모델은 데이터의 다양한 특징을 인식하게 되고 이러한 유사성을 계산하기 위해선 앞에서 배운 데이터 증강 기법을 다양하게 수행해야함