Paper Review

BERT의 구조 이해하기

dotudy 2024. 12. 26. 18:16

논문 리뷰를 끝내고 내가 궁금했던 부분이 완전히 해소가 되지 않아서 다시 찾아서 글을 쓴다.

 

내 궁금증은 이거다.

 

BERT는 encoder를 여러 개 쌓은 형태인데 자연어를 벡터로 변화시켜주는 역할이 encoder다. 근데 그걸 여러 개 쌓았다고 어떤 결과가 출력되는거지..? 

 

1. encoder는 단순히 벡터로 변화시켜주는 역할이 아니다.

먼저 입력 문장의 토큰 간 관계를 학습해서 각 단어가 문장에서 어떤 맥락에 있는지를 학습한다. 따라서 동음이의어가 해당 문장에서 어떤 의미로 사용되었는지를 파악할 수 있다.

또한 encoder는 문장을 입력받아 각 단어를 고차원 벡터로 변환한다. 해당 벡터는 단어의 문맥적 의미를 담고 있으며 이후 작업에 사용된다. 

 

2. 왜 encoder만 여러 개 쌓을까?

encoder를 여러 층으로 쌓으면 입력 문장의 의미를 더 정교하게 학습할 수 있다. 첫 번째 layer는 단순 패턴을 학습하고 더 높은 layer로 갈수록 더 추상적이고 복잡한 관계를 학습할 수 있다.

또한 encoder 내부에는 self-attention 메커니즘이 포함되어 있어서 문장 내 모든 단어가 서로를 참고하여 의미를 조정하게 된다. 

encoder만 사용해서 문장을 벡터로 변환하면 해당 벡터를 기반으로 다양한 downstream task에 적용할 수 있다.

 

3. 결과를 무엇일까?

BERT는 encoder의 마지막 층에서 학습된 벡터를 사용하여 결과를 출력한다.

Sentence-Level Task라면 마지막 layer의 [CLS] 토큰 벡터를 분류기에 전달되어 결과를 출력한다. 

Token-Level Task는 마지막 layer의 각 토큰 벡터를 사용하여 토큰별로 출력을 생성한다. 

 

4. Encoder만 있어도 충분한 이유는?

BERT는 언어 이해에 초점이 맞춰져 있다. encoder는 입력된 문장을 깊이 이해하고 이를 벡터로 표현하는 데 최적화되어 있으며 이는 BERT가 다양한 NLP 작업에서 뛰어난 성능을 보이는 이유이다. 반면, decoder는 언어 생성에 최적화되어 있어서 GPT에서 이를 decoder의 층으로 사용하는 것이다.