cs [논문 리뷰] Don’t Stop Pretraining: Adapt Language Models to Domains and Tasks - 2
본문 바로가기
  • 매일 한걸음씩
  • 매일 한걸음씩
개발/NLP(Natural Language Processing)

[논문 리뷰] Don’t Stop Pretraining: Adapt Language Models to Domains and Tasks - 2

by 시몬쯔 2021. 3. 10.
728x90

simonezz.tistory.com/78

 

[논문 리뷰] Don’t Stop Pretraining: Adapt Language Models to Domains and Tasks - 1

회사에서 프로젝트를 진행하면서 Domain adaption에 관한 질문을 텐플코에 올렸다가 추천받은 논문인데 마침 스터디 주제 논문도 이 논문이라 정리하는 겸 블로그에 작성하게 되었다. 발표된 이후

simonezz.tistory.com

위의 포스팅에서 이어지는 내용입니다.

 

 


Task-Adaptive Pretraining

 

특정 tasks에 맞춰 큐레이트된 데이터셋은 넓은 도메인에서 오직 한 부분만 커버하는 경향이 있는데,

예를 들어, 화학물질과 단백질간의 관계를 추출하기 위해 CHEMPROT 데이터셋은 선택된 PubMed 카테고리의 최근 published된, 영향력있는 기사들의 abstracts만 초점을 맞춘다. 

 

저자들은 task 데이터가 큰 도메인에서 작은 영역으로 정의된 부분일 경우, task dataset 자체 또는 task와 관련된 데이터에서 사전학습하는 것이 도움이 될 것이라 가정했다.

(즉, 전체에서 작은 부분만을 차지하는 경우 전체 데이터셋에서나 관련 데이터에서 사전학습하는 것이 효과가 있다.)

 


 

Task-adaptive pretraining(TAPT)는 주어진 task에 대해 unlabeled 학습 set에서 사전학습하는 것

(Task-adaptive pretraining (TAPT) refers to pre- training on the unlabeled training set for a given task;)


이전의 연구들은 TAPT의 효과를 증명해왔는데, Domain-adaptive pretraining(DAPT)와 비교해서 TAPT 방식은 다른 trade-off를 가진다.

 

TAPT의 trade-off : 훨씬 작은 사전학습 말뭉치를 사용하지만 task와 더 관련이 있다.

 

(학습 set이 task를 잘 대표하기 때문이다.)

 

 

👉🏻이는 TAPT가 DAPT보다 더 계산량이 적게 하며, 실험에서 보였듯이, TAPT의 성능이 DAPT와 견줄만 하게 한다.

 

 


 

Experiments

 

 

DAPT와의 유사점 : DAPT와 유사하게 TAPT는 RoBERTA 사전학습의 두번째 단계로 이루어져있지만 사용가능한 task-specific 학습 데이터에 대해서만이다. 

 

DAPT와의 차이점 : 12.5K step만큼 학습한 DAPT와는 반대로, TAPT는 100 epochs만큼 학습하였다.

 

저자들은 인위적으로 각 데이터셋을 무작위로 다른 단어들을 masking 처리(masking probability of 0.15)함으로써 늘렸다. DAPT 실험에서와 마찬가지로, final layer [CLS] token representation을 분류를 위해 task-specific feedforward layer로 넘긴다.

 

아래 표의 TAPT column에서 결과를 확인할 수 있다.

 

 

TAPT는 일관되게 RoBERTA의 성능을 뛰어넘었는데, 심지어 NEWS 도메인(RoBERTA의 사전학습에서 쓰인)에서도 TAPT의 성능이 더 나았다. 이는 task adaptation의 이점을 보여주는 경우이다. 

 

특히 주목할 점은, TAPT와 DAPT간의 차이이다.

DAPT에 더 resource가 많이 들어감에도 불구하고 TAPT는 몇몇의 task에서 이에못지 않은 성능을 보여주고 DAPT를 뛰어넘는 성능을 보여주기도 하였다.

 

 

 

<Combined DAPT and TAPT>

두 가지 adaptation 방법을 공부하면 자연스럽게 두 방법을 결합하면 서로의 단점을 커버하고 장점을 살릴 수 있지 않을까 생각하게 된다. 이 논문에서도 앞서 설명한 DAPT와 TAPT 두 가지를 합치는 방법에 대해 실험해보았다.

 

RoBERTA를 가지고 DAPT를 한 후 TAPT하는 방식이다. 사전 훈련의 세 단계가 더해져 앞서 나온 설정 중 가장 cost가 많이 든다. 예상한대로 DAPT+TAP는 모든 tasks에서 가장 좋은 성능을 보여준다.

 

논문에서의 결과는 DAPT+TAPT가 domain과 task 모두에서 가장 좋은 성능을 보여주었다.

또한, 논문에서는 순서를 반대로 하는 것, TAPT후에 DAPT를 적용하는 것은 task 관련 말뭉치의 치명적인 망각에 취약할 것으로 추측하고 있다. 

 

이후에 연구는 더 구체적인 domain과 task 분포의 커리큘럼의 사전학습에 대해 다룰 것이다.

(어떻게 분포가 되어있을 때 adaptation의 성능이 좋을 것인가?)

 

 

<Cross-Task Transfer>

 

이 논문에서는 또한 한 task에 적용시키면 같은 domain의 다른 task로 transfer하는지를 연구하며 DAPT와 TAPT간의 비교를 진행하였다. 예를 들어, RCT unlabeled data를 사용하여 LM를 사전학습하고 이를 CHEMPROT labeled data로 fine-tuning하는 식이다. (BIOMED 도메인의 두 task)

 

✔️ 이러한 setting을 Transfer-TAPT라고 한다.

 

 

4개의 도메인에서의 tasks에 대한 결과는 아래의 표에서 확인할 수 있다.

 

 

위의 결과를 통해, TAPT는 하나의 task performance에 대해 최적으로 성능을 내는 것을 알 수 있다.

(cross-task transfer에서는 성능이 떨어짐)

 

즉, 이 결과는 한 도메인에서도 tasks의 데이터 분포는 다름을 알려준다. 

 

또한, 왜 한 broad domain으로의 adapting이 충분하지 않은지, 왜 DAPT+TAPT이 효과적인지를 알려준다.

(한 도메인에서도 tasks가 다르면 transfer이 잘 되지 않으니 같은 domain, task 데이터를 가지고 학습해야하는데 데이터가 충분하지 않기 때문에)

 

 


 

Augmenting Traning Data for Task-Adaptive Pretraining

 

직전 section에서 논문은 task adaptation을 위해 supervised task의 학습데이터만을 사용하여 사전학습을 계속하였다.

TAPT의 우수한 성능에 영감을 받아, 다음으로는 또다른 setting을 고려해보았는데, 이는 task 분포로부터 unlabeled data의 더 큰 pool이 존재하는 경우이다.(curated by humans)

 

 

두개의 시나리오에 대해 조사하였는데,

 

1) 세 개의 tasks(RCT, HYPERPARTISAN and IMDB)에 대해서 사용가능한 human-curated 말뭉치에서 unlabeled data의 pool을 사용하는 것.

 

2) TAPT에 관련된 unlabeled data를 큰 unlabeled in-domain corpus로부터 retrieving 하는 것이다. 

(extra human-curated data가 사용불가능할 때)

 

 

1. Human Curated-TAPT

데이터셋 생성은 종종 알려진 sources로부터 큰 unlabeled 말뭉치 collection을 포함한다.

그런 다음 이 말뭉치는 annotation budget에 기초하여 annotation을 수집하기 위해 다운샘플링된다.

그러므로, 더 큰 unlabeled 말뭉치는 task의 학습데이터와 비슷한 분포를 가질 것이라 생각된다. 

 

task-adaptive 사전학습에서 그러한 말뭉치의 역할에 대해 알아보자.

 

<Data>

이 논문에서는 RCT 데이터셋을 500개의 예제로 다운샘플링하는 경우를 고려하였다.(전체는 18만개)

그리고 학습 데이터의 나머지를 unlabeled 데이터로 가정하였다.

 

또한, HYPERPARTISAN shared task는 low- and high-resource의 두 가지 트랙을 가진다.

저자들은 5천개의 문서들을 high-resource 셋팅으로부터 Curated-TAPT unlabeled data로 사용하고 original low-resource 학습 문서들을 task fine-tuning에 대해 사용하였다.

 

IMDB에 대해서는 task annotators에 의해 일일이 curated된 추가적인 unlabeled data를 사용하였다.

(labeled data와 같은 분포로부터 뽑아짐)

 

 

<Results>

 

논문에서는 Curated-TAPT를 TAPT와 DAPT+TAPT에 비교하였다. 아래의 표에서 결과를 확인할 수 있다.

 

 

Curated-TAPT는 이전의 결과들보다 모든 3개의 데이터셋에서 더 나은 성능을 보여주었다. 

Curated-TAPT를 DAPT후에 적용하는 것은 모든 tasks에서 가장 큰 boost를 보여주었다.

 

이 결과를 통해서, 많은 데이터를 task 분포로부터 curating하는 것은 end-task 성능 향상에 큰 영향을 미치는 것을 알 수 있다.

저자들은 또한 task designers에게 많은 unlabeled task data를 사전학습에서의 모델 adaptation에 사용하라고 추천한다고 한다.(일단 데이터가 많으면 어찌저찌 방법을 써서 성능이 향상된다는 말이다.)

 

 

 

그럼 데이터가 적을 때는 어떻게 해야할까? 아래의 방법을 참고할 수 있다.

 

 

Automated Data Selection for TAPT

 

위의 방법들과 같이 많은 unlabeled data뿐만 아니라 계산을 위한 resource 또한 충분치않다고 해보자.

논문에서는 큰 도메인내의 말뭉치에서 task 분포와 유사한 unlabeled text를 가져오는 간단한 unsupervised 방법을 제시한다.

이 접근은 text embedding을 통해 task-relevant 데이터를 도메인에서 찾는 방식이다. 그런다음 task data를 사용한 쿼리를 기반으로 도메인으로부터 후보들을 선택하는 방식이다. 

(정리하자면, text embedding을 통해 유사한 분포의 데이터를 뽑아오는 형식이다.)

 

중요한 점은, 임베딩방식이 reasonable한 시간내에 모든 문장들을 임베딩할 수 있을 정도로 가벼워야한다는 것이다. 

 

이러한 계산소요 방면에서, 논문에서는 VAMPIRE라는 간단한 bag-of-words language model를 사용하였다.

task와 domain 모두에서 텍스트 임베딩을 처리하기 위해 VAMPIRE를 큰 중복제거된 도메인의 샘플(1M개의 문장)에서 사전학습을 한다. 그다음 각 task 문장들에 대해 도메인 샘플로부터 k개의 후보를 선정한다.

(한 task sample에 대해 top k개의 domain sample을 선정한다고 생각하면 된다.)

 

후보들은 두 가지 방식 중 하나를 사용하여 선정된다.

 

(i) KNN-TAPT(knn)

(ii) RAND-TAPT(random)

 

 

이렇게 선정된 후보들을 추가하여 augmented된 말뭉치를 가지고 RoBERTA를 더 학습한다.

 

 

 

 

<Results>

 

결과는 다음과 같다.

 

결과를 통해 knn 방법을 통해 데이터를 추가한 kNN-TAPT가 TAPT을 모든 경우에서 이긴 것을 볼 수 있다.

RAND-TAPT는 오히려 TAPT보다 성능이 낮았다. 

(💫 관련있는 데이터 추가의 중요성!)

하지만 한 표준편차내의 random 선택은 몇몇의 데이터셋에서 성능의 향상을 보여주었다.

 

k를 증가시킬수록 kNN-TAPT의 성능은 점점 증가했고 DAPT의 성능까지 가까이 갔다.

 

후의 연구는 kNN-TAPT에 대한 밀도있는 연구가 될 것이다. 또한 다양성과 task 관련성에 대한 tradeoff에 대한 연구 또한 가능하다.

 

 

 


 

Conclusion

 

논문 실험을 한눈에 정리하자면 다음과 같다.

 

 

 


 

정말 많은 것을 알려준 논문이였다. 최근 들어 읽은 유익한 논문중에 탑인 것 같다.

언어모델을 배우기만 했지 직접 써먹기는 이번이 처음인데 domain adaption에 대한 지식을 공부하는데 이만한 논문이 없는 것같다. 특히 추가적으로 사용한 알고리즘(knn 등)이 매우 basic하기 때문에 이해하기가 쉬웠는데 이런 기본 지식이 모델 성능 향상에 큰 영향을 끼친다는 것을 결과로 확인하고 나니 더 흥미로웠다. 

괜히 기초과목을 탄탄히 배우는 게 아닌 것 같다.

 

 

아직 Related work/Appendix를 못읽었는데 더 읽고 내용을 추가해야겠다.

 

 

 

오늘의 리뷰는 여기까지입니다. 🌟

 

728x90

댓글