[CS224n] Pre-training Language Models: 전이 학습, 사전 훈련된 모델 종류 등

박수현·2022년 7월 6일
0

CS224n

목록 보기
2/5

Subword modeling

언어 모델은 훈련 데이터셋으로부터 유한한 크기의 어휘 집합을 만든다. 그리고 실험 데이터셋에서 처음 보는 단어는 어휘 집합에서 찾을 수 없기 때문에 UNK (Unknown)라는 토큰으로 맵핑된다.
그렇지만 인간의 언어는 매우 복잡한 형태론적 특징을 가진다. 새로운 형태를 가진 단어는 끊임없이 생성되며(예: 신조어, 은어, 오타...), 각각의 빈도도 높지 않다. 모델이 훈련 시간에 이러한 단어들을 보지 못했다고 해서 모두 UNK로 처리해버린다면, 모델이 제대로 예측해낼 수 있는 단어들은 많지 않을 것이다. 이를 Out-of-Vocabulary (OOV) 문제라고 정의하기도 한다.

자연어 처리에서는 복잡한 언어의 구조도 잘 해독할 수 있도록 단어의 일부분(parts of words), 글자(characters), 바이트(bytes) 단위로 단어를 쪼개서 토큰화를 수행한다. 가장 널리 쓰이는 방법은 단어의 일부분, 즉 서브워드(subword)를 토큰으로 만드는 것이다. 서브워드 분리 작업을 수행하는 대표적인 간단한 알고리즘은 BPE(Byte-pair encoding)이다.

  1. 모든 단어들을 글자 단위로 분리한다. 어휘 집합에는 글자와 "end-of-word" 기호만 토큰으로 포함되어 있다.
  2. 가장 빈도수가 높은 이웃한 토큰쌍을 찾는다. 어휘 집합에 해당 토큰쌍을 통합한 서브워드를 추가한다.
  3. 해당 토큰쌍은 모두 하나의 서브워드로 대체한다. 목표한 어휘 집합에 크기에 도달할 때까지 과정을 반복한다.

(출처: 위키독스)

단어 단위가 아니라 서브워드 단위로 단어들을 처리하면서, OOV 단어들도 분해하여 의미를 추론할 수 있게 되었다.

Motivating model pretraining from word embeddings

"유사한 문맥에서 등장하는 단어들은 유사한 의미를 가진다"는 분포 가설(distributional hypothesis) 하에 분산 시멘틱(distributional semantics) 방법론이 등장했다. 그리고 단어의 의미를 여러 차원의 벡터 공간에 분산하여 표현하고, 단어 벡터간 유사도로 의미를 추정하는 Word2Vec이 대표적인 단어 임베딩 기법으로 부상했다.
하지만 단어의 의미는 전체 문맥에서 생각해보아야 한다. 예를 들어, "I record a record"에서 첫번째 record과 두번째 record의 의미는 다르다.

"...the complete meaning of a word is always contextual, and no study of meaning apart from a complete context can be taken seriously."

Pre-trained word embeddings

초기에는 사전 훈련된 단어 임베딩(pre-trained word embeddings)을 가지고 문맥 정보를 추가로 학습하는 방법을 사용했다. GloVe, Word2Vec 등 미리 만들어져있는 단어 임베딩 벡터들을 가져오고 LSTM이나 트랜스포머를 통해 훈련 과정 중에 현재의 태스크에 관한 문맥 정보를 엮는 것이다.
하지만 이는 다음 두 가지 문제가 있다.

  1. 현재의 다운스트림 태스크(downstream task)에 사용하는 훈련 데이터가 언어 문맥을 모두 포함하기에 불충분할 수 있다.
  2. 모델 자체 매개변수들이 무작위로 초기화되어있어 원하는 훈련 목표를 달성하기 어려울 수 있다.

Pre-training whole models

현대의 NLP 모델들은 사전 훈련을 통해 모델 자체 매개변수들의 초깃값을 저장한다. 모델 입력 시퀀스의 일부를 가리고, 모델이 이 부분들을 재구성할 수 있도록 훈련하는 방법론이 사용된다.
이는 다음 세 가지를 보다 강력하게 구성하는 데 도움을 주었다.

1. 언어 표상(representations of language)
2. 강력한 NLP 모델을 위한 매개변수 초깃값 학습
3. 언어의 확률 분포 추정

Input exampleMasked word exampleWhat we can learn from reconstructing the input
Stanford University is located in __, California.Palo Altotrivia
I put __ fork down on the tablea, some, the...syntax
The woman walked across the street, checking for traffic over __ shoulderhercoreference
I went to the ocean to see the fish, turtles, seals, and __.sharks...distribution of things people can think of. lexical semantics/topic
Overall, the value I got from the two hours watching it was the sum total of the popcorn and the drink. The movie was __.bad...sentiment
Iroh went into the kitchen to make some tea. Standing next to Iroh, Zuko pondered his destiny. Zuko left the __.living room...reasoning
I was thinking about the sequence that goes 1, 1, 2, 3, 5, 8, 13, 21, __.34basic arithmetic

언어 모델링(language modeling) 태스크는 이전의 문맥을 바탕으로 현재 시점의 단어에 대한 확률 분포를 모델링하는 것이다. 즉, 주어진 텍스트로부터 이전 단어들로부터 다음 단어를 예측하도록 학습한다.
1차적으로 모델을 언어 모델링 태스크에 대해 사전 훈련(pre-training)시키고, 2차적으로 사전 훈련된 모델을 내가 원하는 태스크에 대해 파인 튜닝(fine-tuning)하면 다양한 NLP 과제를 높은 성능으로 해결할 수 있다. 이러한 사전 훈련-파인 튜닝 프로세스를 전이 학습(transfer learning) 이라고도 일컫는다. 한 번 큰 범용 모델을 사전 훈련시켜두면, 이를 다운스트림 태스크 데이터셋으로 원하는 만큼 적응시킬 수 있다.
사전 훈련을 위해서는 방대한 양의 general-purpose 텍스트 데이터가 필요한데, 모델이 언어 모델링 태스크를 수행하기 위해서는 사람이 별도의 정답(레이블)을 표시해줄 필요가 없다(self-supervised 또는 unsupervised pre-training). 파인 튜닝 시에는 레이블링된 적은 텍스트 데이터만이 필요하다. 또한, BERT와 같은 사전 훈련된 언어 모델들은 매개변수 초깃값들, 즉 체크포인트들(checkpoints)이 오픈소스로 공개되어있기 때문에 이를 손쉽게 불러올 수 있다.
전이 학습 방식을 따르면 데이터 레이블링 수고와 훈련 비용을 덜면서, 사전 훈련된 언어 모델이 언어의 모든 문맥을 학습한 뒤 최적화한 질좋은 매개변수 초깃값을 활용할 수 있다. 사전 훈련된 언어 모델을 사용하는 것은 효과성 및 효율성의 측면에서 NLP 애플리케이션을 개선하는 강력한 도구이다.

(출처: HuggingFace)

구글 연구진이 최초로 LSTM을 가지고 사전 훈련-파인 튜닝하는 방법론을 제시했다.

(출처: 위키독스)

이후 2017년 인코더-디코더 구조에서 LSTM의 성능을 뛰어넘는 트랜스포머가 발표되자, 오픈AI 연구진은 트랜스포머의 디코더들로 사전 훈련된 언어 모델을 구성했다. 이것이 GPT-1이다.

(출처: 위키독스)

Model pretraining three ways

심층 신경망 아키텍처를 어떻게 설계하느냐에 따라 사전 훈련 양상이 달라지고, use case도 달라진다. 총 세 가지로 사전 훈련 모델의 아키텍처를 분류할 수 있다.

  • Decoder-only models (auto-regressive models)
    • 텍스트 생성 등 자연어 생성(NLG; Natural Language Generation) 과제에 적합하다.
    • 언어 모델링 태스크에 훈련되기 때문에 어텐션 계층에서는 미래 시점의 단어들을 처리할 수 없다. 이 때문에 자기회귀적(auto-regressive)한 방식으로 아키텍처가 설계되었다고도 볼 수 있다.
    • GPT-like (GPT, GPT-2, GPT-3, LaMDA, CTRL, Transformer XL...)
  • Encoder-only models (auto-encoding models)
    • 문장 분류, 개체명 인식(named entity recognition), 추출형 질의응답(extractive question answering) 등 자연어 이해(NLU; Natural Language Understanding) 과제에 적합하다.
    • 모델이 입력 시퀀스 전체에 접근할 수 있기 때문에, 사전 훈련을 어떻게 정상적으로 시키는지가 관건이다. BERT는 이 문제를 해결하기 위해 입력 시퀀스의 일부를 가리고 사전 훈련을 시키는 마스크드 언어 모델(Masked Language Model)의 시작을 열었다.
    • BERT-like (BERT, RoBERTa, ALBERT, DistilBERT, ELECTRA...)
  • Encoder-decoder models (sequence-to-sequence models)
    • 번역, 요약, 생성기반 질의응답(generative question answering) 등 입력이 필요한 자연어 생성 과제에 적합하다.
    • 사전 훈련을 시키는 최고의 방법을 찾는 것이 관건이다.
    • BART/T5 like (BART, mBART, Marian, T5, Meena...)

1. Decoders (autoregressive)

A) Add a classifier

디코더 모델은 기존의 언어 모델링 태스크를 따라 사전 훈련이 된 상태이다. 이를 감성 분석(sentiment classification)과 같은 분류 과제에 파인 튜닝하기 위해서는 분류기(classifier)가 되는 Linear 계층을 추가하고, 이 분류기를 마지막 단어의 은닉 상태에 대해서만 훈련시킨다. 마지막 단어의 은닉 상태에 이전의 문맥이 모두 포함되어있기 때문이다.
분류기는 다운스트림 태스크에 의해 정의되며 매개변수 AAbb는 무작위로 초기화되어있다. 매개변수 AAbb 가중치를 얻기 위해 파인 튜닝을 하면 신경망 전체에 역전파가 일어나며 모델 전체 매개변수가 다운스트림 과제에 적합한 매개변수 가중치를 가지게 된다. 이는 디코더 모델을 원래의 언어 모델로서 활용한다기보다는, 분류 과제를 위해 사전 훈련된 매개변수 가중치 초깃값을 빌려쓰는 용도로 활용한다고 볼 수 있다.

h1,...,hT=Decoder(w1,...,wT)yAht+b h_1,...,h_T=\mathrm{Decoder}(w_1,...,w_T) \\ y \sim Ah_t+b

B) Use as a generator

한편, 대화 생성(문맥: 이전의 대화 기록), 문서 요약(문맥: 문서) 등 출력이 여러 단어들로 이루어진 시퀀스인 경우 디코더 모델의 언어 모델적 특성을 활용하기 용이하다. 파인 튜닝 과정에서 사전 훈련된 디코더가 계산해놓은 현재 시점의 단어의 확률 분포 pθ(wtw1:t1)p_\theta(w_t|w_{1:t-1})를 매 시점마다 조정하며하기 때문이다. 예측한 단어를 출력함과 함께, 다음 시점에서의 입력으로 활용하는 자기회귀적 구조가 사용된다. 각 은닉 상태에 뒤따르는 마지막 linear 계층의 매개변수 AAbb는 사전 훈련된 가중치값들을 가진다.

h1,...,hT=Decoder(w1,...,wT)wtAht1+b h_1,...,h_T=\mathrm{Decoder}(w_1,...,w_T) \\ w_t \sim Ah_{t-1}+b

Generative Pretrained Transformer (GPT)

GPT는 트랜스포머 디코더를 12개 쌓아서 만든 모델이다.
오픈AI 연구진은 사전 훈련 아키텍처는 최대한 그대로 두고 다운스트림 태스크 훈련에 적합하도록 입력 형식을 수정하여(task-specific input transformations) 파인 튜닝을 진행했다.
예를 들어 자연어 추론(Natural Language Inference) 태스크 수행을 위해서는 파인 튜닝 데이터셋의 문장쌍 premise-hypothesis에 entailing(함의), contradictory(모순), neutral(중립)의 레이블을 붙인다. 그리고 [START], [DELIM], [EXTRACT] 토큰들을 문장쌍에 삽입한 뒤, 분류기가 [EXTRACT] 토큰의 임베딩으로부터 레이블을 추론하도록 훈련한다.

entailment 문장 예시

  • Premise: The man is in the doorway
  • Hypothesis: The person is near the door
  • [START]The man is in the doorway[DELIM]The person is near the door[EXTRACT]

(출처: Radford et al., 2018)

사전 훈련은 다운스트림 과제를 푸는 데 정말로 유용한가? 다운스트림 태스크에서 사전 훈련된 모델의 계층을 더 많이 사용할수록 성능이 향상되는데, 이는 사전 훈련 모델 각각의 계층이 다운스트림 문제를 푸는 데 있어 유용한 기능을 포함함을 의미한다. 또한, 사전 훈련에서 트랜스포머를 사용할 때와 LSTM을 사용할 때의 제로샷 성능을 비교해보니, 디코더 모델이 가지는 생성 능력은 사전 학습을 통해 더 넓은 기능성을 가지게 되고, 트랜스포머 모델의 어텐션 메모리가 전이 학습에 더 용이하다는 결론이 나온다.

Increasingly convincing generations (GPT2)

GPT-2는 GPT의 거대 버전으로, 더 많은 데이터에 학습되었다. 이전보다도 훨씬 더 자연스러운 자연어 생성 능력을 보여준다.

2. Encoders (auto-encoding)

인코더는 양방향 컨텍스트를 입력받기 때문에 문장 전체를 이해하는 장점이 있다. 그러나 현재 시점에 나타날 단어를 예측해야 하는 언어 모델링 태스크를 제대로 훈련시키기 위해서는 입력값을 전처리해주어야 한다.
아이디어는 마스크드 언어 모델(Masked Language Model) 을 만드는 것이다. 입력 시퀀스의 일정 비율의 토큰들을 [MASK] 토큰으로 대체(x~\tilde x)하고, 모델이 원래의 토큰(xx)을 추론하게 만든다. 그리고 마스킹된 단어에 대한 손실함숫값들만 사용하여 pθ(xx~)p_\theta(x|\tilde x)를 훈련시킨다.

BERT: Bidirectional Encoder Representations from Transformers

구글 연구진이 BERT 모델을 통해 최초로 Masked LM 훈련 목표를 제안했다. 그런데 [MASK] 토큰은 파인 튜닝 때 등장하지 않으므로, 모델이 마스킹되지 않은 단어들에 대해 지나치게 강한 표현들을 매개변수에 함의하는 등 문제가 생길 수 있다. 그래서 연구진은 마스크드 언어 모델의 학습을 위해 전체 서브워드 토큰의 15%를 사용하는데, 이중의 80%는 [MASK]로 변경, 10%는 랜덤 토큰으로 변경, 10%는 미변경 후 모델이 예측하도록 만들었다. 모델은 예측해야 하는 단어가 변경된 단어인지 원래 단어인지 알 수 없지만 최대한 문맥에 맞게 가능성이 높은 단어들을 예측하게 된다.

또한 모델이 문장 간의 관계를 이해할 수 있도록 다음 문장 예측(Next Sentence Prediction; NSP) 훈련 목표도 세웠다. 모델은 다음 문장이 자연스럽게 이어지는지, 아니면 무작위 추출된 문장인지 예측하게 된다. 하지만 디코더 모델처럼 자기회귀적인(1-word-at-a-time) 방식으로 문장을 생성할 수 없다는 점은 유의해야 한다.

Extensions of BERT

BERT의 연장선에서 다양한 모델들이 나왔는데, 이 중 BERT의 사전 훈련을 개선하는 데 도움을 준 모델은 크게 두 개가 있다.

  1. RoBERTa: BERT에 더 많고 긴 문장들을 학습시키고, 다음 문장 예측 훈련 목표를 제거한다.
  2. SpanBERT: 연속된 단어들을 마스킹하여 사전 학습 태스크를 더 고난도로, 유용하게 강화한다.

3. Encoder-Decoders (seq2seq)

인코더-디코더 구조에서는 언어 모델링 태스크를 입력 시퀀스의 절반에 대해 수행한다. 즉, 절반은 인코더에서 양방향으로 어텐션을 적용하여 단어를 표상하고, 절반은 디코더에서 예측에 사용한다.

T5

구글 연구진은 T5 모델에서 span corruption이라는 방법을 소개한다. 입력 시퀀스를 전처리할 때, 인코더에 들어가는 입력의 특정 span들을 토큰으로 교체하고, 디코더에서 이 토큰으로 교체된 부분들을 예측하도록 만드는 것이다. 이는 아주 다양한 범위의 질문들에 대해 답변하도록 파인 튜닝할 수 있다는 장점이 있다.

Very large models and in-context learning

지금까지 논의한 사전 훈련된 모델들은 다음과 두 방식으로 사용된다.

  1. 모델이 정의한 확률 분포에서 추출 (prompt 주기)
  2. 원하는 태스크에 대해 파인 튜닝 후 그것에 대한 예측 가져오기

최근에는 매우 큰 언어 모델을 가지고, 모델에 몇 가지 샘플을 주면 모델이 기울기 계산 없이 문맥으로부터 학습을 하는 시도들이 늘어나고 있다. 즉, in-context 예시들을 몇 개 주면 그것이 의미하는 태스크가 무엇인지 파악하고, 확률적으로 가능성 있는 출력값을 모델이 내놓는 것이다.


출처
1. Stanford CS224N NLP with Deep Learning | Winter 2021 | Lecture 10 - Transformers and Pretraining: slides, lecture video. 출처가 표기되지 않은 모든 그림은 모두 강의 슬라이드에서 캡쳐해온 것이다.
2. 서울대학교 언어학과 108.413A 컴퓨터언어학 강의 | 2022 봄학기
3. 위키독스 | 딥러닝을 이용한 자연어 처리 입문 | 13. 서브워드 토크나이저(Subword Tokenizer) | 01) 바이트 페어 인코딩 (Byte Pair Encoding) 등
4. Hugging Face | Course | Transformers | How do Transformers work?

profile
SNU AI

0개의 댓글