Practice makes perfect!

Week9 (2) BERT 언어모델 본문

Study/AI Tech

Week9 (2) BERT 언어모델

na0dev 2021. 9. 28. 11:06

1) 강의 내용

이미지 Autoencoder

- encoder : 입력된 이미지를 압축된 형태로 표현

- decoder : 원본을 다시 복원

- compressed data는 입력 이미지에 대한 벡터값이 될 수 있음. (본인 스스로를 가장 잘 표현할 수 있게 학습된 모델이기 때문)

BERT

- self attention(transformer)를 사용한 모델

- 입력된 정보를 다시 입력된 정보로 representation하는 것을 목적으로 학습됨

- masking 기술을 사용해 어렵게 만든 문제를 해결하도록 함.

 

- BERT는 mask된 자연어를 원본 자연어로 복원하는 과정으로 학습

- GPT-2 는 원본 이미지를 특정 sequence로 자르고 모델이 그 next를 예측하는 것을 목적으로 학습

- sentence 2개를 input으로 받음

- 12개의 transformer layer가 all-to-all로 연결되어 있음

- [CLS]는 s1과 s2가 next sentence 관계인지 아닌지를 분류하기 위해 학습됨

- [CLS] 토큰의 출력 벡터가 s1과 s2를 포괄하고 있는 어떤 벡터로 녹아든다고 가정.

- [CLS] 토큰이 s1과 s2를 잘 표현하기 위해 토큰 위에 classification layer를 부착해서 pre-training 진행

 

데이터의 tokenizing

- WordPiece tokenizing

- He likes playing -> He likes play ##ing
- 입력 문장을 tokenizing하고, 그 token들로 ‘token sequence’를 만들어 학습에 사용
- 2개의 token sequence가 학습에 사용됨

 

> NLP 실험

GLUE dataset

- MNLI(두 문장의 관계 분류를 위한 데이터셋), QQP(두 질문이 의미상 같은지) 등..

- 언어 모델의 성능평가의 지표가 될 수 있음

 

- 단일 문장 분류(어떤 클래스인지), 두 문장 관계 분류(next sentence, 가설, 유사도 등), 문장 토큰 분류(각 토큰들의 output에 classifier 부착 -> 토큰이 어떤 레이블을 갖는지 분류. 객체명 인식기), 기계 독해 정답 분류(문서 내 정답 찾기)

 

> 한국어 BERT 모델

ETRI KoBERT

- 최초로 공개된 모델

- 형태소 단위로 먼저 분리 후 Word Piece tokenizer 적용 -> 한국어에 특화되게 만듦

 

SKT KoBERT

- Word Piece tokenizer 만 사용

- ETRI 보다는 성능이 조금 떨어짐. 

- ETRI 형태소 분석기를 사용하지 않아도 된다는 점.

 

- 자소 (CV), 음절(Syllable), 형태소 (morpheme)

- Morpheme-aware Subword가 가장 성능이 좋았음

 

Advanced BERT model

- KBQA에서 가장 중요한 entity정보가 기존 BERT에서는 무시됨
- Entity linking을 통한 주요 entity추출 및 entity tag부착
- Entity embedding layer의 추가
- 형태소 분석을 통해 NNP와 entity우선 chunking masking

 


- word piece 단위로 한국어 corpus를 이용해 vocab을 만들 때, 30000개 정도로 하면 한자와 특수기호까지 포함되게 만들 수 있음

 

2) 피어세션

# vocab에 없는 단어 add_tokens로 추가!
added_token_num = tokenizer.add_tokens(["깟뻬뜨랑", "케쇽", "우뤼갸", "쳥쇼", "섀료"])
print(added_token_num) # 추가된 토큰 수 

print(tokenizer.vocab_size) # add_tokens 전이랑 변화 x !

토큰을 추가했는데 tokenizer.vocab_size가 변경되지 않는 이유가 궁금해 질문했다.

tokenizer.vocab_size : Size of the base vocabulary (without the added tokens)

[참고자료] https://huggingface.co/transformers/main_classes/tokenizer.html#transformers.PreTrainedTokenizer.vocab_size

 

Tokenizer

A tokenizer is in charge of preparing the inputs for a model. The library contains tokenizers for all the models. Most of the tokenizers are available in two...

huggingface.co

* pre-fix된 모델은 임베딩 레이어의 vocab이 고정되어 있기 때문에, vocab을 새롭게 추가했다면, 반드시 model의 embedding layer 사이즈를 늘려줘야 한다!

model.resize_token_embeddings(tokenizer.vocab_size + added_token_num)

 

 

 

 

반응형

'Study > AI Tech' 카테고리의 다른 글

Week 11 (1) MRC Intro  (0) 2021.10.12
Week 10 (1) GPT 언어 모델  (0) 2021.10.05
Week 9 (4) 한국어 언어 모델 학습 및 다중 과제 튜닝  (0) 2021.10.01
Week9 (3) BERT 학습  (0) 2021.09.29
Week 9 (1) 인공지능과 자연어 처리  (0) 2021.09.27
Comments