반응형

Prefix-Tuning 배경 설명

  • Prefix-Tuning은 NLP 모델의 fine-tuning 과정의 비효율을 해결하기 위해 발표된 방법론으로 2021년 ACL에서 발표되었다.
  • Pretrained model 전체를 fine-tuning하지 말고, prompting에 착안한 소규모의 parameter 학습만으로 fine-tuning과 비견하는 좋은 성능을 보인다.

 

Abstract

  • Fine-tuning은 대규모 데이터에서 학습한 pre-trained model을 down-stream task에서 활용할 수 있게 하여 좋은 성능을 낸다.
  • 하지만, model의 모든 parameter를 바꾸기 때문에, 각 task마다 전체 parameter를 저장해놔야 한다.
  • 이 논문에서는 prefix-tuning이라는 자연어 생성 task에서 fine-tuning 없이, model의 parameter를 고정하고도 적은 양의 prefix (continuous task-specific vector)만을 optimize 하여 사용할 수 있는 방법을 제시한다.
  • Prefix-tuning에서는 prefix를 virtual token으로 대하여 prompting처럼 활용한다.
  • 성능 실험을 위해, GPT-2에서 자연어 생성, BART에서 요약 작업을 테스트해 보았는데, 전체 parameter의 0.1% 만을 학습해도 fine-tuning과 비슷하거나, 일부 상황에서는 더 좋은 성능을 보인다. 

 

Introduction

[Fine-Tuning 방법]

  • 대규모 pretrained model을 활용하여 원하는 각 task에 맞게 fine-tuning 하는 방법이 주류로 자리 잡았다.
  • 하지만, fine-tuning 방법은 각 task마다, 전체 model의 parameter를 한 copy씩 저장하고 업데이트해야 한다는 문제가 있다. 특히, 언어모델의 parameter 수가 점점 커지면서, 더 큰 비용을 야기한다.

 

[Fine-Tuning 문제 해결]

  • 이는 자연스럽게 fine-tuning 과정을 경량화하는 방법이 제기되었다. 
  • 전체 parameter를 update 하는 것이 아닌, pretrained model을 고정해 놓고, 적은 양의 paramter만을 추가하여 model을 학습하는 방법이 등장하였다. (adapter-tuning)
  • 이런 경향이 계속되어, GPT-3에서는 task-specific tuning 없이, user가 요청에 대한 몇 가지 sample을 같이 제공하는 in-context learning & prompting 같은 방법이 제시되었다.

 

[Prefix-Tuning]

  • 이 논문에서는 prefix-tuning이라는 prompting에서 영감을 받은 방법을 제시한다.
  • Prefix-tuning에서는 prefix라는 continuous task-specific vector를 input으로 같이 활용하여 "virtual token"의 기능을 할 수 있도록 한다.
  • 이 virtual token은 실제 token과는 다른 개념으로 학습 가능한 parameter 만으로 구성되어 있다. 
  • Prefix tuning에서는 각 task에 따라, 각기 다른 prefix만을 학습하면 되기 때문에, 적은 양의 parameter만 학습하면 되고, 이에 따른 overhead도 매우 적다.
  • 또한, Fine-tuning과 달리 prefix tuning은 user에 따라 각기 다른 prefix를 관리하면 되기 때문에, 다른 user 간의 data가 섞여서 오염되는 현상이 발생하지 않는다. 따라서, 한 batch에서 여러 user와 task를 학습할 수 있어 효율적이다.

 

[실험]

  • Prefix-tuning의 실험을 위해, GPT-2에서 table-to-text 생성과 BART에서 text 요약을 실험했다.
  • 용량 관점에서 prefix-tuining은 fine-tuning에 비해 1000배 적은 parameter만을 사용했다.
  • 성능 측면에서는 table-to-text에서는 fine-tuning과 거의 비슷한 성능을 보여주었고, text 요약에서는 약간의 성능 하락만 존재하였다. 
  • 학습 때 보지 못한 주제들을 다루는 경우들에 대해서는 오히려 좋은 성능을 보이기도 했다. 

 

 

Prefix-Tuning

  • Prefix Tuning은 prompting에서 영감을 받았기 때문에, prompting에 대한 이해가 필요하다.

 

[Intuition]

  • Prompting은 언어모델에서 model parameter 수정 없이 적절한 context를 제공해 주면, 언어모델이 원하는 결과를 제공하도록 조종할 수 있는 방법이다.
  • 예를 들어, "오바마"라는 단어를 생성하고 싶을 때, 언어모델에 "버락"이라는 단어를 input으로 주면, 그 단어 뒤에 나올 가장 확률 높은 단어 "오바마"를 출력하는 것과 같다.
  • 이 개념을 확장하면, 자연어 생성 task에서 언어모델에 우리가 원하는 결과를 얻도록 조종할 수 있다. 
  • 하지만, prompting에 문제가 있는데, 원하는 결과를 위한 context가 존재하는지에 대해 명확하지 않다. 
  • 어떤 context가 결과를 낼 수도 있고, 결과를 못 낼 수 도 있다.
  • Data를 활용한 optimization이 도움이 될 수 있지만, discrete optimization(token은 discrete 하기 때문)은 학습이 매우 어렵다.
  • Discrete token을 이용한 optimize보다, 논문에서는 continuous word embedding 단에서 instruction을 optimize 하는 방법을 선택하였다.
  • 이런 방법이 실제 단어와의 matching을 요하는 token 단에서 생성한 prompt보다 더 명확한 표현이 가능하다. 
  • 이렇게 word embedding 단에서 instruction을 주는 방법보다, activation 단의 각 layer에서 guide를 제공하는 방법이 긴 범위의 dependency를 고려할 수 있기 때문에 효과적이다.
  • 따라서, prefix-tuning에서는 모든 layer에서 prefix를 optimize 한다.

 

[Method]

  • Prefix-tuning은 1) autoregresive LM에서 input으로 같이 제공, 2) encoder와 결과에 각각 같이 포함할 수 있다.

  • Autoregressive model에서 model의 parameter는 아래와 같이 정해진다. 여기서, Pθ는 (prefix 길이) X (hi의 dimension)의 matrix로 초기화된다. 

  • 학습의 목표는 fine-tuning과 동일하지만, 학습해야 할 parameter가 달라진다. LM의 ϕ는 고정 후, θ만 학습한다. 
  • i가 prefix에 존재하면(prefix index 위치이면), hi는 Pθ의 값을 그대로 copy 하면 된다. 
  • 만약, i가 prefix index에 포함되지 않는 경우에도, hi는 Pθ에 의존하게 된다. (prefix는 항상 입력값의 왼쪽에 붙기 때문에 오른쪽에 영향을 미치기 때문이다.→ 왼쪽에서 오른쪽으로 token이 처리되기 때문) 즉, i가 prefix index에 없더라도, prefix가 영향을 미치게 된다. 

 

[Parameterization of Pθ ]

  • 경험적으로 Pθ parameter를 바로 update 하는 것은 불안정한 optimization을 이끌어 성능하락으로 이어진다.
  • 따라서, Pθ matrix를 MLP layer들을 거쳐, reparametrize 한다. 이때, reparametrization의 결과로 나온 P'θ는 row 수는 유지하면서 (prefix length) 다른 column dimension을 가지도록 한다. (table-to-text는 512, summarization은 800)

 

실험 결과

[Table-to-text Generation]

  • GPT-2 model 환경에서 E2E, WebNLG, DART dataset에서 실험했다.
  • Pretrained model의 0.1%의 task-specific parameter를 사용하였다. 
  • Prefix-tuning은 다른 lightweight tuning 방법보다 좋은 performance를 달성했고, fine-tuning에 버금가는 좋은 성능을 보였다.
  • 공평한 비교를 위해, 동일 parameter 양(0.1%)을 사용한 adapter tuning과 비교해 봤을 때, dataset 당 평균 4.1 BLEU 성능 향상이 있는 것을 보였다.
  • 더 많은 parameter 양(3%)을 사용한 adapter tuning이나 fine-tuning(100%)과 비교해도, prefix tuning은 거의 비슷하거나 좋은 성능을 보였다.
  • 이것은 prefix tuning에서 학습한 parameter가 더 효과적으로 정보를 가지고 있음을 의미하는 것이다. 
  • 추가적으로, DART에서 prefix-tuning의 좋은 성능ㅇ느 다양한 domain들과 넓은 범위의 관계들에서 prefix tuning의 효과성을 보여준다. 

 

 

[Summrization]

  • Prefix-tuning은 0.1% parameter 추가만으로 fine tuning에 비해 약간만 낮은 ROUGE-L을 보인다.

 

 

Reference

LI, Xiang Lisa; LIANG, Percy. Prefix-tuning: Optimizing continuous prompts for generation. arXiv preprint arXiv:2101.00190, 2021.

반응형

 

 

PaLM 배경 설명

  • PaLM은 google에서 2022년에 발표한 LLM 관련 논문이다.
  • GPT 이후의 NLP 분야의 거의 모든 논문이 그랬듯, Model Paramter를 더 크게 늘렸고, GPT-3의 흐름을 따라, task-specific 한 model이 아닌, 다양한 NLP 분야를 cover 하는 모델로 학습된다.
  • 사실 GPT 등장 이후로 LLM 모델에서의 구조 변화는 크게 없다. Model parameter를 계속 늘리고, 이에따라 성능은 계속 좋아진다.  따라서, 기존 LLM과 달라진 부분에 집중하여 논문 리뷰를 시작한다.

 

Abstract

  • Language Model은 few-shot 방식을 사용하여, task-specific 학습에 필요한 데이터의 양을 줄이면서, 좋은 성능을 보여줬다.
  • few-shot에서 scaling의 효과를 확인하기 위해, 540 billions parameter로 구성된 Transformer 기반의 Pathways Language Model(PaLM)을 소개한다.
  • 이 논문에서는 PaLM을 multiple TPU Pods 들을 효율적으로 학습할 수 있는 "Pathway" 방법을 이용하여 학습한다.
  • 여러 language understanding과 generation 분야에서 SOTA를 달성하여, scaling의 장점을 보여준다. 
  • 특히, 몇가지 task들에서는 finetuned 방식의 SOTA를 능가하는 좋은 성능을 보여주고, BIC-bench에서 인간의 능력을 뛰어넘는다.
  • BIC-bench에서 model의 scale에 따라 performance가 discontinuous 한 향상을 보여준다. 
  • 또한, PaLM은 multilingual task와 code 생성에서 좋은 성능을 보인다. 

Introduction

  • 최근(이 당시) 몇년동안, 언어 이해와 생성 분야에서 large language model을 pre-training과 fine-tuning 방식으로 학습하는 방식으로 큰 성능 향상을 이뤘다.
  • 하지만, 이러한 모델들은 finetuning 과정에서 상당한 양의 task-specific 데이터를 필요로 하고, task에 맞는 학습을 위한 cost가 든다. 
  • GPT-3은 large autoregressive language model들로 few-shot을 진행하는 방식으로 학습하여, 많은 양의 task-specific 데이터와 model parameter updating 과정이 필요 없도록 하였다. (GPT-3 관련 내용은 아래 링크 참조)

2023.06.12 - [NLP 논문] - GPT-3 (Language Models are Few-Shot Learners) 논문 리뷰

 

GPT-3 (Language Models are Few-Shot Learners) 논문 리뷰

GPT-3 배경 설명 GPT-3은 요즘 많이 사용하는 ChatGPT의 근간이 된 논문으로, 2020년 OpenAI에서 NIPS에 발표한 논문이다. Language Model의 parameter가 꾸준히 늘어가는 추세였는데, GPT-3에서는 기존의 가장 큰

devhwi.tistory.com

  • 그 후로, GPT-3 기반의 후속 모델(GLam, Gopher, Chinchilla, LaMDA 등)들이 등장해 좋은 성능을 보였다.
  • 이러한 모델들의 성능 향상을 위한 주요 접근 방법은 다음과 같다.
    1. model의 depth와 width를 늘린다. (model size를 늘림)
    2. model의 학습을 위한 token의 양을 증가
    3. 다양한 dataset을 사용하거나, dataset을 정제
    4. sparsely activated module등으로 학습 cost는 유지하면서 model capacity를 증가
  • 이 논문에서도 위의 방식들을 따라, 780 billion token을 이용하여 540 billion parameter를 가진 Transformer 기반 model을 학습한다.
  • 이를 위해, "Pathways"라는 수천개의 acclerator chip들 사이에 large network 학습을 효율적으로 해주는 방식을 도입한다. 
  • 이 논문에서 소개한 모델 PaLM은 natural language , code, mathematical reasoning 등의 task들에서 few-shot 방식의 SOTA를 달성했다. 

 

Model Architecture

  • PaLM은 몇가지 변경을 제외하고. Transformer의 decoder-only 모델을 그대로 따른다. 
  • 기존 Transformer 모델들과 달라진 점은 다음과 같다.
    • SwiGLU Activation : SwiGLU는 Relu를 대체하기 위해, 구글이 개발한 Swish Activation 함수에 GLU(Gated Linea Unit)을 적용한 함수이다. 사용한 이유는 기존 연구들에서 성능이 좋아서라고 한다.
    • Parallel Layers : 병렬 처리를 해, 기존의 Transformer block의 식을 바꿨다. Large Scale에서 15% 정도 학습 속도가 빠르지만, 성능 하락은 모델이 커질수록 거의 없다고 한다. 
      • 기존  $$ y = x+ MLP(LayerNorm(x+Attention(LayerNorm(x)))) $$
      • 변경  $$ y = x+ MLP(LayerNorm(x))+Attention(LayerNorm(x)) $$
    • Multi-Query Attention : query, key, value의 feature size가 [k, h]인 기존 transformer 구조와 달리, key와 value를 [1, h] 크기로 사용한다. (query는 [k, h]) 이것이 model 성능에 영향을 미치지 않으면서, 학습 시간 cost 절감에 큰 역할을 한다. 
    • RoPE Embedding : position embedding에 long-sequence 처리에 유리한 RoPE Embedding을 사용하였다. 
    • Shared Input-Output Embeddings
    • No Biases : Bias를 사용하지 않았다. 이것이 large model 안정성을 높여준다고 한다.
    • Vocabulary : SentencePiece(256k token)을 사용했다. 

 

Model Scale Hyperparameters

  • 3개의 모델(8B, 62B, 540B)을 사용했다. 

 

Training Dataset 

  • PaLM의 pretraining dataset으로는 high-quality의 780 billion의 token이 사용되었다. 
  • dataset은 webpage, books, Wikipedia, news articles, source code, social media conversation등 다양한 소스에서 가져왔다. 
  • 특히, Github에서 Source code를 가져왔는데, Java, HTML, JavaScript, Python, PHP, C# 등등의 196GB의 소스 코드를 포함한다. 또한, Source code 수집 시, 중복을 제거하여 다양한 코드 등을 수집했다.

 

Training Infrastructure

사실 PaLM이 주목받는 이유가 Pathways를 사용하는 해당 Chapter 때문인것 같다. 아마도, Pathways를 논문으로 굳이 읽는 이유는 점점 늘어나는 LLM의 학습을 위해 엔지니어링의 최강자인 Google은 어떤 방법을 사용했을까? 때문일 것이다. 

 

  • 우선, PaLM의 codebase는 JAX와 T5X이고 TPU v4 Pods를 통해 학습되었다. PaLM 540B는 data center network(DCN)로 연결된 2개의 TPU v4 Pods를 통해 model parallelism과 data parallelism을 사용해서 학습되었다. 
  • 각 TPU Pods들은 3072개의 TPU v4 chip들로 구성되어 있고, 768 hosts에 연결되어 있다. (즉, 총 6148개의 chip과 1536개의 host가 존재한다.)
  •  이 논문에서는 pipeline parallelism(layer 등의 단위의 parallelism을 사용)을 사용하지 않은 것을 큰 장점으로 여기는데, pipeline parallelism에는 몇 가지 문제가 있기 때문이다.
    • pipeline 구조에서는 pipeline이 비어서 쉬게되는 devices들이 생긴다.
    • 각 micro-batch의 weight를 불러오기 위해, 높은 memory bandwidth를 요구한다. 
    • 일부 케이스에서는 software complexity가 늘기도 한다. 
  • 이 논문에서는 pipeline 없이 PaLM 540B를 6144개의 TPU chip을 사용하여 학습했다는 것을 강조한다. 
  • 각 TPU v4 Pod은 model parameter들을 full copy 한다. (3072개 chip에 12개 방법의 model parallelism과 256개의 data parallism을 사용한다. 2가지 parallelism을 동시에 사용하는 것을 2D parallelism이라고 한다.)

[학습 방법]

  • forward pass에서는 data parallel axis로 weight를 모으고, 각 layer로부터 하나의 fully sharded activation이 저장된다. 
  • backward pass 때,  forward pass에 사용되었던, activation을 재사용하는 것이 아니라, activation을 다시 계산해서, 재생성하여 사용한다. 이것은 더 큰 배치에서 학습 처리량을 높이도록 해준다. 

[Pathways]

  • PaLM은 이름대로, TPU v4 Pod들에 Pathways system을 사용한다.  PaLM은 Pathways의 client-server 구조를 사용하여 pod level에서의 2가지 방법의 data parallelism을 구현한다. 
  • Python client가 training batch의 절반씩을 각 pod으로 보내고, 각 pod은 forward와 backward computation을 data, model parallelism을 이용해 계산한다.
  • Pod들은 gadient를 다른 pod에 보내고, 각 pod은 local(자신이 만든 것)과 remtoe(다른 pod으로부터 받은 것) gradient를 모아서, parameter update에 사용한다. 
  • 이런 구조는 single Pod을 이용한 학습보다 정확히 2배의 throughput 증가는 일어나지 않고, 약 1.95배 정도의 throughput 증가를 이끄는데, 이것은 network적 이슈와 관련있다. 따라서, network 설계를 열심히 했다고 한다. 

 

 

Training Efficiency

  • 이전의 많은 language model에서는 accelerator efficiency를 hadware FLOPs utilization(HFU)를 통해 진행하였다. 이것은 이론적 peak FLOP 개수로 관찰되는 FLOP 개수를 나눈 것이다.
  • 하지만, 이 지표는 약간의 문제가 있다.
    • hardware FLOP의 갯수는 system-depedent와 implementation-dependent, compiler의 design chice에 따라 달라진다. 
    • 관찰되는 FLOP 갯수는 count와 track에 사용되는 방법론에 따라 달라진다. 이것은 hardware performance를 통해 측정되는 것이 아닌, analytical accounting을 사용하기 때문이다. 
  • 이러한 문제가 있어서, LLM training efficiency를 측정하기에 HFU는 충분치 않다.
  • 이 논문에서는 implementation indepenet 하고 system efficiency에 따라 정확한 비교를 가능하게 해주는 model FLOPs Utilization(MFU)를 제시한다. 
  • MFU는 observed throughput(tokens-per-seconds)를 이론상 최대 system operating peak FLOP으로 나눈 값이다. 
  • 특히, 이론상 최대 throughput은 forward와 backward pass를 계산하면 된다. 
  • 여하튼, 본인들이 만든 지표로 비교해보았을때, PaLM이 가장 효율적인 연산을 하고 있다고 한다. 

 

Evaluation

  • 역시, parameter를 많이 사용해서, 기존 few-shot 기반의 SOTA들을 모두 갱신하였다.

  • 심지어 SuperGLUE등에서는 fine-tuning 기법들과 맞먹을 정도로 좋은 성능을 보여준다. 

  • Reasoning : GSM8K에서 8-shot evaluation을 진행했을 때, 기존 SOTA인 GPT-3을 이긴다.

  • Few-shot의 장점인 다양한 분야에 적용성에서, 놀랄만한 부분은 Code를 고치는 것이나 Translation에서도 좋은 성능을 보인다는 것이다. 

 

Conclusion

  • 이 논문에서는 few-shot LM 방향으로의 연장선인 540B parameter로 구성된 PaLM을 소개한다. 
  • PaLM은 NLP 29개 분야 중 28개에서 few-shot SOTA를 기록했다. 또한, BIG-bench에서 5-shot LaLM은 인간의 평균 performance보다 높은 성능을 보였다. source code 이해나 생성에서도 좋은 성능을 보였다. 
  • reasoning에서 chain-of-though prompting을 사용했을 때, 좋은 모습을 보였다. 
  • 이에 따른 결론은 다음과 같다. 
    • few-shot NLP에서 scale에 따른 성능 향상은 아직 끝나지 않았다. (log-linear하게 증가했다.) 이 성능 향상은 사실은 discontinuous 하다. 
    • reasoning task들에서 보인 성과들은 중요한 의미를 갖는다. 이것은 model의 결정 과정에서 어떤 과정을 이용하여 최종 결과가 나왔는지를 end user에게 설명할 수 있게 할 것이다. 아직 멀었지만, 잘 만든 prompt가 이것을 가속화할 것이라고 한다. 
    •  network architecture와 training schema에 많은 여지를 남겼다. Pathways를 시작으로 많은 구조들이 생겨날 수 있을 것이다. 

 

Reference

Chowdhery, Aakanksha, et al. "Palm: Scaling language modeling with pathways." arXiv preprint arXiv:2204.02311 (2022).

 

 

총평

  • 읽은 논문 중, 비교적 최근 논문인데, 이쯤때부터, 모델 크기가 커질수록 성능은 무조건 커진다는 가정하에, 어떻게 빠르고 효율적으로 학습할 것인가 하는 문제에 봉착한 것 같다.
  • 적어도 NLP 분야에서는 앞으로 엔지니어와 H/W의 비중이 점점 더 커질 것 같다. 
반응형

 

DeBERTa 배경 설명

  • DeBERTa는 2020년 Microsoft에서 ICLR 2021에 낸, BERT의 성능을 개선한 논문이다. 
  • 기존 BERT를 개선한 논문들은 엔지니어링적 개선에 가까웠는데, 이 논문은 새로운 방법들을 제시해서, BERT의 성능을 향상했다.
  • ICLR에 발표된 논문인만큼, 실험과 설명이 자세하게 적혀있어, 직접 읽어보는 것을 추천한다.

Abstract

  • 이 논문에서는 DeBERTa(Decoding-enhanced BERT with disentangled attention)이라는 새로운 모델을 제시한다.
  • 이 모델은 2가지 새로운 방법을 사용하여, BERT, RoBERTa보다 높은 성능을 보인다.
    1. disentangled attention : 각 word들은 content와 position vector로 표현되고, 그들의 contents와 상대적 위치에 따라, words들 간에 attention을 구한다.
    2. enhanced mask decoder : 개선된 mask decoder로 decoding layer의 절대 위치를 포함하여, masking token을 예측한다.
  • 추가적으로, 새로운 virtual adversarial trainin이 model의 generalization을 향상하기 위해 사용된다.
  • 이를 통해, NLU(자연어 이해) 뿐 아니라, NLG(자연어 생성)에서도 기존 모델인 BERT, RoBERTa에 비해 좋은 성능을 보인다.

Introduction

  • Transformer는 문장 내의 각 단어가 미치는 영향을 self-attention으로 연산하여, 병렬 수행이 가능하도록 하였다.
  • 이 논문에서는 distentangled attention과 enhanced mask decoder를 사용하여, BERT의 성능을 개선한, DeBERTa를 소개한다.

[Disentangled attention]

  • 기존 positional 정보와 content 정보의 합으로 표현되던 BERT의 embedding과 다르게, DeBERTa에서는 content와 postion vector를 따로 encode 한다.
  • word 사이에 attention weights는 그들의 contents와 상대적 위치를 고려하여, disentangled matrics를 통해 구해진다.
  • 이것은 attention이 contents 뿐 아니라, 그 사이의 상대적 위치에 의존한다는 것에서 비롯되었다.

[Enhanced mask decoder]

  • DeBERTa도 BERT와 동일하게 masked language modeling을 이용해서 학습한다.
  • Disentangled 단계에서 이미 상대적 위치는 고려했지만, prediction에서 매우 중요한 각 단어의 절대적 위치는 고려하지 못한다. (절대적 위치는 문장 내에서 역할을 의미할 수 있다.)
  • DeBERTa에서는 각 단어의 절대적 위치 정보를 softmax 단 바로직전에 합쳐준다.
  • 추가적으로, 이 논문에서는 fine-tuning 단계에서 새로운 virtual adversarial training 방법을 제시한다. 이 방법은 model의 generalization을 향상한다.

Background

[Transformer]

  • Transformer에 대한 설명은 아래 참조
  • 기본 Transformer에서는 word의 위치정보가 부족하다. 이를 해결하기 위해, 문장 내 단어의 상대적 위치와 절대적 위치를 고려하는 방법들이 나왔지만, 일반적으로 상대적 위치를 사용하는 것이 효과적으로 알려져 있다.
  • 이 논문은 각 단어가 word content와 position의 2개의 독립적인 vector를 사용하고, attention weight를 각 vector의 disentangled metrics를 사용해서 구한다는 점에서 기존 방법들과 차이점이 있다.

2023.05.08 - [NLP 논문] - Transformer (Attention Is All You Need) - (1) 리뷰

 

Transformer (Attention Is All You Need) - (1) 리뷰

Transformer 배경 설명 Transformer는 Google Brain이 2017년 "Attention is All You Need"라는 논문에서 제안된 딥러닝 모델이다. Transformer는 기존 자연어 처리 분야에서 주로 사용되던 RNN, LSTM 같은 순환 신경망 모

devhwi.tistory.com

[Masked Language Model]

  • 자연어 모델에서는 BERT 이후로 Masked Language Modeling을 많이 사용한다.
  • Masked Language Modeling에서는 model parameter θ를 학습하기 위해, 다음의 objective를 사용한다.

DeBERTa

[disentangled attention]

disentangled attention 식을 만들기 위해, 몇 가지를 설명한다. 논문 내에는 따로 구분 짓지 않았지만, 설명 편의를 위해 임의로 3가지 part로 나눴다.


1. Vector 구성 요소

  • 문장 내 i번째 token은 다음과 같은 두 개의 vector로 구성된다.
    • i번째 contents vector: \(H_i\)
    • i번째 token에서 j번째 token과의 상대적 position : \(P_{i|j}\)
  • i번째 token과 j번째 token 간의 attention score는 다음과 같이 계산된다.

→ 위의 수식은 4개의 component로 분리되는데, 왼쪽부터 각각, "content-to-content", "content-to-position", "position-to-content", "position-to-position"이다.  

 

  • 이 논문이 지적하고 있는 것은 과거 논문들에서는 attention의 4가지 component 중, "content-to-content"와 "content-to_position"만 사용하고 있다는 것이다. (content vecotor에 position을 더해서 만들었기에)
  • 특히, 문장 내에서 두 단어 간의 상관관계를 고려할때, 단순 contents만 보는 것이 아니라, 두 단어간의 상대적 위치도 매우 중요하기 때문에 "position-to-contents"와 "contents-to-position"을 모두 봐야 한다.
  •  수식 내용 중, position vector가 상대적 위치를 기반으로 만들어졌기 때문에, "position-to-position"은 추가적인 정보를 주지 못하므로, 수식에서 삭제한다.   

 

2. Self-attention operation

  • self-attention은 아래와 같은 수식을 통해 구해진다. Output hidden vector인  \(H_o\)를 구하기 위해, Query(Q)와 Key(K)를 통해 Attention(A)을 구하고, Attention을 Normalize 한 후 Value(V)에 곱한다. 

 

3. 상대적 위치  

  • 이 논문에서는 상대적 위치를 아래와 같이 계산한다. 

→ k는 maximum relative distance. 위의 거리 식을 생각해 보면, 현재 token의 앞쪽에 위치한 token은 distance가 0으로 주의 깊게 보겠다, 뒤쪽에 위치한 token 중, k 이내는 가까울수록 고려 많이 하겠다, 그 외에는 조금만 고려하겠다는 뜻으로 이해된다.


  • 위의 1,2,3번을 종합하면, disentangled attention은 1.attention은 3개 component로 구성되었고, 2. self-attention 기반, 3. 상대적 거리를 고려하는 attention이다. 
  • 최종적으로 output hidden vector는 아래와 같이 구해진다.

→ 주의해야 할 점은, "position-to-content"에 \(\delta(j, i)\)가 사용되었다는 점인데, 이것은 "position-to-content"를 구할 때, 사용되는 content가 j번째 content이기 때문이다. 

 

[enhanced mask decoder]

  • disentangled attention에서 relative position은 고려되었지만, absolute position은 실제 mask-prediction에 중요함에도 불구하고, 고려되지 않았다. 
  • 특히, 뉘앙스 같은 것은 absolute position 정보가 중요하다. 
  • DeBERTa에서는 모든 Transformation layer들의 직후, softmax layer 전단에 absoulte position 정보를 넣어주었다.
  • 이를 통해, Transformer가 elative position을 우선 고려하되, absolute position 정보도 보완 정보로 사용할 수 있게 하였다. 
  • 이러한 모델을 Enhanced Mask Decoder(EMD)라고 부른다. 
  • BERT 방식(input 정보에 absolute position 정보를 넣는 것)에 비해 성능이 좋다.

 

Scale Invariant fine-tuning

  • Layer Noramlization 기법에 영감을 받아, SIFT 알고리즘을 사용하였다. 
  • SIFT는 word embedding vector를 확률 vector로 normalization 하고, normalize 된 word embedding에 preturbation을 적용한다. 
  • 이로 인해,  fine-tuend model의 성능이 상당히 향상되었다.

 

 

Experiment

  • Large model : GLUE에서 다른 large model에 비해 좋은 성능을 보였다. 

  • Base model : Base 모델에서도 좋은 성능을 보였다.

 

ETC

  • 사용한 데이터 셋 

  • model 학습을 위한 paramter

  • RoBERTa와 attention visualization 비교

→ RoBERTa는 diagonal line이 두드러지지만, DeBERTa는 그렇지 않다. 이것은 EMD의 영향인 것으로 확인된다.(DeBERTa가 다른 단어를 골고루 본다는 뜻인 것 같다.)

RoBERTa는 vertical line이 2줄 존재하는데, 하나는 special token(CLS)등 때문이고, 하나는 high frequency token(예시: a, the) 때문이다. DeBERTa는 special token 영역의 1줄만 존재한다.(특정 단어에 무조건 의존하는 현상이 적다는 것을 말하는 것 같다.)

 

Reference 

He, Pengcheng, et al. "Deberta: Decoding-enhanced bert with disentangled attention." arXiv preprint arXiv:2006.03654 (2020).

 

 

총평

  • 실험이 정말 많아서, 많은 생각을 할 수 있게 만든 논문이다.
  • BERT 관련 논문들을 계속 읽어오고 있는데, 모델 단의 개선 아이디어는 처음인 것 같아서, 재밌었다.

 

DeBERTa 관련 git : https://github.com/microsoft/DeBERTa

반응형

BERT 배경 설명

  • BERT는 Google에서 2018년 10월에 나온 NLP 논문이다.
  • 사실 지금은, Chat-GPT 때문에 GPT가 자연어 처리의 대명사가 되었지만, GPT 전에는 BERT가 자연어 처리의 대표 모델로 불리곤 했었다. 
  • BERT는 성능이 매우 좋아서, 아직도 많은 NLP Task에서 사용되고 있다.
  • 개인적으로 이 논문을 읽으면서, 2018년 6월에 나온 GPT-1 논문을 굉장히 많이 신경 쓰고 있다는 인상을 받았다. 

Abstract

  • 이 논문에서는 BERT(Bidirctional Encoder Representations form Transformers)라는 새로운 모델을 소개한다.
  • 기존의 (그 당시) 유행하는 모델들(특히 GPT-1)과 달리 BERT는 단어의 양방향 데이터(이전 데이터와 이후 데이터 모두)를 사용한다.  
  • 이러한 구조로 BERT는 별도의 task-specific한 변형 없이, 하나의 layer만 추가해도 대다수 NLP task(11개)에서 좋은 성능을 보여준다.

 Introduction

[문제 제기]

  • 기존의 pre-trained language representations들을 specific 한 task에 적용하는 방식은 feature-basedfine-tuning으로 크게 2가지로 나뉘어진다. 
    • Feature-based : task-specific한 구조를 가지고 있고, pre-trained 된 representations들을 추가적인 feature로만 사용한다. (ELMo)
    • Fine-tuning : 최소한의 task-specific한 parameter들을 가지고, 모든 pre-trained parameter들을 fine-tuning 해서 사용한다. (GPT)
  • 하지만, 기존의 방식들은 pre-trained model을 학습하는 과정에서 이전 데이터들만 사용하는 unidirectional launguage models (단방향 모델)이다. 
  • 이러한 방식은 pre-trained representations들의 효과를 감쇠한다. 특히, fine-tuning model에서 이런 감쇠 효과는 더 크다. 

[모델 제시]

  • 이 논문에서는 "BERT"라는 모델을 제시하여, fine-tuning 방식의 pre-trained language model의 성능을 향상 시킨다.
  • BERT는 "masked language model(MLM)" pre-training objective를 이용하여, 단방향 데이터만을 사용하는 기존의 한계를 경감한다. 
  • 은 input 데이터의 token들에 randomly 하게
  • 기존 left-to-right language model pre-training과 달리, MLM은 left와 right context 정보를 모두 활용할 수 있다. 
  • 추가적으로 "next sentence prediction"을 통해, text-pair 들의 representation들을 학습한다. 

 Model

  • BERT는 기존의 Fine-tuning 방법들(특히 GPT-1)처럼 2개의 step으로 구성된다.  (1) pre-training (2) fine-tuning

  • Model Architecture : BERT의 모델 아키텍처는 Transformer를 그대로 사용했다. Paper에서는 두 버전의 BERT 모델을 소개한다. 첫 번째로, GPT와 비교하기 위해, 동일 모델 사이즈를 가지고 있는 BERT BASE(12개의 Layer, 768 Dimension, 16개 Self-Attention)이다. 두번째로, BERT LARGE(24개의 Layer, 1024 Dimension, 16개의 Self-Attention) 이다. 
  • Input/Output Representations : BERT는 WordPiece Embeddings를 사용한다. BERT는 다양한 NLP task에 응용할 수 있도록, 단일 문장이나 문장의 짝 모두를 input으로 사용할 수 있도록 한다. 모든 문장의 맨 첫 token은 special token인 "[CLS]"로 시작하고(해당 Token 등은 sentence 단위의 classification에 활용된다.), 두 문장이 Input으로 들어올 때는 두 문장 사이에 "[SEP]" token을 넣어 구분하고, 어느 문장에 소속된 token인지 구분할 수 있는 learned embedding을 문장을 이루는 각 token에 추가했다.(Segment embeddings)

아래 그림은 BERT의 input representations를 나타내는데, token 자체의 embeddings와 어느 문장에 속하는지를 나타내주는 Segment embeddings, token의 문장 내 위치를 가르쳐주는 Position embeddings로 구성되어 있다. 

 

 

  • BERT의 Pre-Training 단계
    • 논문 내내 강조하는 것이, BERT는 단방향 모델이 아닌, 양방향 Language model을 사용한다는 것이다. 
    • Masked LM 
      • 직관적으로 생각해도(수능 빈칸 추론 문제만 생각해 봐도) 단어를 추정할 때, 그 단어의 앞부분만 보는 것이 아닌 뒷부분에서 힌트를 얻을 수 있다. 하지만, 기존 모델들은 한쪽 방향의 단어들만으로 Language model을 학습했다. BERT는 지금껏 계속 강조해 온 대로, 양방향의 데이터를 모두 활용하기 위해 Masked LM을 제시한다. 
      • Masked LM은 일정한 확률로 무작위로 input token을 가리고("[MASK]" token으로 대체), 문장 내 다른 단어들을 통해, 해당 token을 추정하는 방식(기존의 LM과 동일하게 cross-entropy)으로 학습된다
      •  이런 Masked LM에는 한 가지 문제가 있는데, pre-training에 빈번하게 등장하는 "[MASK]" token이 실제 fine-tuning 과정에서는 없다는 것이다.(pre-training 학습을 위해 임의로 넣어주었기 때문에) 이를 해결하기 위해, 논문에서는 token을 무조건 [MASK]로 대체하는 것이 아닌, 확률적으로 바꿔주는 스킬을 사용한다. 따라서, 한 문장에서 15% 정도의 token의 위치를 1) 80% 확률로 [MASK] token으로 대체, 2) 10% 정도 random 한 token으로 대체, 3) 10%는 바꾸지 않고 원래 단어로 둔다. → 특정 token 들에 의지해서 masked 된 token을 추정하는 것을 방지해 주는 Augmentation 효과도 있을 것이다.  
    • Next Sentence Prediction
      • 앞부분까지는 한 문장 내에서 단어를 추정하기 위한 방법이었다. 하지만, 많은 NLP task들은 문장 간의 관계가 중요한 경우가 많다. 이러한 문장 간의 관계는 기존 Language model로는 잡 포착하기 어려웠다.
      • 문장 간의 관계를 학습하기 위해, BERT에서는 next sentence prediction task를 이용하였다. 
      • 앞서, 문장의 Embeddings 중 Segment Embedding이 존재하였는데, 실제 데이터들은 한 문장 뒤에 다음 문장이 오는 구조로 되어있다. (실제 문장이든, QA 문장이든 선후 관계가 존재한다.) 
      • next sentence prediction task에서는 실제 데이터에서 뒤에 오는 문장을 임의로 변경하여, false 데이터를 만들어서 두 문장 간의 선후 or 인과 관계에 대한 binary classification을 학습한다.  
      • 이러한 구조는 매우 간단하지만, QA 등의 문장 간의 인과 관계가 중요한 task에서 매우 효과적인 성능 향상을 보인다고 한다.
  • BERT의 Fine-tuning 단계
    • BERT의 fine-tuning 과정은 Transformer 구조를 그대로 이용하였고, Input의 형태가 단일 문장이던, 문장의 짝이던 동일하기 때문에 매우 직관적이다. 
    • 언급한 대로, Input의 형태는 task에 상관없이 모두 동일하고, Output은 앞서 문장 앞에 넣어주었던 [CLS] token을 classification을 위한 output layer의 input으로 넣어 학습하면 된다.
    • Pre-training 과정은 매우 많은 시간과 H/W 리소스가 필요하지만, fine-tuning은 구조가 간단하고 simple하기 때문에 inexpensive 한 과정이라고 한다. (사실 이 특징 때문에, AI의 패러다임이 모델 중심에서 데이터 중심으로 바뀐 것 아닌가 싶다.) 

 

Experiments

  • BERT를 이용해서 11개의 NLP task를 실험했다. 
  • GLUE(General Language Understanding Evaluation)를 포함한 다양한 언어 모델에서 다른 모델들을 능가하는 performance를 보여준다. 
  • 실험에서 놀랄만한 점은, BERT가 인간보다 높은 성능을 보이는 테스트도 있다는 것이다. 

→ BERT도 GPT-1과 마찬가지로, 논문 자체가 실용성에 초점을 맞추고 있다 보니, 학습 부분을 자세히 설명해 놓았다. 자세한 내용은 논문을 직접 참고하는 게 좋을 것 같다. 

 

Conclusion

  • 최근에(그 당시에) 수많은 unlabeled 데이터를 통해, unsupervised pre-training을 진행하는 것이 NLP 분야에 엄청난 발전을 이뤘다. 
  • 이 논문의 가장 큰 contribution은 이러한 방법을 통합하는 bidirectional 구조를 제안했다는 것이고, 이러한 pre-trainin g구조가 다양한 NLP 분야에 활용할 수 있다는 점이다.   

출처

Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. 2019. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. In Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers), pages 4171–4186, Minneapolis, Minnesota. Association for Computational Linguistics.

 

총평

지금 생각하면 당연한 것인데, Bidirectional 구조를 제안하고, 실제 NLP 분야에서 좋은 성능을 보여줬다는 것이 신기하다. 개인적으로 논문 전체가 GPT를 신경 쓰고 있다는 느낌이 들어, 역시 Google 사람들은 혜안이 있구나 하는 생각이 들었다. 아직 BERT 뒤에 논문들을 읽어보지 못했지만, 전체적으로 NLP 논문들이 작은 단위(근처 단어)를 보다가, 큰 단위(이 논문에서는 next sentence prediction으로 인접 문장까지) 봤다는 것을 봐서, 점점 참조하는 범위가 늘어나겠구나라는 것을 유추해 볼 수 있을 것 같다.  

반응형

GPT-1 배경 설명

  • GPT는 최근 가장 유명한 딥러닝 모델 중 하나다. GPT-1은 2018년 OpenAI에서 발표한 자연어 생성 모델로 다양한 자연어 처리 Task에서도 좋은 성능을 보여준다. 
  • GPT-1은 2017년에 나온 Transformer 아키텍쳐를 기반으로 만들어졌다. 
  • 개인적인 생각으로는 이 논문이 과거 모델 중심의 딥러닝 발전 방향에서 지금의 학습 & 데이터 중심의 방향으로 변하는 계기가 되지 않았나 싶다.  

Abstract

  • 자연어 처리는 이전까지(GPT-1 생성까지) 다양한 분야에서 발전을 이뤘다. 
  • 하지만, labeling 되지 않은 corpora(말뭉치) 데이터는 풍부하지만, 특정 자연어 처리 task 들을 학습하기 위한 label 데이터는 많지 않다.
  • "GPT-1"에서는 다양한 labeling되지 않은 다양한 텍스트 데이터들을 통해, 언어 모델을 "generativew pre-training" 하고,  각 task에 맞는 discriminative fine-tuning"을 하는 구조를 제안한다. 
  •  "GPT-1"에서는 fine-tuning 과정에서 "task-aware input transformation"을 사용해서 model 구조를 최소한으로 바꾸면서 효과적인 fine-tuning을 가능하게 한다고 한다. (뒤에서 무슨 말인지 확인해 보자)
  • "GPT-1"은 12개 task 중 9개 task에서, 애초에 그 목적으로 학습한 모델들을 넘어서 SOTA를 달성했다고 한다. 

Introduction

  • 기존 딥러닝 모델들에서 학습이 까다로웠던 이유는 labeling 된 데이터를 수집하는데 한계가 있기 때문이다. (기존 딥러닝 모델들이 실생활에 적용하기 까다로운 이유이기도 했다.)
  • 단순, 특정 task 학습을 위한 labeling된 데이터뿐 아니라, 풍부한 unlabeled 데이터를 함께 사용해서 언어 모델을 학습하는 것은 다양한 text의 representation을 학습하여 언어 모델의 성능을 향상할 수 있다. (word embedding 등등)
  • 하지만, unlabeled text에서 word-level의 information을 학습하는 것은 2가지 어려움이 있다. 
    • transfer를 위한 좋은 text representations을 뽑기 위해, 어떻게 학습하는 것이 효율적인지 알 수 없다.
    • 이렇게 학습된 representations들을 target task에 전달하기 위해 가장 효율적인 방법이 무엇인지 알 수 없다. 
  • 이 논문에서는, 언어 모델 학습을 위해 unsupervised pre-training과 supervised fine-tuning을 잘 조합해서 언어 모델의 성능을 향상 시킬 수 있는 방법을 제시한다.
  • GPT-1의 목표는 조금의 task adaptation만으로 광범위한 task들을 커버할 수 있는 universal representation들을 학습하는 것이다. 
  • GPT-1의 학습은 2가지 과정으로 진행된다.
    1. language modeling을 통해서 unlabeled 데이터를 모델에 학습한다.
    2. supervised 학습을 이용해서, target task에 맞도록 모델의 파라미터를 tuning 한다. 
  • 이를 위해, GPT-1에서는 "Transformer"를 이용한다. (Transformer의 메모리 제약이 적다는 점이 다양한 task에 적합하다고 한다.) 
  • GPT-1은 12개의 자연어 처리 task들 중 9개에서 SOTA를 달성할 정도로 광범위하고, 좋은 성능을 보인다. 

Framework

  • GPT의 학습은 Introduction에 언급하대로 1) unsupervised learning으로 unlabeled 데이터의 pre-training 하는 과정과 2) Task에 맞는 labeld 데이터로 fine-tuning하는 과정으로 진행된다.
  • Unsupervised pre-training 과정

Unlabeled 데이터로 모델을 pre-training하는 과정에서는, 일반적인 language model의 objective function을 따른다. (이전 단어들을 통해, 다음 단어들을 추측할 확률이 높도록 학습)

 

k: context window, T_i : i번째 Text의 단어 수, N: 문서 수  

 

 이 Paper에서는 multi-layer Transformer decoder를 SGD를 이용해서 pre-training을 학습했다고 한다. 

이 Paper에서 사용한 모델은 Transformer의 Decoder 부분만을 사용해서 학습한 방식을 따랐다고 한다. (Generating wikipedia by summarizing long sequences)

U: tokens들의 context vector, W_e : Token Embedding Matrix, W_p: position embedding matrix, n: layer 개수

→ pre-training 과정을 요약하자면, Transformer의 Decoder 모델을 이용하여, 일반적인 언어모델 학습(이전 단어들로 다음 단어를 잘 추정하도록 학습) 한다. 이 과정은 별도의 Labeling이 필요 없이, 단어 간의 context 정보를 Mapping 할 수 있도록 해준다. 

 

  • Supervised fine-tuning 과정

Unsupervised pre-training 과정 후에, 각 task에 맞는 역할을 수행하도록 parameter를 fine-tuning 하는 과정이다. fine tuning 된 모델의 마지막 단에 linear layer를 하나 추가해서, task에 목적에 맞는 학습을 진행한다.

Labeled 데이터가 y이고, pretrained transformer의 마지막 block의 값이 h_l일 때, objective function은 다음과 같다.

즉, pre-training 된 모델 마지막 부분에 layer를 추가적으로 달아서, 원하는 task의 objective function을 따르도록 학습하면 된다는 것이다.

GPT에서는 (1) supervied model의 일반화 향상 (2) 빠른 convergence를 위해, 추가적으로 auxiliary objective를 추가해서 학습한다. 

C : labeled 데이터

Task에 맞는 supervised 모델을 학습하면서, labeled 데이터를 이용해서 language model 학습을 같이 진행한다. (이론상으로는 pre-training 과정에서는 labeled 데이터는 사용하지 않은 상태이다.)  

 

  • Task-specific input transformations
  • Text Classification처럼 간단한 Task 들은 위처럼 fine-tuning을 진행하면 된다. 하지만, 몇 가지 다른 Task들은 fine-tuning 시, input을 조금 변형해서 넣어줘야 한다.
  • 특히, pre-training 단계에서는 order 적 개념을 학습한다. (전 단어들로 다음 단어를 추정하는 등.. ) 이러한 order 관계가 필요 없는 task들에서는 input을 order 형으로 변형해 주는 과정이 필요하다.
  • 이 부분은 모델을 최소한으로 건들면서, 다양한 Task들을 커버하기 위한 방법이다. 

 

Task  Input 구성 방법
Textual Entailment premise와 hypothesis 간 delimiter tocken($)를 사용함
Similarity 각각 독립적으로 Transformer에 넣은 뒤, 두 feature를 element-wise add하여 final linear layer의 input feature로 넣음
Question Answering & Commonsense Reasoning context, answer를 붙여서 input을 구성한 뒤, 각 question들을 각각 linear layer에 태운 뒤, softmax 함수에서 normalization을 한다.

Experiments

→ 아무래도, 논문 자체가 실용성에 초점을 맞추고 있다 보니, 학습 부분을 자세히 설명해 놓았다. 자세한 내용은 논문을 직접 참고하는 게 좋을 것 같다. 

  • Unsupervised Pre-training Setup 
    • Dataset : Unsupervised Pre-training을 위해, BooksCorpus dataset을 사용했다. 
    • Model : original transformer 모델을 따랐다. transformer의 12 layer의 decoder를 이용하였다. position-wise feed-forward 네트워크로 3072 dimmension의 inner states를 사용했다. Optimizer로는 Adam, Learning rate는 2.5e-4로 학습했다. L2 regularization도 도입했고, Gaussian Error Linear Unit을 activation function으로 사용했다고 한다. 기존 Transformer 논문과 달리, siunsoidal을 사용하지 않고 position embeddings을 사용했다. Tokenizer로는 spaCy를 사용했다. 
  • 실험 결과

→ 이 부분에서 각 Task의 사전 결과들에 대한 자세한 부분(모델 & 학습 데이터 & 성능이 의미하는 바)에 대해서 세세하게 잘 알지 못해서, 이 부분은 논문을 직접 참조하는 편이 좋을 것 같다. 

 

전체적으로 다양한 NLP 분야의 task에서 좋은 성능을 거두었다.(12개 task들 중, 9개에서 SOTA 성능이다.) 

 

 

Conclusion 

  • 이 논문에서는 unlabeled 데이터로 pre-training을 진행하고, 각 task에 맞는 labeled 데이터를 통해 supervised learning으로 좋은 성능을 보여주는 학습 방법에 대해 제시한다. 
  • Pre-training 단계에서는 다양한 word 간의 관계와 long-range dependencies 등이 학습되고, 이 정보들이 Fine-tuning 과정을 통해, 각 task들의 학습에 유용하게 사용된다.
  • 이러한 학습 방법은 12개의 NLP task 중 9개에서 SOTA를 기록할 정도로 powerful 하다. 

출처

Improving Language Understanding with Unsupervised Learning (lec Radford, Karthik Narasimhan, Tim Salimans, and Ilya Sutskever)

 

총평

이 논문에서는 복잡한 수식이나, 새로운 모델을 제시한 것은 아니다. 하지만, NLP 분야에서 unsupervised 방법으로 pre-training 하고, supervised 방법으로 모델을 학습하는 개념을 장착시켜, 현재의 Chat-GPT까지 만들 정도로 NLP 분야의 매우 중요한 이정표가 된 것 같다. 

+ Recent posts