논문 : https://arxiv.org/pdf/1901.11504.pdf
MT-DNN은 BERT에 Multi-task learning(GLUE TASK 9개 활용)을 수행하여 성능 개선한 모델
다음 Task에서 SOTA 성능(BERT보다 높음)
: nlp에서 word 혹은 sentence의 vector representation을 생성하는 방법 두가지
Language Model Pre-Training
Multil-task learning
Book Corpus, Wikipedia Data를 활용하여 다음 2가지 방식으로 학습
Masked Word Prediction
Next Sentence Prediction
Supervised Task를 1개의 모델을 통해 학습
MTL의 이점
#9개 glue 태스크를 본 논문에서는 다음의 4가지로 분류
하나의 문장이 Input으로 주어졌을 때 class를 분류하는 Task - CoLA(문장이 문법적으로 맞는지 분류), SST-2(영화 Review 문장의 감정 분류)
문장 쌍이 주어졌을 때, 점수를 예측하는 Regression Task - STS-B(문장 간의 의미적 유사도를 점수로 예측)
문장 쌍이 주어졌을 때, 문장의 관계를 분류하는 Task - RTE,MNLI(문장 간의 의미적 관계를 3가지로 분류 : Entailment, Contradiction, Neutral), QQP,MRPC(문장 간 의미가 같은 여부를 분류)
질문 문장과 지문이 주어졌을 때, 지문 중 정답이 있는 문장을 Ranking을 통해 찾는 Task - QNLI(질문, 지문 중 한 문장이 쌍으로 주어졌을 때 해당 지문 문장에 질문의 답이 있는지 여부 분류 → MT DNN에서는 이를 Rank 방식으로 바꾸어 모든 지문 문장에 정답이 있을 가능성을 점수화하여 가장 높은 지문 문장만을 True로 분류함)
이 4개로 분류된 9개 태스크를 mt dnn 이 버트라는 하나의 모델로 학습해서 성능을 높였다는 것이 본 논문의 핵심 아이디어
MT-DNN model의 구조
하위 layer(BERT의 Transformer 구조와 동일)는 모든 task에 공유되고, 가장 상위의 레이어는 task별로 다르게 구성.
shared layer는 버트와 동일, task specific layer는 버트와 같은것도 다른것도 있음
Lexicon Encoder () :
BERT의 임베딩 방식과 동일. X = {x1, ..., xm} sequence가 input으로 들어오면 Embedding vector로 바꿔줌.
인풋을 생성하는 layer 로 ~~의 세가지 임베딩으로 구성
token embedding 각 토큰에 대한 임베딩
sentence~ : 첫번째 문장인지 두번째 문장인지를 알려주는 임베딩
position~ : 각 토큰의 위치에 대한 임베딩
이런식으로 인풋이 형성이 되면 이를 트랜스포머의 셀프어텐션에 넣어 각 토큰의 임베딩 벡터를 추출함
Transformer Encoder () :
Lexicon Encoder () 의 임베딩 벡터를 입력으로 받아서 multilayer bidirectional Transformer encoder 를 사용하여 각 Token의 Output Vector를 추출함. 이때 BERT에 더해서 MT-DNN 은 multi-task objectives를 사용하여 학습함.
Single-Sentence Classification Output #버트와 같은 레이어
Transformer Encoder () 로부터 얻은 output vector의 [CLS] 토큰은 contextual embedding 을 진행한 벡터로 볼 수 있음.
하나의 문장을 분류하는 Classification Output은 다음과 같이 계산
: [CLS] Token
과 Task Specific Parameter
의 곱에 Softmax를 취하여 각 Input Sentence X
가 각 class에 속할 확률을 계산
Text Similarity Output : #위와 비슷 리그레션이니까 sigmoid로 바꾼 것
Transformer Encoder () 로부터 얻은 output vector의 [CLS] 토큰은 문장쌍 (X1,X2)의 semantic representation으로 볼 수 있음.
Sentence pair로 이루어진 (X1, X2)의 유사도는 다음과 같이 계산
Pairwise Text Classification Output :
NLI task를 예로 들면, 전제 premise P = (p1, ..., pm) 와 가설 hypothesis H =
(h1, ..., hn) 이 있을 때, 이 둘의 논리적 관계인 R을 찾는 것이 목적. 이를 위해 stochastic answer network (SAN)을 사용하는데, RNN을 이용하여 K-step Reasoning을 하는 것이 특징
#두 문장이 있을 때 한번에 문장 간 관계를 분류하기가 쉽지 않음 . 여러 단계가 필요하겠다는 것이 main idea
각 K step 마다,
두 문장 자체의 Embedding Vector, 그리고 두 문장 간 관계(차의 크기와 Dot Product)를 concat하여 구성된 Vector를 활용하여 문장 간 관계를 분류
→ 최종적으로 모든 K step에서 나온 output vector를 평균
Relevance Ranking Output :
QNLI task를 가정하면, 다음과 같이 relevance score을 계산
x
: the contextual embedding vector of [CLS] which is the semantic representation of a pair of QuestionMT-DNN은 훈련 절차
1((X,c)는 이진수 표시기( 맞는 class이면 1, 아니면 0)
Pr은 위의 식 1,4에 정의됨
text similarity tasks(ex.STS-B)에서는 각 문장쌍이 실제 값 점수 y로 명시되어 있으면 MSE를 사용함.
Sim은 위의 식 2에서 정의됨
relevance ranking tasks에서는 pairwise learning-to-rank 패러다임 사용함.
QNLI를 예로 들면 쿼리 Q가 주어지면, 정답을 포함하는 긍정적인 예 A+와 |A|-1개의 부정적인 예를 포함하는 후보 답변 목록을 얻음. (8)
(9) Rel은 위의 식 (5)에서 정의됨.
r(감마)은 tuning factor로 데이터에 따라 결정되며 이 실험에선 단순히 1로 정한다.
A=A+∪A− (A+: 정답, A−: negative sample)
다른 후보들에 비해 정답이 가장 큰 확률을 갖도록 정답 확률의 negative log likelihood를 최소화하는 방향으로 학습.
GLUE, SNLI, SciTail의 세가지 인기있는 NLU 벤치마크에서 MT-DNN을 평가한다.
실험 방법
Figure 2
실험결과
Adapted model을 비교해본 결과, 다른 모델에 비해 MT-DNN(LARGE)가 두 데이터셋에서 모두 SOTA 상태.
MT-DNN