본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

이론

앞 뒤를 모두 참고하는 Bidirectional 모델 BERT ,특수 토큰 CLS와 SEP , 두가지 학습방법 MLM, NSP (feat. Transformer의 Encoder만 쓰는 이유)

BERT (Bidirectional Encoder Representations from Transformers)
Transformer의 Encoder만을 사용하여 문장의 의미를 양방향(Bidirectional)으로 이해하는 사전학습(Pre-trained) 언어 모델이다.

https://standout.tistory.com/1846

 

Attention 메커니즘만을 이용하여 문장을 처리하는 딥러닝 모델 Transformer (feat.Self-Attention, Multi-Head A

Transformer란? Attention 메커니즘만을 이용하여 문장을 처리하는 딥러닝 모델기존의 RNN, LSTM, GRU는 단어를 순서대로 처리했지만, Transformer는 모든 단어를 동시에 처리(병렬 처리)할 수 있도록 설계되

standout.tistory.com

 

 

2018년 구글이 발표한 모델로, 자연어 처리(NLP)의 성능을 크게 향상시켰으며 현재도 다양한 NLP 모델의 기반으로 사용된다.
기존 RNN, LSTM, Seq2Seq는 문장을 순차적으로 읽었다.

https://standout.tistory.com/1537

 

딥러닝: Deep Neural Network (DNN), Convolutional Neural Network (CNN), Recurrent Neural Network (RNN)

딥러닝 (Deep Learning)이미지 인식, 자연어 처리, 음성 인식 등인공 신경망을 여러 층(layer)으로 쌓아서 구성한 모델다층 구조로 인해 복잡한 데이터 패턴을 자동으로 학습특성 추출 

standout.tistory.com

https://standout.tistory.com/1842

 

RNN 순환신경망의 한 종류, LSTM이란?: 장기 의존성 문제를 해결하기 위해 개발된 딥러닝 모델

LSTM(Long Short-Term Memory)RNN(Recurrent Neural Network, 순환 신경망)의 한 종류장기 의존성(Long-Term Dependency) 문제를 해결하기 위해 개발된 딥러닝 모델from tensorflow.keras.models import Sequentialfrom tensorflow.keras.laye

standout.tistory.com

https://standout.tistory.com/1844

 

입력과 출력의 길이가 달라도 처리할 수 있는 모델 Seq2Seq , 정보 병목(Information Bottleneck) (feat. Atte

Seq2Seq (Sequence to Sequence) 입력 시퀀스(Sequence)를 다른 출력 시퀀스로 변환하는 딥러닝 모델이다. 순서가 있는 데이터를 입력받아, 또 다른 순서가 있는 데이터를 출력하는 모델주로 LSTM나 GRU기반으

standout.tistory.com

 

 

BERT는 문장의 앞과 뒤를 동시에 보는(Bidirectional) 모델으로 앞 단어와 뒤 단어를 모두 참고하여 이해한다.

예를 들어
은행에 돈을 맡겼다.
강가의 은행이 아름답다.
에서의 은행 이라는 단어는 의미가 두 가지이다.
* Bank(금융기관)
* River bank(강둑)

 



 

 

BERT는 특수 토큰을 사용하는데 
[CLS] 나는 학교에 간다 [SEP]
문장 전체를 대표하는 토큰 [CLS]와 문장의 끝을 의미하는  [SEP]


외 단어를 벡터로 바꾸는 Token Embedding
나는 = [0.23,0.88, ...]

 

순서를 모르는 Transformer를 위한 위치 정보를 더하는 Position Embedding

두 문장을 구분하는 Segment Embedding

 

 


BERT는 두 가지 방법으로 사전학습되었다.
MLM (Masked Language Model), 앞뒤 문장을 모두 보고 빈칸 맞춘다.
The cat is [MASK]. = cute


NSP (Next Sentence Prediction), 두 문장이 이어지는지 맞cnau 문장 관계를 학습한다.
나는 학교에 갔다.
수업을 들었다.

True


나는 학교에 갔다.
오늘 피자를 먹었다.
False

 

 

 

예시코드.

from transformers import BertTokenizer, BertModel

# 토크나이저와 모델 불러오기
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
model = BertModel.from_pretrained("bert-base-uncased")

text = "I love natural language processing."

# 토큰화
inputs = tokenizer(text, return_tensors="pt")

# BERT 실행
outputs = model(**inputs)

print(outputs.last_hidden_state.shape)
torch.Size([1, 8, 768])

 

 


BERT는 문장을 양방향으로 이해해 사전학습 후 다양한 NLP 작업에 쉽게 적용(Fine-Tuning)할 수 있다.
문맥을 깊이 이해하여 높은 성능을 보이고 질문답변, 감성분석, 개체명 인식(NER), 문장 분류 등 다양한 분야에 활용된다.
하지만 문장 생성에는 적합하지 않고 모델 크기가 커서 학습과 추론에 많은 메모리와 연산이 필요하다.
입력 길이에 제한(예: BERT Base는 일반적으로 최대 512 토큰)이 있으며 매우 긴 문서를 처리할 때는 성능과 효율이 떨어질 수 있다.


BERT의 목표는 문장을 이해하는 모델. 생성하는 모델이 아니다. 이 문장이 무슨 의미인지 이해하는 것 Transformer의 Encoder는 모든 단어 ↔ 모든 단어 관계 계산 (Self-Attention)으로 “전체 문장 이해”에 최적화되어있다. Transformer의 “문장 생성용” Decoder는 구조가 다르다. BERT는 생성이 아니라 “빈칸 맞추기”로 문장을 “만드는 것”이 아니라 “이해해서 맞추는 것”의 목표로 Decoder가 필요 없어 구조적으로 Encoder만으로 충분하다.