Data Augmentataion: 데이터 증강

2023. 12. 26. 17:35·ML & DL/개념정리

오늘은 다양한 데이터 증강 기법들에 대하여 간단하게 정리하였다.

 

일반적으로 데이터가  충분하지 않다면 과적합이 일어나기 때문에 충분한 양의 데이터를 확보하는 것은 중요하다. 그러나 더 이상 새로운 데이터를 얻을 수 없는 경우, 데이터 증강기법등을 사용해 볼 수 있다. 

다만 데이터 증강을 진행할 때 함부로 데이터를 변형하여 증폭시키면 안되고, 해당 데이터의 도메인을 잘 고려해서 처리해야 한다. 예를 들어 객체 인식을 하고 있는데, 이미지를 크롭 하였는데 해당 영역에 객체가 없거나 숫자 6을 돌려서 9로 만들어버리는 등 문제가 생길 수도 있으므로 적절한 기법을 이용해야 한다. 

이미지 데이터 증강

기본적으로 이미지 데이터 증강 기법에는 `Resize:사이즈조절`,`Rotation:회전`,`Flipping:뒤집기`,`Crop:자르기`이 있다.

위의 일반적인 증강기법들 외에 `Cutout`,`Mixup`,`Cutmix`등의 기법도 있는데,

우선 Cutout은 이미지의 일부 영역을 검정색 혹은 특정 값으로 가림으로써 변화를 주는 방법이고,

Mixup은 두 이미지의 픽셀값을 선형적으로 조합하여 새로운 이미지를 생성한다. 또한 해당 이미지들의 정답 레이블도 동일한 비율로 조합하는 것을 말하며 

Cutmix는 하나의 이미지에서 잘라낸 영역을 다른 이미지에 붙여 넣는 방식으로, Mixup과 비슷하게 두 이미지의 정답 레이블도 조합된다. 

https://arxiv.org/abs/1905.04899

 

파이썬에서는 `OpenCV` 라이브러리를 이용하여 간단하게 구현할 수 있다. 이것 외에도 다양한 오픈소스 라이브러리들이 있는데, `Albumentations`라는 라이브러리도 Tensorflow와 Pytorch를 모두 지원하는 라이브러리다. 아래와 같이 픽셀단위로 색상을 변경하여 데이터를 증강한다. 

https://github.com/albumentations-team/albumentations

다음으로는 `ImgAug`라는 라이브러리는 객체인식과 같은 태스크에서 이미지 증강을할 때, 정답레이블 Ground Truth를 수정해야 할 때 많이 사용되는 라이브러리이다. 


텍스트 데이터 증강 

기본적인 텍스트 데이터 증강으로는 `동의어대체`,`무작위삽입`,`무작위교체`,`의미유지변환`등이 있다.

동의어 대체,Synonym Replacement:SR은  문장에서 불용어가 아닌 n개의 단어를 무작위로 선택하여 이 단어들을 무작위로 선택된 동의어로 바꾸는 작업이다. 

다음으로 무작위삽입, Random Insertion:RI는 문장의 불용어가 아닌 단어의 동의어를 찾아 그 동의어를 문장의 무작위 위치에 삽입하는 것이다. 

무작위 교체 Random Swap:RS는 문장에서 두 단어를 임의로 선택하여 그들의 위치를 교환하는데 원본 데이터의 의미나 문맥을 잘 반영하도록 주의해야 한다.

의미유지변환 기법은 문장의 의미를 유지하면서 다양한 구조적 변화나 문법적 변화를 준다. 능동태에서 수동태로 변환하거나, 직접화에서 간접화로 변환하는 것과 같은 것을 말한다. 

https://arxiv.org/abs/2105.03075

또한 최근에는 사전학습된 언어 모델 Pretrained LM을 이용하여 증강을 하는데, BERT, GPT2, BART와 같이 사전학습된 언어 모델을 이용하여 주어진 문장의 문맥을 기반으로 새로운 문장이나 문장 내용을 생성하는 방식이다. 

각 모델마다 다르지만 GPT모델의 경우 temperature라는 파라미터(창의성을 조절)를 통해 더 다양한 문장도 생성할 수 있다. 

 

 

 

728x90

'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
'ML & DL/개념정리' 카테고리의 다른 글
  • Random Forest: 랜덤포레스트
  • PyTorch- 텐서 조작
  • 최적화 알고리즘
  • 가중치 초기화, 규제, 학습
창빵맨
창빵맨
  • 창빵맨
    Let's be Developers
    창빵맨
    로그인/로그아웃
  • 전체
    오늘
    어제
    • 분류 전체보기 (471)
      • 알쓸신잡 (79)
      • ML & DL (85)
        • Computer v.. (22)
        • NLP (22)
        • 파이썬 머신러닝 완.. (3)
        • 개념정리 (38)
      • 리눅스 (21)
      • 프로젝트 (29)
        • 산불 발생 예측 (6)
        • 음성비서 (12)
        • pdf 병합 프로그.. (0)
        • 수위 예측 (5)
        • 가짜 뉴스 분류 (5)
        • 전력사용량 예측 (1)
      • 코딩테스트 (217)
        • 프로그래머스[Pyt.. (17)
        • 프로그래머스[Fai.. (3)
        • 백준[Python] (160)
        • 이것이취업을위한코딩.. (18)
        • 파이썬 알고리즘 (19)
      • 데이터분석실습 (25)
        • 데이터 과학 기반의.. (18)
        • 헬로 데이터 과학 (7)
      • 메모장 (0)
      • 잡담 (4)
  • Personal

    GITHUB
    Instagram
  • 공지사항

  • 인기 글

  • 태그

    백준
    이것이취업을위한코딩테스트다
    파이썬
    이분탐색
    나동빈
    이코테
    dp
    DFS
    BFS
    그리디
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3

HOME

HOME

상단으로

티스토리툴바