논문명: Unsupervised Information Refinement Training of Large Language Models for Retrieval-Augmented Generation
(INFO-RAG 라고 부르네요)
논문링크: https://arxiv.org/abs/2402.18150
핵심만 정리합니다
핵심
- RAG 할 때, 문서가 3가지 경우로 갈림
- 첫번째: 원하는 정답이 다 있는 이상적인 경우
- 두번째: 불완전하거나 일부 틀린 정보가 담긴 경우
- 세번째: 관련 있는 문서긴 한데 정답이 포함되지 않은 경우
- 핵심: 이 3가지 경우에 대해 미리 사후 학습하여 언어모델의 대처 능력을 기르자
데이터 만드는 법
- 데이터는 일단 질문과 문서, 그리고 답이 함께 있는 데이터셋을 가져온다.
- 첫번째 시나리오는 그냥 학습하면 되니까 상관 없음.
- 두번째 시나리오는 일부를 마스킹하거나 랜덤 토큰으로 바꿔버림. 그리고 학습함.
- 세번째 시나리오는 문장 일부를 날리고 학습함.
흥미로운 점: 중요한 토큰의 기준이 뭘까?
- DoLa 에서 제시한 방법인 '마지막 층의 토큰 생성 확률'과 '중간 층의 토큰 생성 확률'을 활용하였음
- Jensen-Shannon Divergence (JSD) 활용
(LoRA만 사용했는데, full-finetuning 을 왜 안했는지 의아했는데 마지막에 GPU의 한계로 13B만 썼다는 걸 보니까 LoRA가 거대언어모델을 돌릴 수 있는 최대치였나보다..!)