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.
토큰을 합하여 문장으로 변환한다