본문 바로가기
머신러닝, 딥러닝/NLP

[논문 리뷰, GPT-2]Language Models are Unsupervised Multitask Learners

by Deeppago 2022. 5. 5.

이 글은 2018년 6월 OpenAI GPT-2: Language Models are Unsupervised Multitask Learners를 정리한 글이다. 요약하자면 다음과 같다.

이전에 업로드한 GPT에서는 Transformer구조를 사용함으로써 약간의 fine-tuning만으로 NLP의 여러 Task에서 sota를 달성하였고, zero-shot 성능의 가능성에 대한 여지를 주었다. GPT-2의 가장 큰 목적은 Fine-tuning 없이 Unsupervised pre-training 만을 통해 Zero-shot으로 Down-stream task를 진행할 수 있는 General language model을 개발하는 것이다.

GPT-2는 Unsupervised pre-training만으로 8개의 NLP task 중 7개 부문에서 sota를 달성했다. 이는 대용량 Language model의 Unsupervised pre-training의 가능성을 시사하고,Zero-shot setting이라는 점에서 Task specific한 모델을 제치고 sota를 했다는 점에서 매우 의미가 크다.

자세한 내용을 이 글을 통해 한번 살펴보도록 하자.

- 목차 -

1. Introduction

2. Approach

    2.1 Training dataset

    2.2. Input Representation

    2.3 Model

3. Experiments

    3.1. Language Modeling

    3.2. Children’s Book Test

    3.3 LAMBADA

    3.4. Winograd Schema Challenge

    3.5. Reading Comprehension

    3.6. Summarization

    3.7. Translation

    3.8. Question Answering

4. Generalization vs Memorization

5. Discussion

6. Conclusion


1. Introduction

기계학습 시스템은 큰 dataset과 고용량의 모델, 지도 학습 등을 통해 빠르게 발전해왔다. 이러한 방법으로 개발된 모델들은 데이터의 분포가 살짝만 바뀌어도 불안정하며 매우 특정 Task에서만 뛰어난 능력을 발휘한다. 그래서 많은 Task에 적용 가능한 더 범용적인 모델을 개발할 필요가 있다.

현재 기계학습체계를 개발하는 주된 방법은 목표 과제에 맞는 dataset을 찾아서, 이를 학습/검증 단계로 나누어 학습 후 IID(independet and identically distributed)로 성능을 측정하는 방법이다. 이는 좁은 범위의 과제에서는 매우 효과적이나 범용적인 이해를 필요로 하는 독해나 다양한 이미지 분류 시스템 등의 문제에서는 높은 성능을 내지 못했다.

다중작업 학습(Multitask learning)은 일반 성능을 높이는 유망한 방법이지만 아직 초기 연구 단계이다. 최근의 기계학습 시스템은 일반화를 위해서는 수십만 개 정도의 학습 샘플을 필요로 하는데 이는 다중작업 학습을 위해서는 그 몇 배가 필요하다는 것을 뜻한다.

가장 성능이 높은 언어처리 모델은 사전학습(pre-training)과 지도 세부 학습(supervised fine-tuning)의 결합으로 만들어졌다. 이 접근법은 transfer과 더불어 긴 역사를 가졌다.

이러한 방법들은 여전히 지도 학습을 필요로 한다. 만약 지도 데이터가 최소한으로 또는 전혀 필요하지 않다면, 일반상식 추론이나 감정분석과 같은 특정 과제들을 수행하는 데 큰 발전이 있을 것이다.

이 논문에서는 언어 모델이 어떤 parameter나 모델 구조의 변화 없이도 zero-shot setting 하에서 downstream task를 수행할 수 있음을 보인다. 이 접근법은 언어 모델이 zero-shot setting 하에서 넓은 범위의 과제를 수행할 수 있는 가능성을 보이며, 전도유망하고 경쟁력 있으며 과제에 따라서는 state-of-the-art를 달성하였다.


2. Approach

핵심은 언어 모델링(language modeling)이다. 언어 모델링은 대개 각 원소가 \((s_1, s_2, ..., s_n)\)와 같은 Symbol의 Sequence으로 구성된 예제 \((x_1, x_2, ..., x_n)\)에서 비지도 분포를 추정을 하는 것으로 정의된다. 언어는 자연적으로 연속된 순서를 가지므로 보통 조건부 확률의 곱으로 이루어진 symbol에 따른 합동 확률로 구해진다.

 

\[p(x)= \prod_{i=1}^{n}p(s_n|s_1, ..., s_{n-1})\]

 

이 접근 방식은  \(p(s_{n-k}, ..., s_n  |s_1, ..., s_{n-k-1})\)형식의 조건문뿐만 아니라  \(p(x)\)에서 다루기 쉬운 샘플링 및 추정을 가능하게 한다. 최근에는 이러한 조건부 확률을 매우 잘 계산하는 Self-Attention 기반의 Transformer 등이 만들어졌다. 

 

단일 과제 수행의 학습은 조건부 분포  \(p(output|input)\)를 추정하는 확률 framework로 표현될 수 있다. 범용 시스템은 여러 다른 과제들을 수행할 수 있어야 하기 때문에 같은 입력이라도 입력뿐 아니라 과제의 종류라는 조건이 들어가야 한다. 그러므로 \(p(output|input, task)\)로 표현되어야 한다. 예를 들자면 아래와 같다.

  1. translation train example :  (translate to french, english text, french text).
  2. reading comprehension training example : (answer the question, document, question, answer).

이 논문에서는 다양한 작업에 대한 Zero-shot setting에서 언어 모델의 성능을 분석하여 이것이 사실인지 테스트한다.

 

2.1 Training dataset

많은 선행연구에서 사용된 dataset은 뉴스, Wikipedia, 소설책과 같이 한 영역에서만 가져온 데이터로 구성되어 있었다. 이 논문에서는 여러 도메인에 적용이 가능하도록 다양한 출처로부터 가져오려고 하였다.

이러한 점에서 web scraping은 적합한 데이터라고 할 수 있다. 하지만, 이 중 많은 양이 이해할 수 없거나 품질이 떨어지는 데이터이다. 따라서 이 논문에서는 단순 크롤링이 아닌 고품질의 데이터를 얻는 다른 방법을 사용하기로 했다.

  • 사람에 의해 필터링된 글만을 사용하기로 하였다.
    • Reddit에서 3 karma 이상을 받은 글에 포함된 외부 링크의 글을 가져왔다.
    • 결과적으로 45M 개의 링크를 가져왔다.
  • Dataset 이름은 WebText라 하였다.
  • 2017년 12월 이후의 글과 위키피디아 글은 제거했으며, 중복제거 등을 거쳐 8M 개의 문서, 40GB의 텍스트를 확보하였다.
    • 위키피디아는 다른 dataset에서 흔하고, training과 test 단계에서의 데이터가 겹치는 문제로 인해 분석이 복잡해질 수 있기 때문에 제외했다.

2.2. Input Representation

Byte Pair Encoding(BPE)는 글자(byte)와 단어의 적당한 중간 단위를 쓴다. 이는 자주 나오는 symbol sequence의 단어 수준 입력과 자주 나오지 않는 symbol sequence의 글자 수준 입력을 적절히 보간한다.

 

언어 모델은 어떠한 문자열에 대해서도 확률을 계산할 수 있어야 합니다. 따라서 현재의 언어 모델들은 토큰화 과정을 필수적으로 거치게 된다.

본 논문에서는 Byte Pair Encoding(BPE) 방식을 채택하였다.

BPE에 대한 참고자료
BPE는 subword 기반의 인코딩 방법으로 문자 단위로 단어를 분해하여 Vocabulary를 생성하고, 반복을 통해 빈도수가 높은 문자 쌍을 지속적으로 Vocabulary에 추가하는 bottom-up방법이다(Greedy).
예를 들자면,
\[Vocab_{word} = \left\{ appel, avaliable, capable\right\}\]
\[Vocab_{char} = \left\{ a, p, l, e, v, i, b, c, p\right\}\]

우선 {apple, available, capable} 로 구성된 Word Vocabulary로 부터 Character vocabulary {a,p,l,e,v,i,b,c,p}를 얻는다.
그 후, 매 회 반복을 통해 le, ble, able과 같이 함께 자주 등장하는 문자 쌍을 Character vocabulary에 greedy 하게 추가하는 방법이다.

\[Vocab_{BPE} = \left\{ a, p, l, e, v, i, b, c, p, le, ble, able\right\}\]

예상되는 결과는 반복에 따라 {a, p, l, e, v, i, b, c, p, le, ble, able}과 같은 vocabulary가 완성될 것이다.

 

따라서 BPE는 자주 등장하는 토큰 시퀀스의 단어 수준 입력과 자주 등장하지 않는 토큰 시퀀스의 문자 수준 입력을 잘 보간(interpolate)할 수 있다. 

 

하지만 Byte pair encoding이라는 이름과는 다르게, 예시와 같이 기존의 BPE는 유니코드 시퀀스에서 주로 동작하고 있다.

유니코드 시퀀스를 위해 사용하는 BPE는 13만 개 이상의 매우 큰 Vocabulary가 필요하다. 

그에 반해 Byte 수준의 BPE는 오직 256개의 Vocabulary만을 필요로 한다. 따라서 저자들은 BPE를 유니코드 수준이 아닌, Byte 수준의 string에 적용하는 시도를 하였다.

 

그러나 Byte 수준의 BPE에도 문제점이 존재한다. {dog., dog?, dog!}과 같이 단어의 유의미하지 않은 Variation을 추가하는 경향이 크다는 것이다. 이는 한정된 Vocabulary 크기를 최적으로 사용하지 못하게 할 가능성이 크다.

따라서 본 논문에서는 Byte 시퀀스를 위한 BPE를 적용하기 위해 문자 수준 이상의 병합을 막았다. 이는 Vocabulary 공간을 최적으로 활용하며 Input representation을 구성할 수 있도록 하였다.

 

2.3 Model

Transformer가 기본 구조이며, OpenAI Gpt-1의 구조를 대부분 따른다. 약간의 차이는 있는데,

  • Layer normalization이 각 sub-block의 입력으로 옮겨졌다.
    • 추가 layer normalization이 마지막 self-attention block 이후에 추가되었다.
  • 모델 깊이에 따른 residual path의 누적에 관한 부분의 초기화 방법이 변경되었다.
    • 이 residual layer의 수라 할 때, residual layer의 가중치에 \(1/\sqrt{N}\)을 곱했다.
  • 사전은 50,257개로 확장되었다.
  • 문맥 고려 범위(context size)가 512~1024개의 token으로 늘어났으며 batch size도 512로 증가했다.

3. Experiments

모델은 크기가 각각 다른 4개를 만들어 실험했다. 각 모델의 크기는 다음과 같다.

3.1. Language Modeling

GPT-2는 byte 시퀀스에 BPE를 적용하기 때문에 기존에 존재하는 벤치마크 데이터셋에 자유롭게 적용이 가능하다. <UNK>는 WebText에 400억 byte 중 26번밖에 나타나지 않는다.

결과는 아래 표에 나와 있으며, 비록 One Billion Word Benchmark에서 저조한 성능을 보였지만 그 외의 태스크에서는 어떤 미세조정도 거치지 않고 zero-shot 환경에서 8개 중 7개에서 state-of-the-art를 달성하였다.

3.2. Children’s Book Test

CBT(Children's Book Test) 데이터셋은 품사(고유명사, 명사, 동사, 전치사)에 따른 Language model의 성능 비교를 위한 벤치마크 데이터셋이다.

텍스트 북에 빠진 개체명이나 명사에 대해서 모델이 예측하도록 하는 실험으로 예측 방식은 빠진 단어에 대해 가능한 10개의 선택에서 모델이 빠진 단어에 대한 확률을 계산하게 하였으며 가장 높은 확률을 선택하여 예측을 수행하였다. 이 실험에서는 명사 예측에 대해서는 93.3% 그리고 일반 명사에 대해서는 89.1%의 Accuracy를 보인다.

 

3.3 LAMBADA

텍스트의 장거리 의존성(long-range dependencies)을 평가한다. 간단하게 설명하면 긴 문장에 대해서 완벽하게 생성을 잘 해내는지를 보는 실험으로 최소 50개의 단어 위치에서 마지막 단어를 예측하는 실험이다. GPT-2 모델은 PPL 기존 SOTA 점수인 99.8에서 8.6으로 높은 성능을 보였고 accuracy는 19%에서 52.66%로 올라간 것을 볼 수 있다. stop-word filter를 적용하면 63.24%까지 성능이 상승한다.

 

3.4. Winograd Schema Challenge

텍스트에 존재하는 중의성(또는 모호한 부분, ambiguities)을 해석하는 능력을 측정함으로써 일반상식 추론 능력을 평가한다. GPT-2는 정확도를 7% 증가시켜 70.70%를 달성했다.

3.5. Reading Comprehension

Conversation Question Answering dataset(CoQA)는 7개 도메인의 문서에 대한 Q, A를 포함하고 있는 데이터셋이다.

따라서 CoQA는 언어 모델의 문서 이해능력과 Q, A 능력을 동시에 평가할 수 있다. SOTA 모델인 BERT에는 미치지 못했지만, GPT-2는 fine-tuning 없이 55의 F1 score로 좋은 성능을 보였다. Supervised training 없이 Zero-shot setting에서 이러한 성능을 보인 것은 매우 의미 있는 결과라고 생각한다.

 

3.6. Summarization

CNN, Daily Mail dataset을 활용하여 요약문을 생성하도록 했다. GPT-2에서 zero-shot으로 Task-specific 한 결과를 유도하기 위해 TL;DR:라는 annotation을 첨가해서 100개의 토큰을 생성하였고 이렇게 생성된 토큰의 처음 3 문장을 요약으로 사용하였다. ROUGE 메트릭으로 평가를 했으며 기사에서 random 3개의 문장을 뽑은 문장보다 훨씬 더 나은 요약문을 만들어 낼 수 있는 것을 확인할 수 있다. 한 TL;DR: 토큰 없이 실험한 경우, 성능이 더 하락한 것을 보아 힌트를 통한 자연어 처리 Task 유도가 유의한 결과를 냄을 확인할 수 있다.

ROUGE 지표에 대한 정리, 출처 : https://supkoon.tistory.com/26
ROUGE(Recall-Oriented Understudy for Gisting Evaluation)는 text summarization, machine translation과 같은 generation task를 평가하기 위해 사용되는 대표적인 Metric이다. ROUGE는 이름 그대로 정답 문장과 생성된 문장 간의 n-gram recall을 계산한 것이다. 아래 예시를 보자.

ex) ROUGE-1 : unigram
정답문장: "한화는 10 년 안에 우승 할 것이다."
생성문장: "두산은 3 년 안에 우승 할 것이다."
\(N_{정답문장}\) = 7
\(N_{년, 안에, 우승, 할, 것이다.}\) = 5
ROUGE−1 = 5/7

ex) ROUGE-2 : bigram
정답문장: "한화는 10 년 안에 우승 할 것이다."
생성문장:"한화는 10 년 안에 절대 우승 못 할 것이다. "
\(N_{정답문장}\) = 6
\(N_{(한화, 10), (10, 년), (년, 안에), (할, 것이다.})\) = 4
ROUGE−2 = 4/6

ex)ROUGE-L
Longest Common Subs equence
가장 긴 Sequence의 recall을 구한다. Sequence는 이어지지 않아도 된다.
 
정답문장 "한화는 10 년 안에 우승 할 것이다."
생성문장:"한화는 10 년 안에 절대 우승 못 할 것이다. "
\(N_{정답문장}\) = 7
\(longestSequence\) = 한화는 10 년 안에 우승 할 것이다.
\(longestSequence\) = 7
ROUGE−L = 7/7 = 1

 

3.7. Translation

WMT-14 데이터에서 Translation성능을 측정하였다. English-French, French to Enghlish에 대해서 각 성능은 BLEU score로 5, 11.5의 결과를 보였다. Unsupervised로 학습한 MT 모델 점수 (33.5 BLEU)에 미치지는 못했지만 거의 영어 데이터로만 구성한 WebText에서 10MB 정도의 작은 Franch corpus가 있었음에도 이러한 번역 결과가 나온 점에 큰 의미를 두고 있다. 

 

3.8. Question Answering

QA task에서 일반적으로 사용하는 '정확히 일치하는지' 여부(exact match metric)를 지표로 비교하였을 때에는 4.1%의 정확도로 기존의 모델들보다 5.3배 높은 정확도를 보인다고 한다.

매우 작은 모델들은 대체로 1%를 넘지 못하는 성능을 보였는데, 아직까지는 모델의 크기가 해당 Task에 있어 매우 중요한 요인으로 확인된다고 한다.

위 표에서 보는 것과 같이 GPT-2는 가장 신뢰도가 높은 답변 1%에 대해 평균 63% 정도의 정확도를 보였다.


4. Generalization vs Memorization

GPT-2 모델은 충분히 zero-shot learning으로 여러 태스크에서 괜찮은 성능을 보였다. 하지만 학습한 데이터 양이 방대하기 때문에 기존 태스크의 테스트와 overlap이 될 가능성의 여지도 역시 있을 수 있다. 만약에 overlap이 크다면 큰 모델은 결국 생성이 아닌 모델 파라미터에서 기억하는 내용을 그대로 출력하는 것으로 생각할 수 있다. 

아래 표는 벤치마크 데이터셋에서의 Overlap 정도를 보여준다.

WebText 데이터셋과 기존 데이터셋이 크지 않은 overlap을 보였지만, 어느 정도 영향이 있었음을 확인할 수 있다.

하지만 이는 기존 데이터셋이 Train, Test set 간에 가지고 있던 overlap에 비해서는 특별히 크지 않다고 한다.

 

아래의 그래프에서 Test set과 Train set의 성능은 거의 비슷하며, 또한 모델 크기에 따라서 동시에 성능이 증가하고 있음을 보여준다.

이는 Memorization이 모델 성능개선에 큰 요인이 아니었으며, 모델이 아직 underfitting 되어 더 개선될 여지가 있음을 보여준다.


5. Discussion

이 논문은 비지도 학습이 아직 연구할 거리가 더 남아 있음을 보여준다.

GPT-2의 zero-shot 학습 성능은 독해 등에서 좋은 성능을 보였으나 요약과 같은 문제에서는 기본적인 성능만을 보여주었다. (실제로 사용하기엔 무리가 있다.)

GPT-2의 성능이 Fine-tuning을 통한 그 한계가 얼마인지는 분명하지 않다. 그렇지만 이 논문의 저자들은 decaNLP나 GLUE와 갈은 벤치마크에서 미세조정(fine-tuning)할 것을 계획하고 있다고 한다.
또한 GPT-2의 학습 데이터와 그 크기가 BERT에서 말한 단방향 표현의 비효율성을 극복할 수 있을 만큼 충분한지도 확실치 않다고 한다.


6. Conclusion

Language model이 충분히 크고 다양한 dataset에서 training 되면 많은 도메인과 dataset에서 좋은 성능을 보인다. 

GPT-2는 Zero-shot 임에도 불구하고 8개의 Task 중 7개의 Task에서 sota를 달성했다.

이는 충분히 다양한 test corpus로 training 된 고용량 모델이 Zero-shot setting에서 수행할 수 있는 작업의 다양성이 Language model이 명시적인 감독 없이도 놀라운 양의 작업을 수행하는 방법을 배우기 시작함을 보여준다.

 

 

댓글