2 분 소요

What is BERT?

Bidirectional Encoder Representations from Transformers
Bidirection: 양방향
Encoder: 입력값을 숫자의 형태로 바꾸는 모듈을 의미
BERT: 문맥을 양방향으로 이해해서 숫자의 형태로 바꿔주는 딥러닝 모델이다.
인코더 디코더를 가진다.
질적으로 좋은 데이터를 선별하는 능력도 중요하다.



Transformer

image.png



Encoder 순서

  1. 데이터 입력

  2. 포지션 벡터와 결합

  3. Attention 벡터는 fc로 전송되는데 6번 반복해서 진행된다.

  4. 최종 출력 값은 트렌스포머 Decoder의 입력값으로 사용된다.

기억해야할 점: 인코더는 모든 토큰을 한 방에 계산한다. 왼쪽에서 오른쪽으로 하나씩 읽어나가는 과정이 없다.


Decoder 순서

  1. Encoder에서 온 입력값과. 최초 start 스페셜 토큰으로 왼쪽부터 오른쪽으로 출력값을 생성한다.

  2. Decoder도 Attention 벡터와 fc 결합을 6번 진행한다.

  3. End 스페셜 토큰이 출력될 때까지 반복한다.




Is BERT a language model?

양방향으로 학습되는 언어모델이다!




Traditinal LM (GPT) vs bidirectinal LM (BERT)

GPT(단방향): 현재까지 나온 단어로 다음 단어 예측

  • how are you를 입력 받으면 다음 단어인 doing을 예측한다.

BERT(양방향): 가려진 단어 예측

  • how are /// doing을 입력 받으면 you을 예측한다.

image.png




BERT의 특징 (Pretraining)

image.png


사람이 레이블링할 필요가 없다. 랜덤하게 단어를 가리고, 가려진 단어를 학습하기 때문이다.


두 줄 이상 입력 받을 수 있다.

  • ex) 질의응답 - 질문과 정답이 들어있는 문맥을 받아서 정답을 출력한다.

  • 토큰 간의 상관관계뿐만 아니라, 문장 간의 상관관계도 학습할 수 있다.


Token

  • CLS: 문장 전체가 하나의 벡터로 표현되는 스페셜 토큰이며, 분류에 사용된다.

  • SEP: 두 문장을 구별하는 토큰이다.


Embeddings

  • Token Embeddings

    • WordPiece Embedding을 이용해서 문장을 토큰 단위로 분리한다. 따라서 흔치 않은 단어들에 대한 예측 성능이 향상된다.
  • Segment Embeddings

    • 문장을 구별한다. 두 개의 문장이 있을 때, 각 문장에 각각 다른 숫자를 더해줌으로써 두 개의 문장이 있다는 것을 알려준다.
  • Position Embeddings

    • 토큰들의 상대적인 위치 정보를 알려준다.

    • sin, cos 함수를 이용한다.

      • 이유

        • 입력값에 따라 출력값이 달라진다. => 상대적인 위치 파악 가능하다.

        • 출력값이 규칙적으로 증가, 감소한다. => 상대적인 위치 쉽게 계산 가능하다.

        • 무한대 길이의 입력값도 상대적인 위치로 출력할 수 있다.




BERT vs GPT

BERT


양방향 언어 모델이다.


BERT는 Fine Tuning을 하기 위해서 만들어졌다 (loves fine tuning)


Pretraining & Fine Training으로 나뉜다.


모델이 상대적으로 작다.

  • 각각의 다른 자연어처리를 위해서 따로 fine tuning이 필요하다!


학습시키는데 상대적으로 적은 시간이 들지만 fine tuning을 개발자가 해야하고 fine tuning에 별도의 시간과 돈이 든다.


선행학습된 BERT는 인터넷에서 쉽게 다운받을 수 있다.

  • 개발자가 해야할 일: 다운받은 pre 모델을 어떻게 fine tuning 할까 생각해야한다!


GPT


단방향 언어 모델이다.


GPT는 Fine Tuning이 필요 없도록 만들어졌다. (hates fine tunig)


모델이 상대적으로 크다.

  • 선행 학습된 모델 그 자체로 여러가지 목적의 자연어 처리 가능하다. 그렇기 때문에 모델이 굉장히 크다


한 번 학습시키는데 어마한 시간과 돈이 든다.




BERT Fine Tuning examples

image.png

(a) 두 문장의 관계를 예측하는 모델

  • 두 문장을 SEP 토큰으로 구분해 입력해서 출력값의 첫번째인 CLS토큰이 두 문장의 관계를 나타내도록 학습시킨다.

(b) 문장을 분류하는 모델

  • 문장 1개를 입력 받고 CLS 토큰이 분류값 중 하나가 되도록 학습시킨다.

(c) 질의 및 응답에 사용되는 모델

  • 입력값으로 질문과 정답이 포함된 장문을 SEP 토큰으로 구분해서 준다.

  • BERT의 출력값으로 마지막 토큰들이 장문 속에 위치한 정답의 시작 인덱스와 마지막 인덱스를 출력하도록 학습시킨다.

(d) 문장 속 단어를 태깅하는 모델

  • 각각의 입력 토큰에 대한 출력값이 있다. 각각의 출력값이 원하는 태깅으로 출력되도록 학습시킨다.



BERT Performance

image.png


BERT의 성능은 상당히 우수하다.


GPT1과 동일한 사이즈의 BERT GPT1보다 높은 성능을 보이며, 더 큰 모델은 더 높은 성능을 보인다.



허민석 강사님의 BERT 강의를 듣고 정리했습니다.
https://www.youtube.com/watch?v=30SvdoA6ApE

댓글남기기