Iterative Mask Filling
논문 리뷰
- 논문 링크: https://arxiv.org/pdf/2401.01830
- 논문 구현: https://github.com/Jaesu26/textmentations
- 핵심 아이디어 알아 보기
- 대량의 데이터는 종종 복잡한 모델을 사용하는 것보다 더 큰 영향력을 행사한다
- 하지만 대량의 라벨링된 데이터를 얻기 위해 많은 비용이 필요하다
- 이런 상황에서 데이터 증강은 비싼 비용 지불없이 모델의 성능 및 일반화 능력 향상을 이끌어 낼 수 있다
- 증강된 데이터는 원본 문장의 라벨을 따르면서도 기존의 데이터 분포와는 달라야한다
- Iterative Mask Filling은 이를 충족시키는 새로운 텍스트 증강 기법 중 하나이다
![]()
- 문장의 맥락을 파악하기 위해 대량의 코퍼스로 학습된 마스크 언어 모델(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. 토큰을 합하여 문장으로 변환한다