MaxMatch-Dropout/ Subword Regularization for WordPiece
🧩

MaxMatch-Dropout/ Subword Regularization for WordPiece

Tags
NLP
논문리뷰
COLING 2022
Published
Published September 13, 2022

ArXiv, PDF

  • COLING 2022 Accepted

Github

 

무슨 문제를 풀기 위한 페이퍼인가?

WordPiece 토크나이저는 BERT 등에서 굉장히 자주 사용되는 max-match 알고리즘이다. 하지만 Max-match 류의 알고리즘의 한계점은 → OOV에 대해서 대응하는 것이 어려워 진다는 점이 있다.
💡
OOV에 대응하기 어려워 진다는 점은, OOV가 생긴다는 뜻이 아니라, 만약 ‘word’라는 단어가 → ‘w/or/d’로 나누어질 때 해당 부분에 대해 모델의 Knowledge가 없기 때문에 적절한 방향으로의 Embedding이 이루어지지 않는다는 의미이다.
이를 방지하기 위해 유사한 알고리즘인 BPE, SentencePiece 토크나이저에서는 Subword Regularization이라는 방법을 도입해, 신규 OOV에 대해서도 기존 토큰으로 좀 더 유연하게 대응할 수 있도록 학습 단계에서 토크나이징을 max match 이외의 방법으로 (위의 예시처럼, word 한 단어 대신 w, or, d로 임의로 쪼개는 등) 일종의 Data Augmentation을 노림과 동시에 OOV에 강건한 모델을 만든다.
한편, Wordpiece 알고리즘에 대해서는 이러한 Subword Regularization을 도입하지 않았다.
즉, 이 페이퍼는 가장 단순하게 설명하면 ‘Wordpiece + Subword Regularization’ 이다.
 

기존 연구

Subword Regularization이라는 연구는 NMT에서 모델의 아키텍쳐 변경 없이 Data Augmentation 효과를 주는 Regularization 방법론을 제안했다.
위 연구에서 아래와 같이 SentencePiece에서 사용할 수 있도록 방법론을 제공했다.
>>> import sentencepiece as spm >>> s = spm.SentencePieceProcessor() >>> s.Load('spm.model') >>> for n in range(5): ... s.SampleEncodeAsPieces('New York', -1, 0.1) ... ['▁', 'N', 'e', 'w', '▁York'] ['▁', 'New', '▁York'] ['▁', 'New', '▁Y', 'o', 'r', 'k'] ['▁', 'New', '▁York'] ['▁', 'New', '▁York']
 
이후 2020 ACL에서 BPE-Dropout: Simple and Effective Subword Regularization 이라는 이름으로 BPE 알고리즘에 위와 유사한 기법을 적용한 연구가 등장해 NMT에서 해당 방법론이 잘 동작한다는 것을 보였다.
 
NMT 외에도 텍스트 분류기법에서도 위와 같은 토크나이징 기법이 유의미하다는 Stochastic Tokenization with a Language Model for Neural Text Classification 연구도 있었다.
 
이러한 Regularizaion 기법들은 기본적으로 특정 토크나이저에 맞춰져서 개발되기 때문에, 한 방법론을 다른 토크나이저에 일률적으로 적용하는 것이 어렵다.
 
이 페이퍼에서는 WordPiece를 위한 새로운 dropout 방법으로 “MaxMatch-Dropout”을 제안한다.
 
 

MaxMatch-Dropout

이 페이퍼에서 제안한 MaxMatch-Dropout 기법은 심플하게 아래와 같다.
MaxMatch-Dropout 도식도
MaxMatch-Dropout 도식도
WordPiece 토크나이저가 Greedy 하게 최대 길이로 자른 토큰들을 반환하면, 해당 토큰들 중에 일부 단어를 Drop하는 과정을 추가해, 해당 drop한 단어들을 다시 세부 토큰으로 자르는 과정을 진행한다.
 
Max-Match Dropout 토크나이징 과정의 알고리즘
Max-Match Dropout 토크나이징 과정의 알고리즘
 

실제로 적용해보았는데..? 🤔

실제로 성능이 올라가는지 확인해 보기 위해서 코드를 추가로 작성해보았다.
 

NSMC with KcELECTRA: w/ MMD and w/o MMD

  • 모델: KcELECTRA(v1)
  • 데이터: NSMC
notion image
위 그래프에서 확인할 수 있는 것 처럼, Train Acc는 epoch을 많이 진행한 MMD 추가 학습에서 높게 나타났지만, 실제 Validaiton Accuracy에서는 기본 Tokenizer(w/o MMD)를 사용한 학습에서 약 2%p 높은 best score를 보였다.
 
초기 학습에서는 MMD가 일종의 Regularizer로 동작한다는 점에서 적은 epoch 단계에선 (상대적으로) 낮은 성능을 보일 수도 있다고 판단하였으나, 실제로 약 2배 넘는 epoch 학습 이후에도 여전히 낮은 혹은 Overfitting 되는 모습을 보인다는 점에서 오히려 NSMC와 같은 간단하고 쉬운 Task에 대해서는 큰 의미가 없나? 싶은 의문이 든다.
 

+ 추가 실험, p=0.3

notion image
추가적인 실험을 통해서 위 그래프의 진한 주황색 (val acc 기준 위에서 두 번째 line) 실험에서는 p=0.3(=Dropout 30%)를 두고 실험을 진행하니 상대적으로 더 높은 점수가 나오긴 했지만, p=0.0인 기본 KcELECTRA 실험결과보다는 낮은 값이 나왔다.