brunch

You can make anything
by writing

C.S.Lewis

by DrChoi Jan 18. 2024

Transformer, BERT에 대해 알아보자

'구글 BERT의 정석'을 읽고 주요 내용을 요약해보자

"AI"라는 단어가 일상어가 되어버렸다. 더욱이 IT 기업에서 일을 하고 있다보니, 기술의 "ㄱ"도 모르는 나 같은 사람도 AI에 대한 최소한의 이해는 필요한 시대다. 아는 분께 추천받은 《구글 BERT의 정석》이라는 책을 읽으며 핵심적인 내용을 요약해보았다. 부디 나 같은 사람들에게 조금이나마 도움이 되기를 바라며.


1. Transformer 대해


- Transformer는 아키텍처, BERT는 모델(트랜스포머 인코더만 사용한 것)

- 순차적 태스크에서 주로 사용되는 RNN, LSTM은 길이가 길어지면 처음 정보가 마지막까지 전달되는 문제 있었음

- 이를 해결한 것이 Attention is all you need 논문에서 제안된 트랜스포머

- 트랜스포머는 순환신경망을 사용하지 않고 Self-attention을 사용.

- 인코더 디코더 구조.

- 인코더 여러개로 쌓아올려서 마지막에 encoding representation vector를 추출. Attention is all you need 논문에서는 6개.

- 셀프 어텐션의 절차

     - 쿼리, 키, 밸류 각각의 행렬을 추출

     - 쿼리와 키의 행렬의 유사도를 비교 (각 단어가 다른 단어와 얼마나 연관성을 갖는지)

- 멀티헤드 어텐션

     - 셀프 어텐션으로 단어와 단어의 유사도를 판단하는데, 잘못 판단할 위험을 줄이기 위해 여러번 유사도 값을 구해서 그 합을 결과로 사용

- Positional Encoding

     - 순차적이 아닌 병렬로 모든 정보를 입력하기 때문에 학습 시간 단축, 장기 기억 문제 해결. 단, 순서 정보를 별도로 입력해줘야 함.

     - embedding matrix를 트랜스포머에 입력하기 전에 위치 인코딩을 더해줘서 위치 정보를 포함시킴

- 디코더

    - 여러 레이어로 디코더 쌓을 수있고, 각 디코더는 인코더의 embedding representation과 그 전 단계 디코더의 representation을 함께 받음

    - time step 에 따라 그 전 단계에서 생성된 결과와 output embedding을 함께 디코더에 입력

    - 인코더와 구조가 유사하지만, masked multihead attention을 추가로 사용한다는 차이점

    - 디코더에 입력할 때 time step에 따라 만들어진 단어까지만 입력하기 때문에, self attention 수행시 그 뒤 단어들은 고려해선 안 됨. 그래서 그 뒤의 단어들을 masking

- 디코더에서 얻은 representation을 선형 레이어에 입력. 거기에서 다음 단어 중 가장 확률이 높은 것을 생성

-  예측 확률 분포와 실제 확률 분포 사이의 차이를 확인하기 위해 cross entropy 사용


2. BERT


- 구글의 텍스트 임베딩 모델. Word2vec과 달리 컨텍스트 기반 임베딩 모델임.

- w2v는 "Python"이라는 단어에 대해 항상 동일한 정적 임베딩을 제공.

- BERT는 다른 단어들과의 관계를 고려하여 동적 임베딩을 구성

- 트랜스포머는 인코더 디코더 구조, BERT는 인코더만 사용.

- BERT base 모델은 768 차원의 은닉 유니. 1억 1천만개의 변수

- BERT large 모델은 1024 차원의 은닉 유닛, 3억 4천만개의 변수

- BERT의 입력 데이터는 3개 레이어로 구성. 토큰 임베딩, 세그먼트 임베딩, 위치 임베딩

- BERT는 워드피스 토크나이저를 사용하여 토큰화함. subword 토큰화 알고리즘, 맞는 단어가 없으면 subword로 분할하여 확인하는 방식. OOV 단어 처리에 효과적

- 버트는 3만 토큰의 어휘사전 사용

- 버트의 pretraining

     - Masked language modeling - 랜덤하게 15% 단어를 마스킹한 뒤, 그것을 예측하도록 학습

     - Next sentence prediction - 두 개 문장을 주고 다음 문장인지 분류하는 이진 분류 태스크. 두 문장 사이의 관계 학습. 질문 답변, 감정 분류, 유사문장탐지와 같은 다운스트림 태스크에서 유용.

     - Toronto book corpus와 위키피디아 데이터셋으로 사전 학습. 50%는 isNext로, 50%는 notNext로. 단어 중 15%는 마스킹. 그 중 8할은 mask, 1할은 다른 단어, 1할은 그대로.



작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari