MACHINE LEARNING/Artificial Neural Network

NLP / BERT vs GPT 모델 비교

24_bean 2022. 8. 10. 00:16

GPT 와 Bert 두 모델 모두 Transformer를 기반으로 pretraining 기법이 사용된 모델이라고 볼 수 있습니다.

 

Transformer ➡️ 아주 유명한 논문이 있습니다. (22.08.09 기준 약 48000회의 인용수를 보여주고 있음....)

https://arxiv.org/pdf/1706.03762.pdf - Attention Is All You Need

 

Transformer에 대한 사전 이해가 있어야 합니다.


BERT(Bidirectional Encoder Representations from Transformers)

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

➡️  https://arxiv.org/pdf/1810.04805.pdf

 

BERT는 2018년에 구글이 공개한 pretrained-model입니다. 

 

BERT는 Transformer 이용하여 구현되었으며, 위키피디아(25억 단어)와 BooksCorpus(8억 단어)와 같은 레이블이 없는 텍스트 데이터로 사전 훈련된 언어 모델입니다.

 

BERT가 높은 성능을 얻을 수 있었던 것은, 레이블이 없는 방대한 데이터로 사전 훈련된 모델을 가지고, 레이블이 있는 다른 작업(Task)에서 추가 훈련과 함께 하이퍼파라미터를 재조정하여 이 모델을 사용하면 성능이 높게 나오는 기존의 사례들을 참고하였기 때문입니다. 다른 작업에 대해서 파라미터 재조정을 위한 추가 훈련 과정을 파인 튜닝(Fine-tuning)이라고 합니다.

 

만약 우리가 하고싶은 task가 있을 때 기존의 pretrained 되어있는 BERT 모델 위에 label값을 포함하고 있는 데이터를 추가함으로써 신경망 한 층을 더 쌓게 됩니다.

 

쉽게 설명하자면, 공부를 아주 많이 한 학생에게 시험문제와 유사한 모의고사를 정답과 함께 알려주고 시험을 보는 느낌으로 받아들이면 될 것 같습니다.

 

Contextual Embedding

 

BERT의 입력은 일반적인 딥 러닝 모델들과 마찬가지로 임베딩 층(Embedding layer)를 지난 임베딩 벡터들입니다

BERT의 연산을 거친 후의 출력 임베딩은 문장의 문맥을 모두 참고한 문맥을 반영한 임베딩이 됩니다

 

BERT는 contextual embedding을 사용하고 있습니다. 이에 대한 개념은 위에서 언급한 논문에서 자세히 찾아볼 수 있습니다. (Attention)

 

BERT는 기본적으로 트랜스포머 인코더를 12번 쌓은 것이므로 내부적으로 각 층마다 multi head self attention과 position wide feed foward network를 수행하고 있습니다.


GPT(Generative Pre-Training)

Improving Language Understanding by Generative Pre-Training

➡️ https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf

 

* GPT-1,2,3 이 나오면서 계속 발전하고 있는 추세입니다. 본 게시물은 GPT-1을 기준으로 작성했습니다. (유사한 알고리즘을 사용함)

 

GPT는 Open-AI 가 공개한 pretrained-model 입니다.

 

대부분의 자연어처리 딥러닝 모델은 label이 주어진 지도학습을 기반으로 합니다. 하지만 데이터셋이 매우 큰 경우에는 라벨을 하나하나 붙이는 작업이 필요한데 이 때 비효율적이다는 단점을 가지고 있습니다.

또한 하고자하는 task가 달라질 경우 새로운 작업이 필요하기도 합니다.

 

GPT는 이러한 점에 집중해 비지도학습, unsuperviesed learning에 초점을 두고 개발되었습니다.

task에 따른 adaption들을 최소한으로 하여 다양한 task에 적용 가능함을 목표로 합니다. (task-agnostic model이라고 불림)

 

구조적으로 Transformer decoder 구조를 토대로 설계되었습니다.

encoder를 없애고 decoder를 여러 개 stack하여 만들어졌는데, 이에 따라 encoder-decoder attention sub-layer가 사라지게됩니다.

,  decoder masked self-attention position-wise feed forward network, 이렇게 2개의 sub-layer로 구성되어 있습니다.

 

 

 GPT-1의 구조는 위의 그림과 같이 decoder 12개 쌓아 올린 구조입니다. 

corpus unsupervised pre-training을 하고, 그 다음 target task(분류, 유사도 판단, 등)에 따라 supervised fine-tuning(위에서 언급)을 합니다

unsupervised learning만으로는 어느 정도 한계점을 보이기 때문에 이와 같은 supervised learning 과정을 넣게 됩니다.

 

 

결국, 각 task마다 input 형태를 조금씩만 다르게하면 좋은 성능을 보일 수 있는 범용적인 representation을 학습하는 것이 GPT의 핵심입니다.

 

* GPT-2,3이 나오면서 기존의 단점들을 보완하고 매우 큰 규모의 모델이 되었습니다. 자세한 내용은 밑의 논문을 확인 바랍니다.

 

gpt-2

➡️ https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf

gpt-3

➡️ https://arxiv.org/abs/2005.14165


BERT vs GPT

두 모델의 성능적인 비교는 이미 많은 변화와 발전이 있었기 때문에 큰 의미가 없어보입니다.

그래서 경우에 따라 모델을 선택할 수 있는 intuition을 기르기 위한 특징적인 차이를 비교하겠습니다.

 

두 모델의 구조적인 가장 큰 차이점은 Attention의 참조방향이 순방향이냐 양방향이냐 입니다.

 

BERT는 양방향 Attention을 써서 더 많은 정보를 반영하므로 비록 문장 생성에 직접 사용될 수는 없어도 더 우수한 성능을 나타냅니다.

그리고, GPT의 경우 Decoder block이 순방향 Attention만을 쓰기 때문에 문장 생성에 직접적으로 이용될 수 있다는 강점을 가집니다.

 


Reference : https://wikidocs.net/115055, https://velog.io/@stapers/GPT-1-Languageunderstandingpaper