새소식

ETC/컨퍼런스 정리

[Langcon_2023] 특정 도메인에 맞는 언어 모델은 어떻게 만들까

  • -
Langcon 2023 박장원님의 "특정 도메인에 맞는 언어 모델은 어떻게 만들까"를 듣고 정리한 내용입니다.

 

 

도메인 특화 언어모델 (Domain-Specific Language Model)

 

  • Domain-Specific Language Model
    • BioBERT, SciBERT, LegalBERT ...
  • General Domain LM
    • 뉴스, 위키, 책, 웹 크롤링 데이터로 학습

 

언어모델 Pretraining 학습 방법

Pretraining From Scratch

  • 처음부터 특수 도메인 데이터로 학습

 

 

Continual Pretraining

  • 처음부터 학습하기에는 비용이 많이 들기 때문에 BERT같은 기존에 학습된 언어모델을 가지고 학습

 

 

 

도메인 특화 언어모델을 만들 때 고려해야할 점

1. Data

 지금 학습하려는 코퍼스가 해당 도메인 특화 코퍼스가 맞는지?

금융 특화 언어모델을 만들고 싶어서 경제 분야 뉴스를 준비하는 것이 맞을까?

General Domain LM은 보통 뉴스 코퍼스로 학습을 시켜놓은 상태인데, 이 뉴스 코퍼스에는 경제 분야도 들어가 있을 것이다.
즉, 금융 특화 언어모델을 만들기 위해 경제 분야 뉴스를 준비한다면 Overlap 되는  데이터들이 많아서 효과가 없을 가능성이 있다.

Don't Stop Pretraining: Adapt Language Models to Domains and Tasks (Gururangan et al., 2020) 논문에서는 RoBERTa의 Pretraining Corpus(PT)와 4가지 도메인 데이터를 가지고 단어가 얼마나 겹치는지를 확인하였다.
그 결과 News와 Reviews는 겹치는 단어가 많았음을 아래 표에서 나타내고 있다.

 

아래 표에서 확인할 수 있듯이, 해당 Domain으로 Pretraining을 해도 하지 않았을 때와 점수 차가 크지 않다.

 

 

▮ Corpus의 양은 어느정도가 적합할까?

우선 많을수록 좋다!

그러나 데이터의 품질이 중요하다. 양이 많더라도 중복되는 코퍼스가 많다면 학습에 소용이 없기 때문에 중복제거 작업은 중요하다.

The Effects of In-Domain Corpus Size on pre-training BERT (Sanchez et al., 2022) 논문에서는 4GB정도면 성능이 괜찮게 나왔다고 한다.

 

 

▮ 데이터 사이즈 계산은 어떻게 할까?

  • UTF-8 기준
    • 한글, 한자: 3 Byte
    • 영어, 숫자, 공백: 1Byte

 

 

2. Tokenizer

▮ 일단 어떤 단어가 [UNK]이 발생하는지 먼저 찾아봐야한다.

WordPiece Tokenizer의 경우 최소 단위인 Character에서 일치하는것이 없으면 전부 [UNK] 처리가 된다.

 

▮ Tokenizer를 만드는 3가지 방법

  1. 그냥 PLM Vocab을 그대로 사용한다.
    • Continual Pretraining을 한다고 보면 됨
  2. 새로운 도메인 코퍼스를 가지고 Vocab을 새로 만든다.
    • 처음부터 새로 다시 학습을하는 Pretraining From Scratch를 한다고 보면 됨
  3. 기존 Vocab에 새로운 단어를 추가한다.
    • Vocabulary Expansion → 제일 만만한 방식

 

▮  Vocab Size는 얼만큼까지 늘려도 괜찮을까?

Adapt-and-Distill: Developing Small, Fast and Effective Pretrained Language Models for Domains (Yao et al., 2021) 논문에서 각 token의 출현빈도의 곱로그를 씌우는 Occurrence Probability 를 사용한다.

 

30K에서 40K로 증가시킬 때 가장 효과적이었다고 한다. 그러나 최적의 사이즈는 본인의 기준에 맞게 판단하면 된다.

 

Efficient Domain Adaptation of Language Models via Adaptive Tokenization (Sachidananda et al., 2021) 에서는  "incubated"라는 단어를 추가시키면 "inc", "ub", "ated" embedding들의 평균으로 초기화한 값을 embedding 값으로 사용하는 방법으로 Continual Pretraining 없이 성능이 괜찮게 나왔다.

⇒ 너무 잘게 쪼개지는 것이 성능에 영향을 끼친다는 것을 시사한다.

 

▮  Tokenizer 성능 평가

1. Subword Fertility

  • How Good is Your Tokenizer? On the Monolingual Performance of Multilingual Language Models (Rust et al., 2021)
  • 단어마다 평균 몇개의 Subword로 쪼개지는가?
  • 특정 도메인으로 가면 그 단어가 없어서 한 글자씩 쪼개는 경우가 많다.

 

2. % of continued words

  • 한국어는 "조사"가 붙는데 "책을", "책이"가 각각 다른 단어로 취급되는 것은 좋지 않다.
  • 최소 2개 이상의 subword로 쪼개지는 단어의 개수 (전체 단어 중 몇 %)
    • 학교에 → ["학교에"] X
    • 학교에 → ["학교", "##에"] X
  • 조사가 잘 분리되었는지를 판단할 수 있어 한국어에 유용하다.

 

 

2. Difficulty of Task

▮ 난이도가 어렵다면 도메인 특화 언어모델은 유용하지만, 난이도가 쉬운 task라면..?

When Does Pretraining Help? Assessing Self-Supervised Learning for Law and the CaseHOLD Dataset (Zheng et al., 2021)에서는 Legal-BERT의 성능 향상이 생각보다 크지 않다고 한다.

그 이유는 Legal Task의 난이도가 쉽기 때문이라고 말한다.
즉, 법률을 공부하지 않은 사람도 해결이 가능한 task이기 때문이다.

 


 

728x90
Contents