다운 스트림 작업과 유사한 대규모 데이터 세트에 대한 사전 교육을 통해 SoTA을 얻는다고 한다.
1 Introduction
최근, 다양한 language understanding 테스크에 대한 SoTA 벤치마크에 대한 중요한 향상은 deep pre-trained language models을 fine-tuning 하면서 달성되었다.
이 연구에서 우리는 아래 테스크의 클래스를 위한 접근법으로 접근 방식의 향상을 탐구한다.
테스크: input context가 주어졌을 때, retrieval(검색) 및 대화 테스크 사이들에서 공통적인 설정에서 다중 문장을 scoring하는 것으로 candidate labels의 셋을 점수매긴다.
이러한 테스크에서의 성능은 두 가지 측면에서 평가된다.
prediction quality
prediction speed (많은 candidates을 scoring하는 것은 매우 느릴 수 있기 때문)
최근 SOTA는 pre-training한 BERT을 사용한 모델에 초점을 맞추는 것으로 다음의 일반적인 주제에 대해 학습이 된다.
Wikipedia and the Toronto Books Corpus
(Zhu et al., 2015).
fine-tuned 구조는 일반적으로 top에 다음과 같이 두 가지 구조가 있을 수 있다.
Bi-encoders and
Cross-encoders.
이제 말하는 것은 논문의 그림을 보면 이해하기 쉬우니 밑에 그림 1을 먼저 봐보자..
Cross-encoders (Wolf et al., 2019; Vig & Ramea, 2019)은 주어진 input과 label 후보들에대해 full (cross) self-attention을 수행하고 더 높은 정확도를 달성하는 경향이 있다.
Bi-encoders (Mazare et al., 2018; Dinan et al., 2019)은 input과 label 후보에 대해 self-attention을 분리해서 하고 final representation에서 결합하는 식이다.
representations이 분리되어 있기 때문에, Bi-encoders은 encoded candidates을 캐시로 가져가고 이들의 representations을 각 입력에 대해 재사용해서 빠른 prediction 시간을 얻을 수 있다.
Cross-encoders은 각 input과 label에 대해 encoding을 재계산해야되고 그 결과로 테스트 타임에서는 매우 느리다.
이 연구에서는, 우리는 현재 SoTA에 비해 quality와 speed 모두 향상시키는 새로운 contributions을 제공한다.
우리가 소개하는 것은 Poly-encoder으로 추가적인 attention 메커니즘을 배워서 self-attention을 수행하는 것보다 많은 global features을 표현한다.
결과로 Bi-encoders에 비해 성능 이득을 얻고 Cross-encoders에 비해 속도 이득을 얻는다.
우리 구조를 pre-train을 하기위해, 우리는 다운스트림과 유사한 방대한 데이터를 선택하면, BERT pre-training 보다 눈에띄는 이득을 얻는다.
pre-train과 fine-tune 테스크가 비슷한 데이터로 한다?
우리가 시도하는 모든 다른 구조 선택과 다운스트림 테스크에서도 마찬가지입니다.
우리는 새로운 접근법들을 비교하는 실험을 진행한다.
추가적으로 기존의 방법들의 다양한 셋업에서 최고로 작동하는 것을 분석한다.
dialogue , information retrieval (IR) 영역의 기존의 4가지 데이터세트에서 Wikipedia/Toronto Books에 대비하여 Reddit을 기반으로한 pre-training 전략을 사용하여 분석한다.
즉 pre-training할 때, 코퍼스도 바꿔보고 데이터세트는 dialogue, IR에서 쓰이는 4가지에 대해 분석한다는 말
우리는 4가지 데이터세트에서 SoTA을 달성하는 우리의 최고 구조와 pre-training 전략을 얻었을뿐 아니라 real-time에서 사용하기위한 실용적인 implementations을 할 수 있다.
Our code and models will be released open-source.
2 Related Work (번역)
입력 컨텍스트가 주어지면 후보 레이블에 점수를 매기는 작업은 기계 학습의 고전적인 문제입니다.
멀티 클래스 분류는 특별한 경우이지만보다 일반적인 작업은 후보를 개별 클래스가 아닌 구조화 된 객체로 포함합니다.
이 연구에서 우리는 입력과 후보 레이블을 일련의 텍스트로 간주합니다.
입력과 후보 레이블을 공통 피처 공간에 개별적으로 매핑하는 광범위한 모델 클래스가 있으며, 일반적으로 내적, 코사인 또는 (파라미터 화 된) 비선형 성이 유사성을 측정하는 데 사용됩니다.
우리는이 모델들을 바이-인코더라고합니다. 이러한 방법에는 벡터 공간 모델, LSI, 감독 된 임베딩 및 클래식 샴 네트워크가 포함됩니다.
이 연구에서 고려할 다음 발언 예측 작업을 위해, 여러 Bi-encoder 신경 접근법, 특히 입력 및 후보 레이블을 개별적으로 인코딩하는 LSTM 및 CNN뿐만 아니라 메모리 네트워크 및 트랜스포머 메모리 네트워크가 고려되었습니다.
Bi-encoder 방법의 주요 장점은 크고 고정 된 후보 세트의 표현을 캐시하는 기능입니다.
후보 인코딩은 입력과 독립적이므로 Bi-encoder는 평가 중에 매우 효율적입니다.
연구자들은 또한 입력과 후보 라벨 사이의 유사성 점수 함수에 대해 어떠한 가정도 하지 않는 크로스 엔코더(Cross-encoder)라고 부르는 보다 풍부한 등급의 모델들을 연구했다.
대신 입력과 지원자의 결합은 원하는 의존성을 기반으로 일치점을 매기는 비선형 함수에 대한 새로운 입력으로 작용한다.
이는 순차적 매칭 네트워크 CNN 기반 아키텍처, 딥 매칭 네트워크, 게이트 자체 주의력 및 가장 최근의 변압기를 통해 탐구되었다.
후자의 경우, 텍스트의 두 시퀀스를 연결하면 모든 계층에 자기 주의력을 적용하게 된다.
이것은 후보 라벨의 모든 단어가 입력 컨텍스트의 모든 단어와 그 반대편에 있을 수 있기 때문에 입력 컨텍스트와 후보 사이의 풍부한 상호작용을 산출한다.
우르바넥 외 연구진(2019)은 사전 훈련된 BERT 모델을 채용하고, Bi와 Cross-encoder를 모두 미세 조정하여 대화와 행동 과제에서 명시적으로 비교하고, Cross-encoder가 더 잘 수행한다는 것을 알아냈다.
그러나 성능 향상에는 상당한 계산 비용이 소요된다.
교차 인코더 표현은 계산이 훨씬 더 느려서 일부 응용 프로그램을 실행할 수 없게 만든다.
3 Tasks
우리는 대화에서 sentence selection와 IR에서 article search의 테스크를 고려한다.
대화에서 sentence selection은 많은 연구가되었고 최근에 두가지 컴페티션이 있었다.
Neurips ConvAI2 competition (Dinan et al., 2020),
DSTC7 challenge, Track 1
우리는 이 두자기 테스크를 추가적으로 비교하고, 우리는 유명한 Ubuntu V2 corpus로 테스트해본다.
IR에서는 우리는 Wikipedia Article Search task of Wu et al. (2018)을 사용한다.
The ConvAI2 task is based on the Persona-Chat dataset (Zhang et al., 2018a) which involves dialogues between pairs of speakers.
각 화자에게는 페르소나가 주어지며, 예를 들어 모방 할 인물을 묘사하는 문장이 몇 개 있습니다.
예) “I love romantic movies”
그런 다음 모델은 대화 기록 및 페르소나 라인에서 선택한 응답을 조정해야합니다.
경쟁에서 자동 측정 기준으로 각 반응에 대해 모델은 20 개의 선택 세트에서 올바른 주석이 지정된 발화를 선택해야하며, 나머지 19 개는 평가 세트에서 임의로 무작위로 선택된 발화입니다.
그러나 최종 시스템에서는 100k 이상의 발화로 구성된 전체 교육 세트에서 검색하지만 일반적인 평가 설정의 속도 때문에 피할 수 있습니다.
이 작업에서 23 명의 참가자 중 최고의 성과를 거둔 경쟁 업체는이 작업에 맞게 미세 조정 된 사전 훈련 된 Transformer를 사용하여 테스트 세트에서 80.7 %의 정확도를 달성했습니다 (Wolf et al., 2019).
DSTC7 challenge (Track 1)은 Ubuntu chatlogs으로부터 대화를 추출하여 구성한 것이다.
한 파트너는 다른 파트너로부터 다양한 우분투 관련 문제에 대한 기술 지원을 받는다.
가장 좋은 성능을 가진 competotr (with 20 entrants in Track 1)은 64.5% R@1이다.
Ubuntu V2는 비슷하지만 더 큰 유명한 코퍼스이며 competition전에 만들어졌다 (Lowe et al., 2015).
we report results for this dataset as well, as there are many existing results on it.
마지막으로는, 우리는 Wikipedia Article Search으로 평가를 한다.
영어 위키백과 2016-12-21 덤프(약 5M 기사)를 이용해 search query로 article에서 문장을 받아 출처 article를 찾는다.
평가에서는 retrieval metrics를 사용하여 실제 article(문장을 뺀 것)를 다른 기사 1만 개와 비교하여 순위를 매긴다.
이것은 가장 관련성이 높은 기사(웹 문서)를 검색하고자 하는 시나리오와 같은 웹 검색을 모방한다.
가장 잘보고 된 방법은 fastText, SVM 및 기타 기준을 능가하는 학습 순위 매립 모델 인 StarSpace입니다.
4개의 데이터 집합과 그 통계를 표 1에 요약한다.
4 Methods
4.1 Transformers and Pre-training Strategies
Transformers
Our Bi-, Cross-, and Poly-encoders, described in sections 4.2, 4.3 and 4.4 respectively, are based on large pre-trained transformer models with the same architecture and dimension
as BERT-base (Devlin et al., 2019), which has 12 layers, 12 attention heads, and a hidden size of
768.
As well as considering the BERT pre-trained weights, we also explore our own pre-training
schemes.
--> 구체적으로, BERT-base와 똑같은 구조를 사용하여 두 개의 transformers을 pre-train한다.
하나는 BERT-base와 유사한 훈련 설정을 사용하여 Wikipedia and the Toronto Books 코퍼스에서 추출한 [INPUT, LABLE]의 1억 5천만 개를 학습하고
다른 하나는 온라인 플랫폼 Reddit(Mazare et al., 2018)에서 추출한 [INPUT, LABLE]의 예시 1억 7억 7천 4백만개를 학습하는데 사용하는데, 이는 대화에 좀 더 적응된 데이터 집합이다.
전자는 BERT와 유사한 설정을 재현하는 것이 이전에 보고된 것과 동일한 결과를 우리에게 제공하는지 확인하기 위해 수행되며 (즉 기존의 BERT와 똑같고)
그런데 기존의 BERT는 모델이 이미 있는데 똑같은 작업을 왜 굳이 재현하는 거지?
후자는 관심있는(여기서 수행할) 다운스트림 작업과 더 유사한 데이터에 대한 pre-training이 도움이 되는지 테스트한다.
두 가지 새로운 설정을 모두 교육하기 위해 XLM(Lample & Connectau, 2019)을 사용했다.
Input Representation
Our pre-training input is the concatenation of input and label [INPUT,LABEL], where both are surrounded with the special token [S], following Lample & Conneau
(2019).
Reddit에서 pre-training을 할 때 input은 context, label은 next utterance이 된다.
Wikipedia and Toronto Books에서 pre-training을 할 때, BERT처럼 input은 하나의 문장, label은 next sentence이다.
각 token은 3가지 embeddings의 합으로 표현이 된다.
the token embedding
the position (in the sequence) embedding
the segment
embedding.
입력 tokens의 segments은 0이고 label tokens은 1이다.
Pre-training Procedure
우리의 pre-training 전략은 masked language model (MLM) 테스크로 BERT와 동일하다.
Wikipedia and Toronto Books을 pre-training을 할 때, 우리는 next-sentence prediction task을 BERT 학습할 때와 똑같이 추가하였다.
Reddit으로 pre-training할 때, next-utterance prediction task을 추가하였고 이것은 several sentences으로 utterances가 구성될 수 있어서 이전의 것과는 조금 다르다. (signle next sentence가 아닌 multiple next sentence 라는 것)
학습 중 candidate는 50%가 실제 sentence/utterance이고 50%는 데이터 집합에서 무작위로 추출한 sentence/utterance이다.
우리는 MLM task와 next sentence/utterance prediction task 사이를 번갈아 학습한다.
Lample & Conneau (2019)와 같이 우리는 Adam optimizer로 다음과 같은 세팅을 가진다.
learning rate of 2e-4, β1 = 0.9, β2 = 0.98
no L2 weight decay
linear learning rate warmup
inverse square root decay of the learning rate.
우리는 모든 layers에서 dropout 확률을 0.1을 사용하고 비슷한 길이를 가지는 [INPUT, LABEL]의 concatenations으로 구성된 32000 tokens을 batch로 사용한다.
Bi-encoder, Cross-encoder and newly proposed Poly-encoder.
4.2 Bi-encoder
In a Bi-encoder, both the input context and the candidate label are encoded into vectors:
T1와 T2는 두 개의 transformers으로 4.1에서 말한 pre-trained 과정을 따른 것이다.
이 둘은 같은 weights으로부터 시작하나 fine-tuning되면서 분리되서 업데이트 된다.
T(x) = h1, .., hN is the output of a transformer T
red(·) is a function that reduces that
sequence of vectors into one vector.
입력과 label은 분리되어서 encoded 되기 때문에 여기서는 segment tokens이 0으로 동일하게 설정한다.
pre-training 하는 것과 비슷하게 하기 위해, input과 label 모두 special token [S]으로 둘러싸여있고 그래서 h1은 [S]에 대응된다.
위 pre-training할 때, input과 label 구분짓는 [S]을 사용했었던 걸 그대로 함.
우리는 red(·)을 통하여 output을 하나의 representation로 줄이는 것을 3가지 방법으로 고려한다.
choose the first output of the transformer (corresponding to the special token [S]),
compute the average over all outputs
the average over the first m ≤ N outputs.
우리는 이것을 Appendix에 있는 Table 7에서 비교한다.
결론은 우리는 transformer의 first output을 실험에서 사용했고 이것이 조금 더 좋은 결과를 보여준다.
Scoring
dot-product 가 주어질 때, candidate cand_i의 점수이다.
네트워크는 들의 logits이 cross-entropy loss을 최소화호도록 학습이되고 이 correct label이다.
Similar to Mazare´ et al. (2018), during training we consider the other labels in the batch as negatives.
이것은 학습이 더욱 빨라지게하고 각 candidate에 계산된 embeddings을 재사용할 수 있고 더 큰 batch size을 사용할 수 있다.
우리의 실험은 ConvAI2에서 했고 512 batches을 사용할 수 있다.
ConvAI2의 데이터세트에서 context(대화 히스토리)와 next sentence 사이의 점수를 매기는 네트워크를 학습할 때, distractor은 negative samples로 사용이 되었다는 말이다.
Inference speed
우리가 알고있는 candidates에서 검색의 세팅에서 Bi-encoder은 시스템에서 모두 가능한 candidates의 embeddings을 미리 계산하도록 한다.
즉 입력이 들어올 때마다 계산하는게 아니고, candidates는 바뀌지 않으니까 미리 계산한다는 것이다.
context embedding 를 계산한 후, 유일하게 남은 작업은 와 모든 candidate embedding 사이의 dot product이며, 이는 현대 GPU의 수백만 명의 candidates로 확장될 수 있으며, FAISS(Johnson et al., 2019)와 같은 가장 가까운 라이브러리를 사용하여 잠재적으로 수십억 개의 dot product을 사용할 수 있다.
4.3 Cross-encoder
Cross-encoder은 input context와 candidate label 사이를 rich interactions을 하는 것으로 그들이 jointly encoded되어 final representation을 얻는다.
pre-training 과정과 유사하게, context와 candidate는 special token [S]으로 둘러싸이고 single vector으로 concatenated되어 하나의 transformer만을 사용한다.
We consider the first output of the transformer as
the context-candidate embedding:
first는 transformer을 통과한 시퀀스 vectors 중 첫 번째 vector을 취한다라는 것이다.
하나의 transformer을 사용함으로써, Cross-encoder은 context와 candidate 사이를 self-attention 수행하여 Bi-encoder보다 더 부유한 extraction을 얻을 수 있다.
trasnformers의 layers중에 candidate label은 input context을 취함으로써 Crossencoder은 candidate-senstivie input representation을 만들 수 있다.
그러나 Bi-encoder은 그럴 수 없다.
For
example, this allows it to select useful input features per candidate.
Scoring
하나의 candidate에 대해 score을 매기기 위해, linear layer W을 embedding 에 적용해서 vector을 scalar로 만들어줘야 한다.
즉 모든 cand에 대해서 위와 같이 매번 계산해야한다는 말
Bi-encoder에서 하는 것과 유사하게, 네트워크는 cross entropy loss을 최소화하도록 학습이 된다.
logits들은 s(ctxt, cand_1), ..., s(ctxt, cand_n)으로 cand_1이 correct candidate고 나머지는 negatives로 학습 셋에서 가져온 것이다.
Bi-encoder와 달리, 우리는 negative로서 batch의 다른 labels을 재사용할 수 없기 때문에 우리는 training세트에 제공된 외부 부정적인 라벨을 사용한다.
학습 데이터세트에서 candidates와 embeddings을 1대1 매칭을 할 수 가 없기 때문에 각 (ctxt, cand)쌍에 대해 매번 계산해야 된다는 것이다.
Bi-encoder은 따로 embedding을 하니까 각 cand와 embeddings을 1대1 매칭해둬서 재사용이 가능하다는 것이다.
The
Cross-encoder uses much more memory than the Bi-encoder, resulting in a much smaller batch size.
Inference speed
운나쁘게도, Cross-encoder은 candidate embeddings을 미리 계산할 수 없다.
inference time에서 candidate는 input context와 concatenated 해야만 하고 전체 모델의 forward pass을 통과해야만 한다.
그래서 이 방법은 큰 규모의 candidates으로 확장할 수 가 없다.
우리는 section 5.2에서 이러한 bottleneck에 대해 다룰 것이다.
4.4 Poly-encoder
Poly-encoder 구조는 Bi- and Cross-encoder의 두 세계의 장점을 가지는 목표를 가지고 있다.
candidate label은 Bi-encoder와 같은 방법으로 one vector로 표현한다.
이것은 fast inference time을 위해 candidates을 캐싱할 수 있게 한다.
또한 더 많은 정보를 추출하기 위해 Cross-encoder와 같이 input context는 candidate와 joiny하게 encoded할 수 있다.
Poly-encoder은 Bi-encoder와 비슷하게 context와 label을 위해 두 개의 transformer을 분리해서 사용하고 candidate는 single vector 으로 encode된다.
Bi-encoder에서 설명되어있지만, aggregate을 간단하게 첫 번째 token인 [S]의 vector로 사용한다고 한다.
Poly-encoder은 encoded responses의 캐시를 미리 계산해서 수행할 수 있는 방법이다.
그러나, input context는 전형적으로 candidate보다 길고 이는 m개의 vectors 으로 구성된다.
즉 Bi-encoder와 같이 한 개 대신 m개 vectors로 있고 m는 inference speed에 영향을 미친다.
이러한 input을 표현하는 m global features을 얻기 위해 우리는 m context codes 을 학습한다.
는 representation 을 이전의 layer의 모든 출력을 attending하여 추출한다.
다시 말해, 우리는 은 다음과 같다:
그림하고 비교해보면, h는 transformer ouput을 말하는 것 같다.
그것과 i-th 토큰에 해당하는 code ci을 이용해서 weight w을 구해서 weighted sum을 한게 =Emb가 되는 것이다.
m context codes는 랜덤 초기화 되며, finetuning 동안 학습이 된다.
즉 c는 랜덤 초기화후 학습이 된다는 것이다.
마지막으로는, m global context features이 주어지고, 우리는 을 query로 사용하여 그것들을 attend 한다.
그림하고 비교해보면, =Emb와 =Cand emb 이용해서 위 식처럼 weighted sum해서 하나의 vector로 만든다.
최종 candidate label에 대한 최종 score은 으로 Bi-encoder와 비슷하게 매겨진다.
m < N일 때 (N은 tokens의 수), context-candidate attention은 오직 top layer에서만 수행이되고 이것은 Cross-encoder의 full self-attention보다 매우 빠르다.
아마 말하고자 하는게, cross-encoder은 첫 번째 layer부터 full self-attention으로 차곡차곡 쌓는 형식이다.
하지만 poly-encoder은 각자 transformer을 태우고 맨 윗단에서 조합하는 식이다.
사실 이러한 방법이 MRC 논문들 보면 자주 등장하는 구조라 특별한 것은 없다.
개인적으로 구조자첸 컨트리부션이 없는데, 이렇게 하는 것이 속도도 빠르고 성능도 좋다는 것이 컨트리부션 아닐까 싶다.
5 Experiments
번역기 돌려서 간단히만 보자..
다양한 실험을 수행하여 4 가지 작업에 대한 모델 아키텍처 및 교육 전략을 테스트합니다.
측정 항목의 경우 각 테스트 예에서 R @ k / C로 약칭 된 C 가능한 후보와 MRR (Mean Reciprocal Rank)을 선택할 수있는 Recall @ k를 측정합니다.
5.1 Bi-encoders and Cross-encoders
먼저 Devlin 등이 제공 한 가중치로 초기화 된 Bi- 및 Cross-encoder 아키텍처의 미세 조정에 대해 조사합니다.
(2019), 다른 하이퍼 파라미터의 선택을 연구합니다 (섹션 5.3의 자체 사전 훈련 계획을 살펴보십시오).
Bi-encoder의 경우 다른 배치 요소를 음수 훈련 샘플로 고려하여 임베딩의 재 계산을 피함으로써 많은 수의 음을 사용할 수 있습니다.
Nvidia Volta v100 GPU 8 개에서 반 정밀도 연산 (즉, float16 연산)을 사용하면 ConvAI2에서 512 개의 요소를 일괄 처리 할 수 있습니다.
표 2는이 설정에서 더 큰 배치 크기, 즉 더 많은 네거티브로 더 높은 성능을 얻는다는 것을 보여줍니다.
여기서 511 네거티브가 최상의 결과를 산출합니다. 다른 작업의 경우 데이터 세트의 긴 시퀀스가 더 많은 메모리를 사용하므로 배치 크기를 256으로 유지합니다.
크로스 엔코더는 (컨텍스트, 후보) 쌍에 대한 임베딩이 매번 재 계산되어야하므로 더 계산 집약적입니다.
따라서 배치 크기를 16으로 제한하고 훈련 세트에서 음수 임의 샘플을 제공합니다. DSTC7 및 Ubuntu V2의 경우 15 가지 부정을 선택합니다.
ConvAI2의 경우 데이터 세트는 19 개의 음을 제공합니다.
위의 결과는 첫 번째 출력을 기반으로 Bi-encoder 집계로보고됩니다.
대신 모든 출력에 대한 평균을 선택하는 것은 매우 유사하지만 약간 더 나쁩니다 (83.1, 평균 5 회 이상).
We
also tried to add further non-linearities instead of the inner product of the two representations, but
could not obtain improved results over the simpler architecture (results not shown).
즉 뒷 layer에 이것저것 붙이는 것은 크게 효과적이지 않다.
우리는 두 가지 최적화 프로그램을 시도했습니다
Adam (Kingma & Ba, 2015) with weight decay of 0.01 (as recommended
by (Devlin et al., 2019))
Adamax (Kingma & Ba, 2015) without weight decay; based on validation set performance
we choose to fine-tune with Adam when using the BERT weights.
학습 속도는 Bi 및 Poly 인코더의 경우 100 회, Cross-encoder의 경우 1000 회의 예열로 5e-5로 초기화됩니다.
학습 속도는 반 에포크마다 유효한 세트에서 평가 된 손실이 정체 될 때 0.4의 계수만큼 감소합니다.
표 3에는 감쇠 최적화 기능이있는 Adam을 사용하여 (Devlin et al., 2019)에서 제공하는 다양한 가중치 계층을 미세 조정할 때의 검증 성능이 나와 있습니다.
단어 포함을 제외하고 전체 네트워크를 미세 조정하는 것이 중요합니다.
위에서 설명한 설정을 사용하여 데이터 세트에서 Bi 및 Cross 인코더를 미세 조정하고 결과를 표 4에보고합니다.
BERT 가중치를 미세 조정할 때 Bi- 인코더와 크로스 엔코더는 처음 세 가지 작업에서 문헌에서 기존의 최상의 접근 방식을 능가합니다.
예를 들어, Biencoder는 ConvAI2에서 81.7 % R1, DSTC7에서 66.8 % R1에 도달하는 반면, Cross-encoder는 ConvAI2에서 84.8 % R1, DSTC7에서 67.4 % R1의 높은 점수를 얻습니다.
전반적으로 Cross-encoders는 Bi-encoder를 포함하여 3 가지 대화 작업에 대한 이전의 모든 접근 방식을 능가합니다 (예상).
테스트 세트가 해당 데이터 세트에 대한 사전 훈련의 일부가 아님을 보장 할 수 없으므로 Wikipedia IR에 대한 BERT의 미세 조정은보고되지 않습니다.
또한 크로스 엔코더는 후보가 10k 인 해당 작업의 평가 설정을 평가하기에는 너무 느립니다.
5.2 Poly-encoders
Bi-encoder 실험에서와 동일한 배치 크기와 옵티 마이저 선택을 사용하여 Poly-encoder를 훈련시킵니다.
m 개의 컨텍스트 벡터의 다양한 값에 대한 결과가 표 4에보고되어있다.
Poly-encoder는 모든 작업에서 Bi-encoder보다 성능이 뛰어나며 코드가 많을수록 일반적으로 더 크게 개선됩니다.
Our recommendation is thus to use as large a code size as compute time allows
(see Sec. 5.4).
poly-encoders와 같이 구성할 땐 code를 큰 dimmension으로 설정하면 좋다는 팁
DSTC7에서 BERT 프리 트레이닝이 포함 된 Poly-encoder 아키텍처는 360 개의 중간 컨텍스트 코드로 68.9 % R1에 도달합니다.
이는 실제로 크로스 엔코더 결과 (67.4 %)를 능가하며 Bi- 엔코더 결과 (66.8 %)보다 눈에 띄게 좋습니다.
Ubuntu V2 및 ConvAI2에서도 비슷한 결론이 나오지만, 후자에서는 크로스 엔코더가 약간 더 나은 결과를 제공합니다.
우리는 결과를보고 한 이후 Li et al. (2019)는 ConvAI2에 대한 인간 평가 연구를 수행했으며, 폴리 엔코더 아키텍처는 경쟁 승자를 포함하여 생성 및 검색 기반의 다른 모든 모델보다 성능이 뛰어납니다.
5.3 Domain-specific Pre-training
우리는 네 가지 작업 모두에서 Reddit 사전 훈련 된 변압기를 미세 조정합니다.
또한 BERT와 동일한 데이터 세트, 특히 Toronto Books + Wikipedia에 사전 훈련 된 변압기를 추가로 미세 조정했습니다.
사전 훈련 된 가중치를 사용할 때 Adamax 최적화 프로그램을 사용하고 임베딩을 포함하여 변압기의 모든 레이어를 최적화합니다.
가중치 감소를 사용하지 않기 때문에 최종 레이어의 가중치는 BERT의 최종 레이어의 가중치보다 훨씬 큽니다.
Poly-encoder에서주의 레이어의 채도를 피하기 위해 출력의 표준 편차가 BERT와 일치하도록 마지막 선형 레이어의 크기를 조정하여 좋은 결과를 얻는 데 필요한 것으로 나타났습니다.
우리는 사전 훈련 된 가중치를 사용하여 미세 조정 결과를 표 4에보고합니다.
Reddit에 대한 사전 훈련은 BERT를 사용한 이전 결과에 비해 최첨단 성능을 제공한다는 것을 보여줍니다.
및 세 아키텍처 모두 Toronto Books + Wikipedia에서 사전 훈련 된 자체 변압기에서 미세 조정을 통해 얻은 결과는 원래 BERT 가중치로 얻은 결과와 매우 유사합니다.
이는 모델을 사전 훈련하는 데 사용 된 데이터 세트의 선택이 최종 결과에 영향을 미치지 않음을 나타냅니다.
우리의 훈련에서 다른 세부 사항. 실제로, 두 가지 설정이 비슷한 크기의 데이터 세트로 사전 훈련하므로, 관심있는 다운 스트림 과제 (예 : 대화)와 유사한 사전 훈련 작업 (예 : 대화 데이터)을 선택하는 것이 이러한 성능에 대한 설명 일 가능성이 있다고 결론 내릴 수 있습니다.
유사한 결과를 가진 멀티 태스킹을 보여주는 이전 결과에 따른 이득은 다른 것들보다 더 유용하다 (Caruana, 1997).
5.4 Inference Speed
Poly-encoder 아키텍처의 중요한 동기는 Biencoder보다 더 나은 결과를 달성하면서 합리적인 속도로 수행하는 것입니다.
크로스 엔코더는 일반적으로 강력한 결과를 생성하지만 엄청나게 느립니다.
Poly-encoder의 성능 향상과의 균형을 결정하기 위해 속도 실험을 수행합니다.
구체적으로, 우리는 모델이 C개의 후보들을이 경우 훈련 세트에서 선택) 점수 매기는 ConvAI2 검증 세트에서 100 개의 대화 예제에 대한 다음 발화를 예측합니다.
이 실험은 CPU 전용 및 GPU 설정 모두에서 수행됩니다.
CPU 계산은 80 코어 Intel Xeon 프로세서 CPU E5-2698에서 실행되었습니다.
GPU 계산은 cuda 10.0 및 cudnn 7.4를 사용하여 단일 Nvidia Quadro GP100에서 실행되었습니다.
우리는 표 5에 각 아키텍처에 대한 예제 당 평균 시간을 보여줍니다.
Bi-encoder와 Poly-encoder 아키텍처 사이의 타이밍 차이는 모델에 대해 고려할 후보가 1000 명일 때 약간 미미합니다.
Poly-encoder 변형에 대해 5-6 배의 속도 저하를 볼 때보다 현실적인 설정 인 100k 후보를 고려할 때 차이가 더욱 두드러집니다.
그럼에도 불구하고 두 모델 모두 여전히 다루기 쉽습니다.
그러나, 크로스 인코더는 바이 인코더 및 폴리 인코더보다 2 배 더 느리므로 실시간 추론을 위해 다루기가 어려워진다.
대화 에이전트와 상호 작용하거나 많은 문서 세트에서 검색 할 때. 따라서, 바람직한 성능 및 속도 상충 관계를 고려하여 폴리 엔코더가 선호되는 방법입니다.
또한 부록, 표 6에 교육 시간이 보고되어 있습니다.
폴리 인코더는 또한 크로스 인코더보다 3-4 배 빨리 훈련 할 수 있다는 이점이 있습니다 (훈련 시간은 바이 인코더와 유사 함).
6 Conclusion
이 논문에서, 우리는 candidate selection tasks에서 deep bidirectional transformers을 위한 새로운 구조와 pre-training 전략을 제시한다.
우리는 Poly-encoder 방법을 소개하고 이는 label candidate을 사용한 context 위에서 attending을 하는 것이다.
그러면서 각 candidate들의 representation을 미리 계산할 수 있는 능력을 유지한다.
그러다보니 빠른 real-time 인퍼런스를 프로덕션 셋업에서 가질 수 있고 accuracy와 speed 사이의 trade-off의 향상을 가진다.
우리는 Bi-, Poly- and Cross-encoders에 대한 trade-offs에 대한 실험적인 분석을 제공한다.
Poly-encoders은 Bi-encoders보다 좀 더 정확하고 Cross-encoders보다 빠르다.
Cross-encoders real-time use에서 비실용적이다.
이러한 구조를 학습하는 관점에서, 우리는 pre-training 전략이 downstream task와 관련이 깊으면 좋은 성능을 가져온다는 것을 보여준다.
특별히, Reddit으로부터의 pre-training은 BERT를 통해 얻은 결과보다 더 좋음을 보여준다.
결과는 세 가지 모델 아키텍처와 세 가지 대화 데이터 세트 모두에 적용된다.
그러나, 이 연구에서 소개된 이러한 방법들은 dialogue에 특화해서 작동하는 것은 아니고, candidates의 셋에 대해 scoring매기는 information retrieval와 같은 어떠한 task에도 사용될 수 있다.
댓글
댓글 쓰기