Paper Review

T5(Exploring the Limits of Transfer Learning with a UnifiedText-to-Text Transformer) 논문 리뷰

TS_KIM 2022. 12. 1. 11:04

본 논문에 대한 리뷰는 논문의 내용 그 자체를 충실하게 정리해서 쓰기보다는 필자의 표현과 인사이트로 재가공되어 쓰여진 것입니다.

 

요약

Text-To-Text Transfer Transformer T가 5개라 T5다.

NLU, NLG의 구분 없이 자연어처리의 모든 Task들을 생성 모델로 전부 통합하는 프레임워크를 제안하였다.

통합하는 프레임워크 제안을 위해 당시의 여러가지 PLM 학습 기법들에 대해 다양한 실험을 한 후 저자들이 찾은 최선의 조합을 제안하였다. 때문에 논문에는 여러가지 실험 내용들이 포함되어 있다. 이후 UL2의 논문이 T5와 꽤 유사하다.

저자들이 실험하고 찾은 최선의 조합은 아래와 같다. 볼드체가 T5 모델이 선택한 방법이다. 

 

Model Architecture

Encoder-Decoder, Language Model(Decoder Only), Prefix-LM(단순히 Prefix를 더하는게 아니라 구조가 다름. 아래 상술)

 

Preprocessing

Replace Span, Replace Token, Drop, Deshuffling 

 

Preprocessing Parameter

Corruption rate : 10%, 15%, 25%, 50%

Corrupted span length : 2, 3, 5, 10

 

Objective

Denosing, LM

 

Data

Pre-training Data : C4(745GB), unfiltered C4(6.1TB), RealNews-like(35GB), WebText-like(17GB), Wikipedia(16GB), Wikipedia + TBC(20GB)

 

Pre-training Data Size(Number of Tokens) : Full data set, 2**29,  2**27, 2**25, 2**23 

 

1. 무엇을 하고자 하는가?

Transforemr 이후 PLM과 Downstream Task와함 께 NLP는 크게 NLU, NLG로 나뉘고, Encoder-Decoder Model, Encoder Only Model, Decoder Only Model 등으로 나뉘어 사용되게 되었다. 그리고 결국 실제로 풀고자하는 문제에 맞게 각각 Finetuning 시키는 방식이 일반화되었다. 하지만 이 경우에는 각 Task별로 Finetuning Layer를 각각 만들고 관리해야한다. T5는 모든 NLP 문제를 하나의 통일된 구조로 푸는 방법을 제안한다. 이는 구조의 통일이지 모델의 통일이 아니기 때문에 한 번 학습 시킨 모델을 Finetuning 없이 모든 Task를 수행할 수 있다는 것은 아니다. 이러한 것은 Zero-shot, Few-shot Learning에 가까운 문제이고, T5는 별도의 Finetuning Layer를 추가하지 않고 하나의 모델 구조만을 사용하고, Finetuning을 위해 Prefix와 Task별 형식에 맞는 Text 전처리만을 하는 방식으로 여러 Task에 대응한다. 때문에 T5에서도 Finetuning은 수행한다. 결국 T5는 각 Task별로 분화된 Model구조들을 하나의 Text to Text 모델 구조로 통합하고, 그 하나의 Text to Text 모델에서 좋은 성능을 얻기 위해 여러가지 실험을 하고, 그 실험을 통해 저자들이 생각한 최선의  조합들을 제안한 것이다.

 

2. Model Architecture & Objective

저자들은 크게 3가지의 구조를 고려한다.

1) Encoder-Decoder

2) Language Model(Decoder Only, GPT Style)

3) Prefix-LM(Encoder와 Decoder로 나누지 않고 아래 그림과 같이 Attention을 수행하는 별개의 구조의 모델) 

Model Architecture & Objective 성능 비교

실험 결과 Encoder-Decoder 모델이 가장 좋은 결과를 보여줬다. Encoder-Decoder의 경우 파라미터는 2배이지만 연산 비용은 똑같이 M이고, 연산 비용을 줄이기 위해 레이어수를 줄인 경우 파라미터수는 P이지만 성능은 떨어졌다. 저자들은 Encoder와 Decoder의 파라미터를 Share하는 것이 큰 성능하락 없이 파라미터수를 줄이는 효율적인 방법이라고 설명한다. 명확한 언급은 없지만 그럼에도 불구하고 결국 Encoder-Decoder 모델에 별이 찍혀있는 것을 보면 Share하지 않는 것을 baseline으로 설정한 것 같다.

 

여기서 언급되는 Prefix-LM은 나중에 UL2 논문에서도 언급되는데, 실제로 이름을 자주보진 않지만 꽤 중요한 개념으로 봐야할 것 같다. OpenAI의 GPT3이후 한동안 Language model로 언급되는 초거대언어 모델 방식이 꽤 주류로 자리잡는 분위기였고, T5를 포함하여 구글쪽에서는 Encoder-Decoder Model이 더 성능이 좋다는 주장을 계속 하고 있다. Prefix-LM의 경우에는 Prefix-LM, Uni-LM으로 마이크로소프트쪽에서  얘기하고 있는데 구글은 UL2논문에서 Encoder-Decoder 모델이 가장 성능이 좋고, 그다음 Uni-LM, Prefix-LM도 좋은 방법이다라고 얘기하고 있다. 모델의 Scale Up은 공통적인 과제인데 이 부분은 앞으로 어떻게 될지 계속 지켜봐야할 듯 하다. 결국 Model Architecture는 Encoder-Decoder 모델을 T5에서 선택했다.

 

Objective의 경우에도 실험결과 Denoising과 LM 중 Denoising가 일관적으로 더 좋은 결과를 낸다고 말하고 있다. 아래 Preprocessing파트에서 자세하게 다루겠지만 결국  MLM 방식으로 noise를 추가하고 이를 복구시키는 Task가 Pre-train 학습의 Objective로 가장 좋은 성능을 보였다.   

 

3. Preprocessing & Preprocessing Parameter

Pre-train을 할 때 중요한 것 중 하나가 어떠한 Objective를 사용하고 어떤 식으로 데이터셋을 구성하느냐이다. 이 부분에 대해서 T5 논문에서도 많은 실험을 진행했다. 종류는 아래의 표와 같다.

아래에 성능 결과가 있지만, 결국 Bert Style의 Mask를 이용하는 방식이 효과적이었고, Bert처럼 Token 단위로 Masking을 하는 게 아니라 span(부분)을 Masking하는 방식을 체택했다. 다만 Mask Token에 차이가 있는데, Bert와 같이 [mask]로 Token을 사용하는 게 아니라 Sentinel 토큰이라는 것을 사용한다. 쉽게 생각하면 결국에는 Mask에 Mask1, Mask2 처럼 번호를 붙인 것이라고 생각하면 된다. 정해진 길이만큼의 연속된 Token들이 하나의 Sentinel i 토큰으로 Masking되고, 정답 부분은 Sentinel i Mask된 부분의 원문 Token이 들어가는  형식으로 만들어진다. 위의 표 중 Random spans 방식에서 X, Y, Z를 Sentinel 0, Sentinel 1, Sentinel 2 등으로 바꿔서 데이터셋을 구성한다고 생각하면 된다. 

 

아래는 T5 논문에서 실험한 결과다.

별표가 붙은 Replace corrupted spans를 사용한다. 여기서 저자들은 위의 각 Objective 별 예시에서 보인것 처럼 Targets이 original text가 되는 경우는 정답문이 길어져서 연산량이 늘어난다는 것을 얘기하고 있는데 성능적으로나 연산 효율적으로나 Replace corrupted spans 방식이 가장 낫다는 결론을 내린 것 같다.

얼마나 많은 Token을 Replace하고 Span의 평균 길이를 어느정도 할지에 대한 실험에 대한 결과는 위와 같다. 결국 T5에서는 Sentinel Token을 이용한 Span Replacing 방식을 사용하고, Noising 비율은 15%, 평균 Span길이는 3으로 설정하여 데이터셋을 구성하여 학습하였다. 아래의 그림에서 화살표들이 시작되는 부분을 보고, 마지막은 3이라는 것을 기억해두자.

 

 

4. Data

데이터셋의 경우에는 영어 데이터이고 내용이 짧지 않기 때문에 가볍게만 다루겠다. T5에서는 상대적으로 PLM 모델들이 Pre-train Data가 중요함에도 상대적으로 언급이 많이 되지 않았고 고착화된 데이터셋만을 사용하여 데이터셋에 대한 표준적인 이야기들이 많이 부족했다고 이야기한다. 때문에 T5에서는 여러 유형의 데이터셋을 가지고 실험을 진행하였다. 

이 파트에서 인사이트를 주는 점은 아래의 2개라고 생각한다.

 

1) data의 전처리와 일정 품질을 유지하는 것은 필요

745GB의 C4(Colossal Clean Crawled Corpus)는 기본적으로 다음과 같은 방법을 통해 필터링이 된 데이터셋이다. deduplication, removing bad words, only retaining sentences, etc

이 필터링 작업이 의미가 있었는지에 대해서 실험을 하였고 위의 결과를 보면 필터링을 하지 않았을 경우 성능이 매우 떨어지는 것을 확인할 수 있다. 

 

어떻게보면 당연한 이야기지만 개인적으로는 꽤 중요한 부분이라고 생각하는데, 각 토큰 별로 1:1로 Masking을 하는 것이 아니라 Span 처리를 하기 때문에 예를 들어 진짜 웃기네 <Sentinel 0> 로 돼있을 경우 ㅋ인지 ㅋㅋ인지 ㅋㅋ인지 ㅎ 인지 ㅎㅎ인지 ㅎㅎㅎ인지 모델 입장에서는 더 어려울 수 있고 안좋은 데이터 품질의 영향이 상대적으로 더 큰 노이즈가 된다고 생각한다. 정상적인 문장이어도 사실 전처리가 된 입력 데이터들을 보면 쉽지 않다는 생각이 드는데 여기에 더 노이즈가 끼면 성능에 영향을 줄 수 있다고 생각한다

 

또한 영어에 비해 한국어는 더 선택지가 많고 자주 사용되는 PLM Data들의 품질에 대해서 애매하다는 느낌을 받는 경우가 많았기 때문에 대용량 데이터의 확보도 중요하지만 몇가지 전처리 외에도 데이터 자체의 품질에 대해서도 생각을 해볼 필요가 있을 것 같다.

 

2) 같은 데이터 반복 학습, 데이터셋 크기

위의 표와 그래프를 보면 Pre-train시에도 데이터셋은 큰 편이 좋은 것을 알 수 있다. 전체적으로보면 64번까지 데이터를 반복하는 것은 큰 성능 하락 없이 준수한 성능을 보여줬지만 그 이후로는 반복 횟수가 늘어날수록 성능이 떨어지는 것을 볼 수 있다. 위의 결과를 보면 Train Loss가 Finetuning 성능에 직결되지는 않는 것을 알 수 있다. 저자들은 이 이유를 모델이 example을 기억해서 그런 것이라고 이야기하는데 결국에는 이것도 일종의 과적합이라고 보면 될 것 같다. 같은 수준의 자원이라면 데이터를 반복 학습시켜서 Pre-train시의 Train Loss를 줄이는 것보다는 데이터셋의 크기 자체를 늘리는게 유리하다는 것을 알 수 있다.

 

5. 학습 전략

 

1) Adapter layers, Gradual unfreezing

결론은 두 방법 모두 모든 파라미터를 학습시키는 방법에 대해 성능이 떨어졌기에 두 가지 방법에 대해서 여기서 자세히 다루진 않겠다. Adapter layer의 경우 lower-resource Task(SQuAD)에서는 d가 더 낮더라도 성능이 더 유지가 됐지만 더 어려운 Task일 수록 d가 높아야 성능이 더 유지가 됐다.

 

2) Multi-task learning

T5는 기본적으로 위에서 설명한 Replace Span을 이용한 Unsupervised Objective를 사용한다. 저자들은 여기서 Multi-task learning도 아래와 같이 실험을 진행하였다. 결과적으로는 Unsupervised Objective로 pre-training을 하는 것이 성능이 가장 좋았다고 한다. Multi-task learning 실험을 진행하기 위해 데이터셋의 비율을 고려해야할 것이 많았던 점을 감안하면 Unsupervised Objective를 사용하는 것이 좋아보인다. 

또한 Multi-task learning을 하더라도 결국 finetuning을 추가적으로 해줄 때 더 성능이 좋았다. 여러 부분에서 T5의 논문을 보면 Unsupervised Objective pre-train + finetuning이 여러모로 좋은 조합으로 보인다.

 

6. Scaling

scaling이 모델의 성능을 향상시킨다는 것은 이미 알려진 사실이다. T5에서는 아래의 각 scaling 방법을 실험하였다.

결론적으로 어떤 방식이던 scaling을 수행할 경우에 성능 향상을 보여줬다. 다만 T5 논문에서는 각 방법들이 장단점을 갖는다고 했는데, 예를 들어 더 큰 모델을 사용할 경우에는 그만큼 finetuning과 inference에 더 많은 비용이 들어간다. 반면에, 더 작은 모델을 사용할 경우에는 더 오래 pre-train을 학습해야하기 때문에 그 부분에서 비용이 더 들어간다고 이야기한다. n x ensembled의 방법도 마찬가지였는데 결국 n배의 더 큰 모델을 사용하는 것과 비슷한 비용이 들어가고 결과적으로 어떤 부분을 scaling할 것인지는 모델이 최종적으로 사용되는 상황을 고려해야한다고 이야기한다.

 

결론

T5는 NPL의 여러 Task들을 하나의 생성 모델 구조로 푸는 것을 제안한다. 그리고 그 하나의 모델이 좋은 성능을 내기 위해 어떻게 pre-train, finetuning을 해야하는지 여러가지 실험을 하였다. 대부분 pre-train에 대한 이야기다. 모델의 구조적인 부분에서는 Encoder-Decoder 모델을, Objective는 Denoising 중 Replace Span 방식을, 이때 Masking 비율은 15%, 평균 Span길이는 3으로 하는 것을 실험 결과 가장 좋은 성능을 낸 것으로 정리하고 있다. 데이터셋은 크면 클수록 좋았지만 데이터셋에 적절한 전처리를 하는 것이 필요하다. 여러가지 scaling은 전반적으로 더 좋은 성능을 보여줬지만 각각 장단점이 있기 때문에 최종적으로 어떤 상황에서 모델을 사용하는지 그 상황을 고려해야한다.

 

T5는 2020년 당시에 이러한 결론을 내리면서 여러가지 PLM에 대한 내용들을 정리하였고 2022년에는 UL2 논문이 마찬가지로 비슷한 역할을 한 것 같다. UL2에 있어서도 T5때와 마찬가지로 여러 모델 구조들을 실험하고 Encoder-Decoder 모델이 가장 좋은 성능을 보인다고 결론짓는다. 또한 Objective도 Replace Span을 제안한다. 다만 T5에서 15%, Span길이 3을 사용하는 것과 달리 Span길이와 비율 등을 달리 설정하는 3가지 Objective를 혼합해서 사용한다. 각각의 다른 Objective들이 학습 과정에서 PLM이 각각 다른 부분들을 더 잘 학습하게 만든다고 한다. 또한 사용하는 모델 구조도 T5를 사용한다. 또한 Encoder-Decoder Prefix-LM 구조들(Prefix-LM,Uni-LM)도 좋은 성능을 보인다고 한다. 초거대언어모델은 사실상 시도할 수 있는 곳이 제한적이기 때문에 적절한 크기의 Encoder-Decoder 모델을 잘 만들어서 데이터나 도메인, Task에 최적화시키는 능력이 앞으로도 계속 중요해질 것 같다.

 

Reference

 

Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer

https://arxiv.org/pdf/1910.10683.pdf

 

Unified Language Model Pre-training for Natural Language Understanding and Generation

https://arxiv.org/pdf/1905.03197.pdf