본문 바로가기
머신러닝(Machine Learning)

NLP BERT 모델 이해하기 (1) 트랜스포머로부터

by Blaze_블즈 2023. 9. 10.

안녕하세요

블레이즈 테크노트 

블레이즈 입니다. 

 

 

자연어 처리 (Natural Language Processing, NLP)는 컴퓨터 과학과 인공 지능의 교차점에 위치한 분야입니다.

컴퓨터가 어떻게 인간의 언어를 이해하고 처리할 수 있을지에 대한 연구를 한다고 생각하시면 좋을 것 같습니다!

 

BERT의 등장 배경과 필요성

자연어 처리 분야에서는 오랫동안 여러 가지 모델이 개발되어 왔습니다.

RNN, LSTM, 그리고 GRU 등 순환 신경망 모델은 문장을 순차적으로 처리하여 문맥을 어느 정도 파악할 수 있었습니다.

 

하지만 이러한 모델들은 여전히 단어 간의 복잡한 관계나 문맥, 의미 등을 완전히 이해하는 데에는 한계가 있었습니다.

 

 

이러한 문제를 해결하기 위해 등장한 것이 Transformer 모델입니다.

트랜스포머 모델은 Vaswani et al. <Attention is all you need> 라는 논문에서 소개되었습니다. 

 

https://blogs.nvidia.com/blog/2022/03/25/what-is-a-transformer-model/

 

트랜스포머는 Foundation Model이라고도 불립니다. 

그 이유는 트랜스포머 모델이 다양한 작업에서 기초적인 모델로써 활용되고 있기 때문입니다. 

그만큼 성능이 뛰어나고 범용성이 넓은 모델이라고 할 수 있죠.

 

트랜스포머 모델에 대해서는 모델의 개념과 코드에 대해 자세히 설명했으니, 아래 포스트를 참고해주세요. 

 

https://blazetechnote.tistory.com/23

 

NLP 트랜스포머 세 번째, 셀프 어텐션 알아보기

안녕하세요 블레이즈 테크노트 블레이즈 입니다. 트랜스포머 두 번째 이야기에서 포지셔널 인코딩(Positional Encoding)에 대해서 알아봤습니다. https://blazetechnote.tistory.com/entry/NLP-트랜스포머-두-번째

blazetechnote.tistory.com

 

 

아래의 그림이 트랜스포머의 기본적인 구조입니다. 

 

이 트랜스포머 모델 아키텍쳐에서 왼쪽 부분을 인코더(Encoder)라고 부르고 

오른쪽 부분을 디코더(Decoder)라고 부릅니다. 

제가 애용하고 있는 chat GPT의 경우 트랜스포머의 디코더 부분을 활용한 모델입니다. 

 

 

오늘 소개할 BERT는 트랜스포머의 인코더 부분을 활용한 모델이라고 설명해드릴 수 있습니다. 

 

 

GPT와 BERT의 차이점을 자세히 설명할 날이 오겠지만 활용측면에서 간단히 짚고 넘어가자면

GPT는 문장을 생성하는데 뛰어난 능력을 보이고

BERT는 문장의 의미를 이해하는데 뛰어난 능력을 보인다는 차이점이 있습니다.

 

 

그 이유는 사실 이름에서부터 찾아볼 수 있는데요,

GPT는 Generative Pre-trained Transformer의 약자이고

BERT는 Bidirectional Encoder Representations form Transformer의 약자입니다. 

 

따라서 두 모델 모두 트랜스포머 모델을 응용한 모델임을 알 수 있습니다.

또한 GPT는 텍스트 생성에 초점이 맞춰져 있고 BERT는 ENCODER의 활용에 초점이 맞춰져 있습니다. 

 

더 자세한 비교는 아래의 블로그를 참고해보세요.https://ratsgo.github.io/nlpbook/docs/language_model/bert_gpt/

 

BERT & GPT

pratical tips for Natural Language Processing

ratsgo.github.io

 

 

BERT는 

 Bidirectional Encoder Representations form Transformer 의 약자입니다. 

구글에서 발표한 논문(devlin et al 2018)에 등장하는 모델이고, 논문 링크는 다음과 같습니다.

https://arxiv.org/abs/1810.04805

 

 

구글에서 발표한 BERT 모델

 

 

 

BERT의 기본 구조와 원리

BERT는 기본적으로 Transformer의 인코더 부분을 활용합니다.

Transformer 모델은 원래 인코더와 디코더로 구성되어 있지만,

BERT에서는 인코더 부분만을 사용하여 문맥을 파악합니다.

 

아래 그림을 보시면 트랜스포머의 인코더 파트와 동일한 구조를 가졌음을 알 수 있습니다. 

 

MalBERT: Using Transformers for Cybersecurity and Malicious Software Detection - Scientific Figure on ResearchGate. Available from: https://www.researchgate.net/figure/Transformer-Encoder-Architecture-BERT-or-Bidirectional-Encoder-Representations-from_fig1_349880253 [accessed 1 Sep, 2023]

 

 

이렇게 인코더만을 사용하는 이유는

BERT가 문장의 내부 구조와 문맥을 더 잘 이해하려는 것에 목적을 둔 모델이기 때문입니다.

 

 

BERT 모델 아키텍쳐

 

출처: BERT 논문

 

BERT 모델은 pre-training 스텝과 fine-tuning 스텝으로 나뉩니다. 

 

이 아이디어의 구현 덕분에 bert는 다양한 ML 연구자들에게 도움이 되고 널리 사용될 수 있었습니다. 

 

pre-training 단계는 bert 모델이 일반적인 학습을 하는 단계입니다. 

unlabeled data를 활용하여 문장을 학습하는데 이를 통해 BERT는 언어의 문법이나 문맥을 읽는 능력을 학습합니다. 

 

이 단계는 매우 오랜 시간과 리소스를 필요로 하지만 이를 통해서 대부분의 작업에 높은 성과를 보이는 모델을 만들 수 있습니다. 

BERT의 훈련은 GPU나 TPU 등의 고성능 하드웨어에서 이루어집니다.

 

BERT는 pre-train 단계를 통해 초기 파라미터를 설정하고 

task에 맞게 fine-tuning을 진행합니다. 

 

위 그림을 보시면 MNLI(Multi-Genre Natural Language Inference),

NER(Named Entity Recognition),

SQuAD(Standford Question Answering Dataset) 등 필요한 작업에 맞춰서 미세 조정(Fine-tunign)을 할 수 있습니다. 

 

이 미세 조정 단계는 기존에 구글에서 발표한 bert pre-trained 모델을 사용하면

리소스도 많이 필요하지 않고 시간도 오래 걸리지 않습니다. 

 

 

이러한 방식을 Transfer Learning 전이학습이라고 합니다. 

 

Transfer Learning 전이 학습 

전이학습은 기존에 학습된 모델의 지식을 새로운 작업에 적용하는 기법입니다.

전이 학습은 특히 작은 데이터셋으로 작업을 수행할 때 유용합니다.

왜냐하면, 기존의 학습된 모델의 지식을 활용함으로써 적은 데이터로도 높은 성능을 달성할 수 있기 때문입니다.

 

전이학습의 이러한 장점 때문에 BERT와 같은 NLP 모델 뿐 아니라 

VGG, ResNet 과 같은 이미지 처리에서도 이 기법이 활용됩니다. 

 

출처 :&nbsp;https://towardsdatascience.com/a-comprehensive-hands-on-guide-to-transfer-learning-with-real-world-applications-in-deep-learning-212bf3b2f27a

 

Transfer Learning에 대한 자세한 설명은 다음의 포스트를 참고해보세요!

 

A Comprehensive Hands-on Guide to Transfer Learning with Real-World Applications in Deep Learning

Deep Learning on Steroids with the Power of Knowledge Transfer!

towardsdatascience.com

 

 

Masked Language Model

BERT는 Pre-train 단계에서 'Masked Language Model (MLM)'을 적용합니다. 

 

상당히 많은 언어 모델은 주어진 문맥에서 다음 단어를 예측합니다.

GPT의 경우 Sequential한 특징이 있으므로 앞의 정보만 읽어들이는 형태이고

ELMo의 경우 양방향이긴 하지만 왼쪽에서 오른쪽, 오른쪽에서 왼쪽으로의 정보만 읽어들입니다. 

 

BERT 논문

 

하지만 BERT의 MLM은 문장 내에서 무작위로 선택한 단어를 '마스크' 처리(예: [MASK])한 뒤,

그 마스크된 단어를 올바르게 예측하도록 훈련됩니다.

 

이를 통해 모델은 단순히 다음 단어를 예측하는 것이 아니라

문장 내의 어떤 단어든지 예측할 수 있는 능력을 키우게 됩니다.

 

이러한 방식은 문장의 앞뒤 문맥을 모두 고려하게 되므로, 단어나 구(phrase)의 의미를 훨씬 정확하게 파악할 수 있습니다.

 

이를 Deep Bidirectional 이라고 부르기도 합니다. 

 

http://jalammar.github.io/illustrated-bert/

 

 

Next Sentence Prediction

BERT는 Pre-train 단계에서 MLM 뿐 아니라 'Next Sentence Prediction (NSP)'도 적용합니다. 

 

 

NSP는 "다음 문장 예측"을 뜻합니다.

주어진 두 문장이 실제로 연속적인 관계를 가지는지, 아니면 아무런 관계가 없는지를 예측하는 작업입니다. 

 

기존 트랜스포머 모델에서는 이렇게 문장 두개를 함께 인풋으로 넣고 예측하는 과정이 없었습니다.

구글은 이 NSP를 통해서 두 문장의 연관관계를 더 자세히 파악할 수 있다고 주장합니다. 

 

 

 

학습 데이터에서 두 문장씩 쌍을 형성하여 추출합니다.

50%의 경우 실제로 연속하는 문장 쌍을 사용하고, 나머지 50%는 무작위로 선택된 문장을 다음 문장으로 사용합니다.

 

BERT는 이렇게 준비된 문장 쌍이 실제로 연속하는지 아닌지를 예측하도록 학습됩니다.

예를 들어:

  • 문장 A: "나는 오늘 아침에 조깅을 했다."
  • 문장 B: "날씨가 상쾌해서 기분이 좋았다."

이렇게 연속하는 문장 쌍과

  • 문장 A: "나는 오늘 아침에 조깅을 했다."
  • 문장 B: "커피는 아메리카노를 좋아한다."

이렇게 연관성이 없는 문장 쌍을 학습 데이터에서 무작위로 제공받은 후,

BERT는 문장 B가 문장 A의 직접적인 이어지는 문장인지를 예측합니다.

 

실제 논문에서는 다음과 같이 설명되어 있는데 MLM과 함께 학습이 되는 과정을 보여줍니다.

 

 

BERT 논문 중

 

 

BERT의 다양한 응용 분야

BERT는 여러 NLP 작업에서 뛰어난 성능을 보입니다.

문서 분류, 개체 명명, 질의 응답(Q&A), 감성 분석 등 다양한 작업에 적용할 수 있습니다.

 

아래 그림은 BERT 논문에 나오는 그림인데요 a) 는 문장 2개를 받아서 분류하는 작업입니다. 인풋 문장으로 2개의 문장이 들어오고 중간에 SEP를 통해 구분해주고 있습니다.b) 는 문장 1개를 받아서 분류하는 작업입니다. c) 는 문장 2개를 받고 질문에 답을 하는 작업입니다. 마찬가지로 SEP로 구분되어 있으며 주어진 문장 속에서 답을 찾아서 반환합니다. d)는 문장 하나를 받아서 형태소 분석과 같이 답을 리턴하는 작업입니다.  

 

 

 

 

참고문헌

  • Devlin, J., et al. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv preprint arXiv:1810.04805.
  • Vaswani, A., et al. (2017). Attention is all you need. In Advances in neural information processing systems (pp. 5998-6008).