- 논문 링크: https://arxiv.org/pdf/2401.01830

- 논문 구현: https://github.com/Jaesu26/textmentations

- 핵심 아이디어 알아 보기

개요

- 대량의 데이터는 종종 복잡한 모델을 사용하는 것보다 더 큰 영향력을 행사한다

- 하지만 대량의 라벨링된 데이터를 얻기 위해 많은 비용이 필요하다

- 이런 상황에서 데이터 증강은 비싼 비용 지불없이 모델의 성능 및 일반화 능력 향상을 이끌어 낼 수 있다

- 증강된 데이터는 원본 문장의 라벨을 따르면서도 기존의 데이터 분포와는 달라야한다

- Iterative Mask Filling은 이를 충족시키는 새로운 텍스트 증강 기법 중 하나이다

Iterative Mask Fill

- 문장의 맥락을 파악하기 위해 대량의 코퍼스로 학습된 마스크 언어 모델(masked language model)을 사용한다

- iterative mask filling 알고리즘은 다음과 같다

1. 문장을 단어 단위로 토큰화한다 (영어의 경우 띄어쓰기 단위로 나누면 된다)

2. 나뉜 토큰의 개수를 $N$이라고 하면 첫 번째 토큰부터 $N$번째 토큰까지 순회하며 다음을 수행한다

2-1. 현재 인덱스를 $i$라고 하자. $i=1$부터 시작한다

2-2. $i$번 째 토큰를 마스크 토큰으로 대체한다

2-3. $i$번 째의 마스크 토큰을 포함한 전체 토큰을 모델에 입력으로 사용하기 위해 벡터로 변환한다

2-4. 해당 벡터를 마스크 언어 모델에 통과시켜 마스크 토큰을 대체할 수 있는 (토큰, 마스킹 되기 전의 원래 토큰이 해당 토큰일 확률) 쌍을 얻는다

2-5. 확률을 기준으로 내림차순 정렬 후 상위 $k$개의 토큰 중에서 하나를 확률에 따라 가중치를 두어 무작위로 선택한다

2-6. 2-5에서 선택된 토큰으로 마스크 토큰을 대체한다

3. 토큰을 합하여 문장으로 변환한다