도메인에 특화된 임베딩 모델을 만들기 위해서는 어떻게 데이터셋을 구축하고 학습을 진행해야 하는지, 선행 연구를 통하여 알아보도록 한다.
도메인 특화 임베딩 모델 구축의 의미
- 상용 도메인 특화 모델은 내부 데이터를 공개하지 않음
- 현재의 LLM은 복잡한 도메인 용어가 있을 경우 제대로 작동하지 않음
→ 모델 학습에 해당하는 데이터가 부족하기 때문 - 인터넷 데이터가 풍부하더라도 교육 튜닝이나 임베딩 학습에 적합한 형태로 데이터를 얻는 것이 어려움
LLM2Vec
[논문 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로 변환
- Enabling Bidirectional Attention
- 각 토큰이 시퀀스의 다른 모든 토큰에 액세스 하도록 함 → Bidirectional LLM
- 사전 학습 시 Decoder Only LLM이 미래 토큰을 고려하게 훈련되지 않았음
- MNTP, SimCSE Decoder 모델이 미래 토큰을 고려하도록 학습을 진행
- 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은 아니기 때문
- SimCSE : for contrastive learning
- 전체 임베딩 공간에서 의미적으로 유사한 표현은 가깝게, 유사하지 않은 표현은 멀게 만들기 위함
SimCSE 내 방법론
[논문 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) 과의 유사성을 최소화하도록 훈련
- 입력 시퀀스가 주어지면 독립적으로 Sampling 된 dropout mask 적용 모델에 동일한 input sequence를 2번 통과시켜 2개의 다른 표현을 생성
- 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 추가했더니 성능이 좋음
- QQP, Flickr30k, ParaNMT, NLI dataset (SNLI, MNLI) 사용
논문 내 사용 모델 / 데이터셋
- 모델
- LLaMA-1.3B
- LLaMA-2-7B-chat
- Mistral-7B-instruct
- 데이터셋을 어떻게 구성했는가?
- 영어 위키피디아 데이터를 사용해서 MNTP, SimCSE를 수행
→ MNTP, SimCSE는 새로운 지식을 가르치는 단계가 아니기에 모든 모델의 사전 학습 데이터에 포함되어 있는 데이터를 선택
- 영어 위키피디아 데이터를 사용해서 MNTP, SimCSE를 수행
결론
- MNTP + SimCSE 방식이 최선일까? 그대로 적용하면 어떤 문제가 있을까?
-> 후속 연구 조사
- 최종 단에서 Representation 뽑아낼 때도 여러 가지 Pooling operation 실험해볼 수 있을 듯
- [EOS] : 가장 마지막 토큰만 사용
- mean : 평균
- [Weighted mean] : position에 따른 가중치
- 용어의 의미가 중요한 금융 도메인에서 dropout을 통해 2개의 다른 표현을 생성하는 것이 적절한가?
- 법률, 의학 등 다른 전문 분야 도메인에서는 어떻게 적용하고 있을까?
- ContractNLI : https://aclanthology.org/2021.findings-emnlp.164/
- 전체 문서에서 특정 가설이 참인지, 모순인지, 언급되지 않았는지를 판단
- 17개의 고정된 가설 (hypothesis) 설계
- 다양한 NDA 문서를 수집하여 계약서에서 자주 등장하는 조항과 조건을 분석.
- 일반적으로 NDA에서 다루는 핵심적인 내용, 예를 들어, 정보의 비공개, 정보의 사용 제한, 정보의 공유 조건 등을 정리.
- 법률 전문가의 검토를 거침
- 607개의 문서를 대상으로 train/valid/test 나눠서 진행
- 법률, 의학 등 다른 전문 분야 도메인에서는 어떻게 적용하고 있을까?
- 어떤 데이터로 추가 학습 + Contrastive Learning을 진행해야 할까?
- 오픈 소스 데이터에는 어떤 것이 있을까?
- 그 중에서도 도메인 관련 텍스트가 가장 많은 것은?
- 적절한 한국어 데이터 찾기
- 혹은 영어 데이터를 기계 번역
- 원천 말뭉치로부터 데이터 구축을 진행한다면, 어떤 방식으로 구축해야 할까?
- 크롤링 소스 정리
- 원천 데이터로부터 어떤 방식으로 구축 진행할지 계획 수립
- 텍스트를 증강하는 방법이 있을까?
- 특히 원하는 도메인 관련해서, 의미를 최대한 손상시키지 않으면서도 증강할 수 있는 방법 모색
- 오픈 소스 데이터에는 어떤 것이 있을까?
'NLP > 프로젝트' 카테고리의 다른 글
GPT Batch API 활용법 (1) - Batch request (0) | 2025.02.06 |
---|---|
좋은 프로젝트란 무엇인가? - 기획편 (0) | 2025.01.16 |
How to Build domain-specific Embedding model - (2) : Dataset (34) | 2024.12.11 |
Azure Function - Mac setting (1) | 2024.12.09 |
Azure Function - Windows setting (2) | 2024.12.09 |