본문 바로가기
  • CobsLab upgrades your company value by AI technology
자연어 처리 논문

AEDA: An Easier Data Augmentation Technique for Text Classification

by dmkdmk 2022. 12. 26.

안녕하세요 콥스랩(COBS LAB)입니다.

오늘 소개해 드릴 논문은 ‘AEDA: An Easier Data Augmentation Technique for Text Classification’입니다.

해당 내용은 유튜브 ‘딥러닝 논문 읽기 모임' 중 ‘AEDA’ 영상 스크립트를 편집한 내용으로, 영상으로도 확인하실 수 있습니다. (영상링크:https://youtu.be/E9rcpKtGars)

논문 백그라운드입니다. Data Augmentation라는 것은 이미지에서 조금 직관적으로 볼 수 있습니다. 이 강아지 사진이 있으면 random cropping을 하거나 random erasing 혹은 이 두 가지를 같이 해줘도 강아지라는 데이터이기 때문에 그거는 변하지 않습니다. 이런 데이터들로 모델을 학습시킬 수 있다는 장점을 갖고 있습니다.

 

텍스트에서 보고자 하면 이미지와 달리 텍스트는 조금 Augmentation이 까다로울 수 있습니다. 그래서 이 논문에서 제안하는 선행연구로 말하는 것이 EDA라는 논문인데 EDA라는 논문에서는 텍스트 Augmentation을 어떻게 하냐면 동의어를 대체해주거나 랜덤 하게 어떤 단어를 삽입해주거나 아니면 랜덤하게 단어들을 swapping해주거나 아니면 어떤 단어를 랜덤하게 delation 해주는 방법을 얘기하고 있습니다.

 

그런데 해당 논문에서는 이런 EDA 기법은 두 가지의 한계점이 존재합니다.

예를 들어서 random delation을 해 줄 경우에는 단어 자체가 sentence의 의미론적으로 굉장히 중요한 워드일 수 있고 그렇기 때문에 문장 자체 정보를 이룰 수 있음을 얘기하고 있습니다.

 

두 번째로는 어떤 단어 같은 것을 삽입해 줄 때 이 시퀀스에 인풋을 넣어줌으로써 레이블이 변경될 수 있기 때문에 학습에 굉장히 misleading을 유발할 수 있다라고 얘기하고 있습니다.

 

그래서 해당 논문은 NLP에 대한 Augmentation을 굉장히 많은 종류로 설명을 하고 있는데 크게 네 가지로 설명을 드리겠습니다.

첫 번째 Neural Maching Translation입니다.

예를 들어서 English로 된 This is very cool이라는 sentence가 있을 때 프랑스어 중국어 이탈리아어로 Translation을 해준 후 다시 영어로 Translation을 시켜줘서 이렇게 만들어진 문장을Augmentation 된 데이터셋으로 활용하겠다는 기법입니다.

두 번째로는 Mix Transformer입니다.

이 sentence1과 sentence 1에 embedding 된 값들을 40%, 60%를 combination 해줘서 데이터로 활용하겠다. 예를 들어서 sentence1이 positive라는 레이블을 갖고 있고 sentence2가 네거티브라는 레이블을 갖고 있을 때 이렇게 combination을 해준 데이터의 레이블은 positive 0.4 negative 0.6 이런 식으로 데이터를 활용하겠다는 기법입니다.

세 번째로는 랭귀지 모델을 활용한 Contextual word입니다.

예를 들어서 This is very cool이라는 sentence가 BERT로 들어갔을 때 very라는 토큰 embedding이 어디에 contextual embedding으로 주어졌는지 보고 해당 embedding에 가까이 있는 것들을 동의어로 생각해서 대체시켜주겠다. 그래서 이렇게 대체시켜준 sentence들을 Augmentation 한 데이터셋으로 활용하겠다는 기법입니다.

네 번째로는 빈도 기반으로 한 단어 대체입니다.

Unigram으로 단어들 간의 출현빈도를 살펴보고 가장 많이 동시에 출현한 단어를 동의어로 보고 대체시켜줘서 그 대체한 sentence를 Augmentation 한 데이터셋으로 보겠다는 방법을 Related work로 제시하고 있습니다.

그래서 이러한 백그라운드와 Related work를 가지고 해당 논문이 제시하는 기법은 AEDA라는 Augmentation입니다.

Augmentation는 진짜 간단한 방법을 가지고 있습니다. 오리지널 sentence의 Sequence length를 기준으로서 3분의 1과 1에 해당하는 숫자를 랜덤으로 포지션을 선택합니다. 그 랜덤 한 포지션을 선택한 후 어떠한 값을 삽입해주는데 그 삽입되는 값들이 이 구두점 여섯 가지를 랜덤으로 뽑아서 삽입해주는 방법을 사용하고 있습니다. 여기서 예를 하나 보시면 랜덤 하게 뽑힌 roads뒤에 부분과 life 뒤 부분에 이런 여섯 가지 구두점 중 하나를 랜덤하게 삽입해주는 것을 볼 수 있습니다.

이 논문에서는 EDAAEDA를 비교하고 있습니다.

한 가지 아쉬웠던 점은 이 모델을 Transformer 기반 모델을 보지 않고 RNNCNN에서 보고 있긴 하지만 비교해 봤을 때 EDA가 확실히 기존에 있던 그냥 했을 때보다는 성능 향상이 이루어진 것을 알 수 있습니다.

또한 AEDAEDA보다 계속 더 좋은 성능을 내고 있다는 것을 알 수 있습니다

다섯 가지 데이터셋에 대해서 비교하고 있습니다.

여기서도 마찬가지로 EDA는 성능이 떨어지는 것을 볼 수 있고 AEDA가 제일 좋은 성능을 보고 있음을 알 수 있습니다.

100 퍼센트의 데이터를 사용했을 때는 AEDA를 사용하나 오리지널 데이터를 사용하나 비슷한 성능을 보이고 있지만 만약에 리얼 데이터라고 생각을 한다면 리얼 데이터에서는 갖고 있는 레이블 데이터가 굉장히 작기 때문에 이러한 AEDA를 통해서 성능 향상을 볼 수 있다고 생각할 수 있습니다.

하지만 좀 아쉬웠던 게 이것도 RNN 모델에 대한 이야기이기 때문에 RNN 모델에 한해서 정말 좋은 성능 향상을 일으키고 있다라고 생각할 수 있을 것 같습니다.

그래서 해당 논문에서는 Augmentation을 몇 번 해주는 것에 따라 얼마만큼의 성능향상이 이루어지냐에 대해서 실험을 해봤습니다. 사실 데이터 사이즈가 작을 때 Augmentation을 많이 해줄수록성능 향상이 올라가는 것을 볼 수 있고 데이터 셋이 많을수록 그 성능 향상의 폭이 좀 작아지는 것을 확인할 수 있습니다.

하지만 여기 improvement를 보시면 1퍼센트 이상 값을 갖고 있는 걸 보면 사실 데이터셋을 다 갖고 있어도 성능이 떨어지진 않는다 정도로 생각할 수 있을 것 같습니다.

이 실험 또한 RNN 모델을 베이스라인으로 잡고 있기 때문에 RNN에 한해서 이루어진다고 생각할 수 있습니다.

마지막으로 BERT 모델에 대해서 비교합니다. BERT일 때 91.10 그리고 AEDA를 썼을 때 91.76 그리고 얘는 97.00과 97.20인데 사실 엄청나게 효과적인 성능 향상을 볼 수는 없었다

하지만 EDA를 보시면 성능이 오히려 떨어지고 있는 걸 알 수 있습니다. BERT라는 Transformer 기반으로 된 모델 자체가 엄청나게 Contextual 하게 representation learning을 하고 있고 그에 따라서 EDA라는 Augmentation 기법이 문맥적으로 좀 알맞지 않은 Augmentation 기법이지 않나 라는 생각을 좀 하게 되었습니다.

그리고 AEDA 같은 경우에는 사실 구두점만 찍어주는 거기 때문에 Context를 건드리지는 않지만 엄청난 Augmentation의 작용을 볼 수는 없었다라고 생각할 수 있습니다.

결론입니다.

해당 논문은 정말 간단하지만 효과적인 Data AugmentationAEDA를 제안하였고 기존의 선행연구인 EDA기법보다 간단하지만 좋은 성능을 보인 방법이었다는 contribution을 갖고 있습니다.

기존의 NLP Augmentation으로 볼 수 있었던 Random delation 같은 것들은 정말 Transformer 기반 모델에서는 활용할 필요가 없겠다는 것을 생각했습니다.

두 번째로는 BERT와 같은 Transformer 기반에 대한 실험이 조금 부족했다는 게 좀 아쉬웠습니다.

그리고 Related work에서는 사실 hidden representationContextual 한 representation에 대한 Augmentation을 다루고 있는 것과 별개로 실험에서는 안 다뤘다는 게 조금 아쉬웠습니다.

그리고 마지막으로는 이렇게 간단한 Augmentation임에도 불구하고 왜 성능 향상을 보일까라는 것에 조금 더 생각해볼 점이 많지 않나라는 것을 느꼈습니다.

댓글