티스토리 뷰

이번 포스트는 지난 불균형 해소 Part1 포스트에 이어서 두 번째 해소 방법에 대해 이야기 해보려고 한다.

 

지난 포스트에서 Back Translation 기법을 사용하여 기존 불균형 데이터를 4배 가량 증가시켜 주었다. 

 

그럼에도 불구하고 아직 균형이 맞지 않아, 다른 방법을 한번 더 사용하기로 하였다.

 

두 번째로 사용한 방법은 'EDA: Easy Data Augmentation'이라는 기법이다. 

 

데이터분석, 머신러닝 혹은 딥러닝을 공부하는 사람들이 흔히 알고있는 EDA는 Exploratory Data Analysis(탐색적 데이터 분석)의 약자이다. 

 

하지만 이번에 사용하게 된 EDA는 Easy Data Augmentation의 약자로, 말 그대로 데이터 증가를 쉽게 해보자 라는 의미를 담고있다. 

 

해당 기법에 대한 논문은 2018년에 EMNLP에서 발표되었고, EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks를 통해 자연어 처리 분야에서 효과적인 데이터 증가를 이루어낼 수 있었다.

 

해당 논문에서 소개하는 방법은 다음과 같다. 

 

아래와 같은 4가지의 기법을 사용하여 텍스트 데이터를 변화 시켜주어 늘릴 수 있게 해준다.

  • SR (Synonym Replacement): 특정 단어를 비슷한 의미의 유의어로 교체
  • RI (Random Insertion): 임의의 단어를 삽입
  • RS (Random Swap): 텍스트 내의 두 단어를 임의로 선정하여 서로 위치를 바꿔줌
  • RD (Random Deletion): 임의의 단어를 삭제

 위와 같은 방법을 사용하여 우리의 데이터를 증가시켜주고자 하였고, 논문에 따르면,


'큰 훈련 세트의 경우, 많은 양의 실제 데이터를 사용할 수 있을 때 모델이 적절하게 일반화가 되는 경향이 있기 때문에 원래 문장당 4개 이상의 증강 문장을 추가하는 것은 도움이 되지 않는다.' 

 

이러한 내용과 아래의 그림처럼 논문 내 추천 파라미터를 감안하여, Augmentation할 n을 3으로 맞춰주어 진행하였다.

 

EDA를 사용하기 위한 코드는 아래의 코드를 참고하여 제작하였다.

github.com/catSirup/KorEDA/tree/master

 

catSirup/KorEDA

EDA를 한국어 데이터에서도 사용할 수 있도록 WordNet을 추가. Contribute to catSirup/KorEDA development by creating an account on GitHub.

github.com

결과적으로 기존 4배 증가시켜주었던 데이터를 3배 더 증가 시켜줄 수 있었다.

 

대략적으로 클래스를 5.5 : 4.5의 비율로 맞추어줄 수 있었고, 균형이 적절하다 판단하여 다음 단계를 수행하기로 하였다. 

 

다음 과정을 전처리 과정의 최종 단계인 FOLD Set을 활용한 데이터 검수 및 라벨링 교정 단계이다. 

반응형
댓글