본문 바로가기
NLP/프로젝트

How to Build domain-specific Embedding model - (1) : 선행 연구 조사

by ㅣlㅣl 2024. 12. 4.

도메인에 특화된 임베딩 모델을 만들기 위해서는 어떻게 데이터셋을 구축하고 학습을 진행해야 하는지, 선행 연구를 통하여 알아보도록 한다.


도메인 특화 임베딩 모델 구축의 의미

  • 상용 도메인 특화 모델은 내부 데이터를 공개하지 않음
  • 현재의 LLM은 복잡한 도메인 용어가 있을 경우 제대로 작동하지 않음
    → 모델 학습에 해당하는 데이터가 부족하기 때문
  • 인터넷 데이터가 풍부하더라도 교육 튜닝이나 임베딩 학습에 적합한 형태로 데이터를 얻는 것이 어려움

 


 

LLM2Vec

https://ll2ll.tistory.com/69

 

[논문 Review] 12. LLM2Vec : Large language models are secretly powerful text encoders

논문의 핵심 내용 한줄 요약LLM을 text encoder로 이용해보자Abstract이 논문에서는 decoder-only LLM을 강력한 성능의 text encoder로 변환하는 간단한 비지도 접근 방식 LLM2Vec을 소개한다.  1.3B ~ 7B 크기의

ll2ll.tistory.com

 

범용성을 위해서 LLM2Vec 방법론 사용하면 좋을 것이라 생각함

  • 활용성이 높으며, 최근 핫한 연구 트렌드
  • Decoder는 일부 토큰이 아닌 모든 입력 토큰에서 학습하기 때문에 더 효율적 학습 가능
  • Instruction을 통해 다양한 작업에서의 일반화 가능

 

동작 방식 복습

사전 훈련된 Decoder Only LLM (GPT) → text encoder로 변환
  1. Enabling Bidirectional Attention
    • 각 토큰이 시퀀스의 다른 모든 토큰에 액세스 하도록 함 → Bidirectional LLM
    • 사전 학습 시 Decoder Only LLM이 미래 토큰을 고려하게 훈련되지 않았음
    • MNTP, SimCSE Decoder 모델이 미래 토큰을 고려하도록 학습을 진행
  2. MNTP (masked next token Prediction)
    • bidirectional attention을 인식하도록 하기 위함
    • masked token percentage를 탐색하기 위해 하이퍼파라미터 서치를 수행했고, LLaMA에서는 BERT의 masking 방식을 사용해 20%를, Mistral에서는 RoBERTa의 masking 방식을 사용해 80%로 훈련
      • BERT : 15% 마스킹 이후, 마스킹 된 토큰의 10%는 무작위 토큰으로 교체
      • RoBERTa : 15% 마스킹 이후 후처리 X
    • Word Level Encoder로는 변환이 가능하지만, Sequence Level에서는 부족할 수 있음
      → 단어 단위로 마스킹 / 예측은 진행했지만, 그게 Sequence Level은 아니기 때문
  3. SimCSE  : for contrastive learning 
    • 전체 임베딩 공간에서 의미적으로 유사한 표현은 가깝게, 유사하지 않은 표현은 멀게 만들기 위함

 

 

SimCSE 내 방법론

https://ll2ll.tistory.com/75

 

[논문 Review] 13. SimCSE : Simple Contrastive Learning of Sentence Embeddings

논문의 핵심 내용 한줄 요약CV에서 쓰이던 Contrastive Learning을 NLP 분야에도 적용해보자!Abstract비지도 학습 : 입력 문장을 가지고 표준 dropout만 사용하는 방식. 여기에서 dropout은 일종의 data augmentatio

ll2ll.tistory.com

 

  • Unsupervised : 입력 문장을 가지고 dropout 사용하는 방식
    • 입력 시퀀스가 주어지면 독립적으로 Sampling 된 dropout mask 적용 모델에 동일한 input sequence를 2번 통과시켜 2개의 다른 표현을 생성
       생성된 2개의 표현은 의미적으로 동일하기 때문에 전체 임베딩 공간에서 가까워야 함
      → 따라서 생성된 2개 표현 (= positive example) 의 유사성을 최대화하는 동시에, 배치 내 다른 시퀀스 표현( = negative example) 과의 유사성을 최소화하도록 훈련
  • Supervised : NLI dataset을 사용해 Entailment (positive) / Contradiction (negative)
    • QQP, Flickr30k, ParaNMT, NLI dataset (SNLI, MNLI)  사용
      -> SNLI, MNLI가 가장 성능 높았음
    • (entailment, neutral, contradiction)
    • entailment를 positive로, contradiction을 hard negative로
    • hard negative 추가했더니 성능이 좋음

 

 

논문 내 사용 모델 / 데이터셋

  • 모델
    • LLaMA-1.3B
    • LLaMA-2-7B-chat
    • Mistral-7B-instruct

 

  • 데이터셋을 어떻게 구성했는가?
    • 영어 위키피디아 데이터를 사용해서 MNTP, SimCSE를 수행
      → MNTP, SimCSE는 새로운 지식을 가르치는 단계가 아니기에 모든 모델의 사전 학습 데이터에 포함되어 있는 데이터를 선택

 


 결론

  • MNTP + SimCSE 방식이 최선일까? 그대로 적용하면 어떤 문제가 있을까?
    -> 후속 연구 조사

 

  • 최종 단에서 Representation 뽑아낼 때도 여러 가지 Pooling operation 실험해볼 수 있을 듯
    • [EOS] : 가장 마지막 토큰만 사용
    • mean : 평균
    • [Weighted mean] : position에 따른 가중치
    → 논문에서는 mean, w.mean 둘 다 높게 나왔음 / w.mean이 조금 더 높아서 이걸로 최종 결과 비교

 

  • 용어의 의미가 중요한 금융 도메인에서 dropout을 통해 2개의 다른 표현을 생성하는 것이 적절한가?
    • 법률, 의학 등 다른 전문 분야 도메인에서는 어떻게 적용하고 있을까?
      • ContractNLI : https://aclanthology.org/2021.findings-emnlp.164/
      • 전체 문서에서 특정 가설이 참인지, 모순인지, 언급되지 않았는지를 판단
        • 17개의 고정된 가설 (hypothesis) 설계
        • 다양한 NDA 문서를 수집하여 계약서에서 자주 등장하는 조항과 조건을 분석.
        • 일반적으로 NDA에서 다루는 핵심적인 내용, 예를 들어, 정보의 비공개, 정보의 사용 제한, 정보의 공유 조건 등을 정리.
        • 법률 전문가의 검토를 거침
        • 607개의 문서를 대상으로 train/valid/test 나눠서 진행

 

  • 어떤 데이터로 추가 학습 + Contrastive Learning을 진행해야 할까?
    • 오픈 소스 데이터에는 어떤 것이 있을까?
      • 그 중에서도 도메인 관련 텍스트가 가장 많은 것은?
      • 적절한 한국어 데이터 찾기
      • 혹은 영어 데이터를 기계 번역
    • 원천 말뭉치로부터 데이터 구축을 진행한다면, 어떤 방식으로 구축해야 할까?
      • 크롤링 소스 정리
      • 원천 데이터로부터 어떤 방식으로 구축 진행할지 계획 수립
    • 텍스트를 증강하는 방법이 있을까?
      • 특히 원하는 도메인 관련해서, 의미를 최대한 손상시키지 않으면서도 증강할 수 있는 방법 모색