Machine Learning

[summary]what is BERT?

뚜둔뚜둔 2023. 7. 5. 00:47

BERT

Bidirectional Encoder Representations from Transformers (트랜스 포머의 양방향 인코더)

- bert paper : 

- bert example code : 

특징 

1. 전이 학습 모델

- 사전 학습된 대용량의 레이블링 되지 않은(unlabeled) data를 이용하여 언어모델 (Language Model)을 힉습하고 이를 토대로 특정작업(문서분류, 질의 응답, 번역 등)을 위한 신경망을 추가하는 전이 학습 방법

2. 사전 학습 모델 

- BERT model은 기본적으로 대량의 단어 임베딩 등에 대해 사전 학습이 되어 있는 모델을 제공하기 떄문에 상대적으로 적은 자원만으로도 충분히  자연어 처리의 여러 일을 수행 할 수 있음

이전에는 단어 임베딩을 위해 word2vec, glove, Fasttext 방식을 사용 했지만, BERT가 자연어 처리 분야의 11개 실험에서 가장 좋은 성능을 차지하면서 많이 사용되고 있다.

 

구조

1.bert의 input representation

- bert의 input representationdms 1. Token Embeddingsm 2. Segment Embeddings 3. position Embeddings으로 구성

( 참고 : 2023.07.05 - [Machine Learning/NLP] - [summary]what is Embedding?

1.1 Token Embeddings

Token Embeddings는 word piece 임베딩 방식을 사용

Word piece embedding은 자주 등장하면서 가장 긴 길이의 sub-word을 하나의 단위로 만듬

즉, 자주 등장하는 단어(sub-word)는  그자체가 단위가 되고,자주 등장하지 않는 단어 (rare-word)는 더 작은 sub-word로 쪼개어 짐

이는 이전에 자주 등장하지 않은 단어를 전부 out-of-vocabulary(OOV)로 처리하여 모델링의 성능을 저하했던 문제를 해결 할 수 있다.

입력 받은 모든 문장의 시작으로 [CLS] token (Special classification token)이 주어지며 이 [CLS]토큰은 모델의 전체 계층을 다 거친 후 토큰 시퀀스의 결합된 의미를 가지게 된다.

여기에 간단한 classifier을 붙이면 단일 문장, 또는 연속 된 문장을 분류 할 수 있고, 

만약 분류 작업이 아니라면 이 토큰을 무시한다.

또 한 문장의 구분을 위해 문장의 끝에 [SEP] token 을 사용한다

 

1.2 Segment Embedding

segment Embeddings는 token으로 나누어진 단어들을 다시 하나의 문장으로 만들고,

첫 번째 [SEP] 토큰 까지는 0으로 그 이후 [SEP] 토큰 까지는 1값으로 마스크를 만들어 각 문장들을 구분한다.

 

1.3 Position Embeddings

Position Embeddings는 토큰의 순서를 인코딩 한다.

그 이유는 bert는 transformer의 encoder를 사용하는데 transformer 는  self-Attention model을 사용한다.

self-Attention은 입력의  위치에 대해 고려하지 못하므로 입력 토큰의 위치 정보를 주어야한다.

그래서  transformer에서는 sigmoid 함수를 이용한 positional encoding을 사용하였고,

BERT에서는 이를 변형하여 position Encodings을 사용한다

앞서 언급한 각 임베딩들의 토큰 별로 모두 더하여 BERT의 입력 벡터로 사용한다.

 

 

2. BERT의 Pre-training과 Fine-tuning

 

그림과 같이 BERT를 이용한 자연어 처리는 2단계로 진행

거대 Encoder가 입력 문장들을 임베딩하여 언어를 모델링하는 Pre-training과정과

이를 fine-tunung하여 여러 자연어 처리 task를 수행하는 과정

 

 

3. Transformer 기반의 BERT

BERT는 MLM과 NSP를 위해 transformer 을 기반으로 구성

기존의 인코더-디코더 모델과 달리 transformer 는 CNN , RNN을 사용하지 않고 self-attention 개념을 도입함

BERT 는 transformer의 인코더-디코더 중 인코더만 사용함

 

3.1 BERT의 MLM(Masked Language Model)

MLM(Masked Language Model)은 일련의 단어가 주어지면 그 단어를 예측하는 작업

이때 모든 다음 토큰을 예측하는 것이 아닌 입력에서 무작위하게 몇개의 토큰을 마스킹하고 

이를 transformer 구조에 넣어 주변 단어의 맥락으로 마스킹된 토큰만 예측함

BERT에서 MLM이 수행되는 과정은 우선 토큰 중 15%는 무작위 [MASK]토큰으로 바꿈

토큰은 위에서 설명한 input representation 방법으로 토큰화 되어 있다

이때 15% 토큰을 생성하는 과정에서 80%는 토큰을 [MASK]로 바꾸고 10%은 토큰을 무작위 단어로 바꿈

이전의 좌-우, 혹은 우-좌를 통하여 문장 전체를 예측하는 사전 학습 언어 모델 방법과 달리, [MASK] 토큰만을 예측하는 pre-training 작업을 수행

이 [MASK] 토큰은 pre-trainingdpaks tkdydehlrh, fine-tuning 시에는 사용 되지 않음

MLM을 수행하며 BERT는 문맥을 파악하는 능력을 길러내게 됨

 

3.2 BERT의 NSP(Next Sentence Prediction)

NSP (Next Sentence Prediction)는 두문장의 관계를 이해하기 위해 BERT의 학습 과정에서 두 번째 문장이 첫 번째 문장의 바로 다음에 오는 문장인지 예측하는 방식

이러한 종류의 이해를 갖춘 사전 학습 모델은 질문 답변과 같은 작업이 가능

 

위의 Input representation 과정에서 살펴본 것 처럼 BERT는 [SEP] 특수 토큰으로 문장을 분리함

학습 중에 모델에 입력으로 두개의 문장이 동시에 제공됨

50%의 경우 실제 두번째 문장이 첫번째 문장 뒤에 오고 50%는 전체 말 뭉치에서 나오는 임의의 문장이다

그런 다음 BERT 눈 임의의 문장이 첫 번째 문장에서 분리 된다는 가정 하에 두 번째 문장이 임의의 문장인 여부를 예측한다

이를 위해 완전한 입력 시퀀스는 Transformer 기반 모델을 거치며, [CLS]토큰의 출력은 간단한 분류 계층을 사용하여 2x1모양의 벡터로 변환됨

IsNext-Label은 softmax를 사용하여 할당 된다.

BERT는 손실 함수를 최소화 하기 위해 MLM과 NSP을 함꼐 학습한다.

 

4. 두 종류의 BERT (BERT-base model & BERT-large model)

BERT는 아키텍쳐의 규모에 따라서 base와 Large2가지 유형의 모델이 있다.

L = 트랜스 포머 블록
H = 히든 레이어 차원 수
A = self-attention의 head수 

BERT-base model의 하이퍼 파라미터는 L=12, H=768, A=12

BERT-Large model의 하이퍼 파라미터는 L=24, H=1024, A=16

그리고 대소문자를 구분하여 사용하거나, (cased)

모두 소문자로 변환 한 뒤 (uncased) 사용 가능

 

 

 

참고 : 

https://m.blog.naver.com/PostView.naver?blogId=handuelly&logNo=222301180682&categoryNo=1&proxyReferer=https:%2F%2Fwww.google.com%2F 

 

자연어 처리(NLP) - BERT란 무엇인가

# Intro 2018년 11월, Google이 공개한 AI 언어 모델 BERT(버트, Bidirectional Encoder Repres...

blog.naver.com

 

반응형

'Machine Learning' 카테고리의 다른 글

what is Ensemble Learning?  (0) 2023.07.19
what is Grid search?  (0) 2023.07.19
Few shot Learning, Meta Learning  (3) 2022.11.29
[내용정리]Meta Learning  (1) 2022.11.25
[Deep Learning Architecture] CNN, RNN, Attention-based  (0) 2022.11.24