자, 오늘은 X:AI Seminar 2024에서 진행한 MT-DNN 논문 리뷰를 가져왔습니다.
해당 논문은 2019년에 발표된 논문입니다.
Multi-Task Deep Neural Networks for Natural Language Understanding
저자 : Xiaodong Liu, Pengcheng He, Weizhu Chen, Jianfeng Gao
[1] Introduction
MT-DNN이란 Multi-Task Deep Neural Networks for Natural Language Understanding의 약자로 이름처럼 BERT 모델에 Multi-Task Learning을 수행해 성능을 개선한 모델입니다. MT-DNN은 다양한 Task의 Supervised Dataset을 활용해 학습을 시킨 것이 특징입니다. 여기서 말하는 Supervised Dataset이란, Label Data, 즉 정답이 있는 데이터를 대용량으로 학습을 시켰다는 의미입니다.
MT-DNN을 이해하기 위해서는 먼저 BERT 모델을 이해할 필요가 있습니다. 그래서 BERT 모델에 대해 간단히 설명을 해보자면, 먼저 Deep Bidirectional 모델이며 Pre-training, Fine-tuning 두 부분을 나눠서 각각 따로 학습시킨 언어모델입니다. 대용량의 Unsupervised Dataset을 활용해 학습했다는 특징이 있구요. 여기서 얘기하는 Unsupervised Dataset이란 Book Corpus나, Wikipedia처럼 Unlabeled Data, 즉 자유로운 형식의 텍스트 데이터를 얘기합니다. 그리고 사전 학습 과정에서 MLM, NSP의 두 Task를 수행하고자 했습니다. 그에 반해 MT-DNN은 BERT 기반의 1가지 모델로 다양한 Task의 Supervised Dataset을 학습한 것이 BERT와 가장 큰 차이점이 되겠습니다. 그런데 Supervised Dataset은 데이터양이 제한되어 있다는 것이 문제입니다. 아무래도 정답이 있는 데이터 특성상 정제가 된 데이터이기 때문에 양이 제한적일 수밖에 없죠. 하지만 한 가지 Task가 아닌 여러 Task의 Dataset을 모두 활용하기 때문에 이러한 데이터 양적인 문제를 해결했습니다. 또한 이렇게 여러 Task의 데이터셋을 활용해서 학습을 시켰더니 특정 Task에 과적합, 과몰입되지 않도록 규제되는 효과까지 있었다고 논문에서 언급하고 있습니다.
[2] Tasks
다음은 Task입니다. MT-DNN은 총 9가지의 GLUE Task에 대해 학습을 진행했습니다. 9가지의 GLUE Task를 크게 4가지로 또 분류하였고 그 4가지가 아래 사진의 왼쪽에 나와 있는 4 항목입니다.
2-1. Single-Sentence Classification
첫 번째로 Single-Sentence Classification을 수행했는데 이는 하나의 문장이 주어졌을 때 문장의 Class를 분류하는 Task입니다. 대표적으로 COLA, SST-2 Task를 학습했고 콜라는 문장이 문법적으로 맞는지 분류하는 이진분류 Task, SST-2는 영화 리뷰 문장이 긍정인지 부정인지 이진분류하는 Task입니다. 계산하는 식은 아래와 같은데 BERT에서처럼 CLS Token을 참고해서 태스크의 특정 파라미터와 결합해 Softmax 함수를 씌워주는 방식으로 계산한다고 합니다.
2-2. Text Similarity
두 번째로 Text Similarity입니다. 이는 문장 쌍이 주어졌을 때, 점수를 예측하는 회귀 Task입니다. 대표적으로 STS-B Task를 수행했고 이는 문장끼리의 의미적인 유사도를 점수로 예측하는 Task입니다. 똑같이 CLS Token을 받아 태스크에 맞는 파라미터와 결합해 이번에는 Sigmoid 함수로 계산한다고 합니다.
2-3. Pairwise Text Classification
세 번째로 Pairwise Text Classification인데 이는 문장 쌍이 주어졌을 때, 문장의 관계를 분류하는 Task입니다. RTE나 MNLI처럼 문장 간의 관계를 일치, 모순, 중립 등으로 3가지로 분류하는 Task, QQP나 MRPC처럼 같음 여부만 이진분류하는 Task를 수행했습니다.
여기서 한 가지 특징적인 부분이 하나 더 있는데, 바로 Stochastic Answer Network, SAN입니다. SAN의 핵심 Idea는 Multi-Step Reasoning입니다. 예시를 통해 이해해보겠습니다.
- 문장 1 : 그녀는 책을 읽으며 커피를 마셨다.
- 문장 2 : 그녀는 동시에 두 가지 일을 했다.
- 두 가지 일 = 책을 읽다, 커피를 마시다 (유추)
- 그 후 두 문장이 비슷한지 예측
문장 1은 그녀는 책을 읽으며 커피를 마셨다. 라는 문장이고, 문장 2는 그녀는 동시에 두 가지 일을 했다. 라는 문장입니다. 인간이 봤을 때는 의미가 일치하는 문장이죠. 하지만 SAN은 모델이 이를 스텝별로 계산을 하게 한 겁니다. 무슨 얘기냐 하면, 먼저 책을 읽다, 커피를 마시다 라는 두 가지 동작이 문장 2에서 설명하는 ‘두 가지 일’이라는 키워드와 의미가 통하는지 유추하는 것이 첫 번째 스텝. 그리고 결국 두 문장이 비슷한지 예측하는 스텝이 필요하겠죠. 그래서 이 예시에서는 총 스텝이 2번 필요할 겁니다.
각 스텝에서는 RNN으로 아래 식에 기반해 문장 간 벡터, 거리, 유사도를 계산 후 Softmax 함수에 씌워서 결과를 냅니다. 이를 K번 수행하고 결국 소프트맥스 함수를 씌운 K개의 결과값들의 평균으로 최종 결과를 예측하는 것이 SAN입니다. 옆 사진에 나와 있는 수식을 통해 추가적인 이해를 하시면 좋겠네요.
2-4. Relevance Ranking
네 번째로 Relevance Ranking인데, 이는 질문과 지문 문장이 주어졌을 때 지문 중 정답이 있는 문장을 Ranking 방식을 통해 찾는 Task입니다. 대표적으로 QNLI Task를 진행했고 QNLI는 주어진 지문 안에 질문의 답이 있는지 여부를 이진분류 하는 Task입니다. 이진분류 Task를 MT-DNN에서는 Rank 방식으로 바꾸어, 모든 지문 문장에 대해서 점수를 매기고 가장 점수가 높은 문장에 대해서 이진분류하는 Task로 바꿔서 수행했다고 합니다.
[3] Model Architecture
다음은 모델 Architecture & Training 부분입니다. MT-DNN은 크게 Shared Layers와 Task Specific Layers로 구성되어 있습니다. 모델 학습 시에는 무작위로 특정 Task의 Data를 Batch로 뽑아서 학습시켜주었고 이렇게 된다면 아래에 있는 Shared Layers는 계속 반복해서 학습이 되겠죠. 이러한 발상은 스키를 잘타는 사람이 그렇지 않은 사람보다 보드를 잘 탈 가능성이 높다는 생각으로 이렇게 했다고 합니다. 그리고 추가적으로 Lexicon Encoder와 Transformer Encoder가 있는데 둘 다 BERT 모델과 똑같은 형태를 가지고 있습니다.
[4] Experiments
다음은 실험 부분입니다. 첫 번째 실험은 MT-DNN이 9가지 GLUE Task에 대해 학습을 시켰다고 위에서 얘기했습니다. 그에 대한 성능 평가이고 전체 총 Score는 BERT보다 약 2.2% 상승했구요. 이 표에서 검은색 Bold체로 표시되어 있는 부분은 당시 SOTA를 달성한 분야이고, 파란색 Bold체로 표시되어 있는 부분은 인간보다 더 뛰어난 성능을 보여준 분야입니다. 사실 사람보다 더 좋은 성능을 냈다는 게 이번 논문 발표를 준비하면서 가장 신기했던 부분인데,,, 아무튼 그렇습니다. 그리고 특히 데이터 양이 적은 MRPC나 RTE 등의 Task에서 성능 향상이 돋보였는데 이는 데이터가 적어도 다른 Task에서 학습한 정보를 모델이 잘 활용한 결과라고 할 수가 있겠습니다. 그리고 이는 처음에 논문 저자들이 이루고자 했던 목표를 잘 달성했다고 할 수도 있겠네요.
두 번째 실험은 BERT와 ST-DNN, MT-DNN을 성능 비교한 내용입니다. 여기서ST-DNN 이라는 새로운 모델이 나오는데 ST-DNN은 Single Task DNN의 약자로 사전 훈련된 BERT 모델을 그대로 쓰고 fine-tuning 단계에서 SAN 방식으로 학습을 시킨 모델입니다. 그래서 뭐 좋아지긴 했지만, BERT 모델과 큰 성능 차이는 없었고 단지 QNLI에서 BERT와 다르게 Ranking 방식을 사용해서 성능이 유의미하게 오른 결과를 볼 수 있었습니다.
세 번째 실험은 학습 데이터 양에 따른 BERT와 MT-DNN의 성능 비교인데요. 학습 데이터를 0.1%, 1%, 10%, 100%로 구분해서 성능을 비교한 그래프입니다. 보시면 MT-DNN이 확실히 데이터가 적을 때 성능이 좋았고 이는 Multi-task로 이미 다른 Task에서 학습된 정보들을 참고했기 때문에 성능이 좋지 않을까 싶네요.
[5] Conclusions
- MT-DNN은 Multi-Task DNN의 약자로 다양한 Task의 Supervised Dataset을 활용해 학습을 진행
- 특정 Task가 아닌 다양한 Task의 Dataset을 활용하기 때문에 데이터 양을 충당할 수 있었음
- '스키를 잘 타는 사람이 보드도 잘 탈 것이다!' 라는 생각에서 이 아이디어가 비롯됨
- 9개의 GLUE Task 유형을 학습시켰고, 이를 또 다시 4개의 Task로 나누어서 학습을 진행
- Pairwise Text Classification Task에서 SAN(Stochastic Answer Network) 방식을 활용
- Relevance Ranking Task에서 BERT와는 다르게 Ranking 방식을 활용
- 8개의 GLUE Task, SNLI와 SciTaill Task에서 SOTA 달성
- 데이터 양이 적을 때 성능 향상이 더 크게 일어났음
[6] References
https://www.youtube.com/watch?v=wyQnuXmXOAs
https://y-rok.github.io/nlp/2019/05/20/mt-dnn.html
'논문리뷰' 카테고리의 다른 글
[논문리뷰] XL-Net (0) | 2024.07.03 |
---|---|
[논문리뷰] Transformer (0) | 2024.06.26 |
[논문리뷰] BART (2) | 2024.05.15 |
[논문리뷰] BERT (0) | 2024.04.30 |
[논문리뷰] Sequence to Sequence Model (0) | 2024.03.19 |