[논문리뷰]27. SELF-RAG: LEARNING TO RETRIEVE, GENERATE, AND CRITIQUE THROUGH SELF-REFLECTION
LLM은 놀라운 능력을 가지고 있지만, 이들이 내놓는 응답에는 종종 사실과 다른 부정확한 정보가 포함되고 있음
이는 모델이 자체적으로 보유한 지식(파라메트릭 지식)에만 의존하기 때문
RAG는 관련 지식을 검색하여 모델을 보완하는 임시 방편으로, 이러한 문제를 줄이는 데 기여하고 있음
그러나 검색이 필요하지 않거나 검색된 문서가 적절하지 않은 경우에도 고정된 수의 문서를 무작위로 검색하여 포함시키는 것은 모델의 다재다능성을 저하시킬 수 있으며, 비효율적인 응답 생성으로 이어질 수 있음
모델의 품질과 사실성을 향상시키기 위해 검색과 Self-Reflective을 활용하는 새로운 프레임워크인 SELF-RAG을 제안
이 프레임워크는 단일 임의의 LLM을 훈련시켜 필요할 때 적응적으로 문서를 검색하고, 검색된 문서와 자신의 생성물에 대해 반성하는 특수 토큰인 Reflection Tokens을 생성
Reflection Tokens을 생성함으로써 모델은 추론 단계에서 제어 가능해지며, 다양한 작업 요구에 맞게 행동을 조정할 수 있음
실험 결과, SELF-RAG(7B 및 13B 매개변수)는 다양한 작업에서 최첨단 LLM 및 정보 검색을 통한 모델보다 현저하게 우수한 성능을 보임
특히, SELF-RAG는 오픈 도메인 질문 응답, 추론 및 사실 검증 작업에서 ChatGPT 및 정보 검색을 활용한 Llama2-chat보다 우수한 성과를 보였으며, 이러한 모델들에 비해 장문의 생성물에 대한 사실성과 인용 정확성을 크게 개선
LLM들은 모델과 데이터의 규모가 증가했음에도 불구하고 여전히 사실 오류가 존재
RAG 방법(Figure 1의 왼쪽 그림)은 LLM의 입력에 관련된 검색된 구절을 추가하여 지식 집약적인 작업에서 사실 오류를 줄여줌
그러나 이러한 방법은 LLM의 다재다능성을 저하시킬 수 있으며, 사실적 근거가 유용한지 여부와 관계없이 무작위로 구절을 검색하여 포함함으로써 불필요하거나 주제에 맞지 않는 구절이 생성되는 결과를 초래할 수 있음
모델이 제공된 구절에서 사실을 활용하고 따르도록 명시적으로 훈련되지 않았기 때문에, 생성된 출력이 검색된 관련 구절과 일관되게 유지된다는 보장이 없음
모델의 기본 메커니즘
RAG 모델은 검색된 구절을 참고해서 답변을 생성하지만, 검색된 내용을 그대로 복사하지 않고, 그 내용을 바탕으로 새로운 문장을 구성
따라서 temperature가 0이라도, 답변이 검색된 구절과 완전히 동일하지 않을 수 있음
검색된 구절의 선택과 활용
RAG는 여러 구절을 검색해서 그중 관련성이 높은 구절을 선택해 답변에 포함시키려고 하지만, 검색된 정보 중 일부는 실제로 사용되지 않거나 모델이 그것을 정확하게 해석하지 못할 수 있음
특히 모델이 제공된 구절을 활용하는 방법에 따라 결과가 달라질 수 있음
결국 temperature 값을 0으로 설정하는 것은 답변을 더 예측 가능하게 하고 창의성을 억제하는 효과는 있지만, 검색된 구절과 항상 일치하는 답변을 생성하도록 보장하지는 않음
이 연구에서는 LLM의 생성 품질을 향상시키기 위해, 특히 그 사실성을 유지하면서도 다재다능성을 저해하지 않는 방법으로, 필요에 따라 검색하고 Self-Reflective을 수행하는 '자기 반성적 정보 검색을 통한 생성(SELF-RAG)'을 도입
특정 작업 입력을 받은 후 생성 과정에서 자신의 생성물을 반성할 수 있도록 단일 임의의 LM을 종단간 방식으로 훈련
이 과정에서 작업 출력과 간헐적인 Reflective-Token을 생성
Reflective-Token은 검색 필요성과 생성 품질을 나타내는 검색 토큰과 비판 토큰으로 구분(Figure 1의 오른쪽 그림).
특히, 입력 프롬프트와 이전의 생성물을 바탕으로, SELF-RAG는 계속된 생성에 검색된 구절을 추가하는 것이 유익한지를 먼저 판단
만약 그렇다면, 검색 모델을 필요에 따라 호출하는 검색 토큰을 출력(1단계).
SELF-RAG는 동시에 여러 검색된 구절을 처리하며, 그들의 관련성을 평가한 후 이에 상응하는 작업 출력을 생성(2단계).
SELF-RAG는 자신의 출력을 비판하고, 사실성과 전반적인 품질 측면에서 가장 우수한 출력을 선택하기 위해 비판 토큰을 생성(3단계).
예시
질문: "미국의 주들은 어떻게 이름이 붙여졌나요?"
1단계: 검색 필요성 판단 및 검색 토큰 출력
SELF-RAG는 입력된 질문과 이전의 생성물(예를 들어, 모델이 지금까지 생성한 문장)을 바탕으로 추가적인 검색이 필요한지 판단
이 판단은 Reflective-Token인 검색 토큰을 통해 이뤄짐
모델은 이 질문에 대해 자체적으로 답변을 시도할 수 있지만, 정확한 정보를 제공하기 위해 외부 지식이 필요하다고 판단할 수 있음
만약 추가적인 검색이 필요하다고 판단되면, 모델은 검색 토큰을 생성
이 검색 토큰은 RAG 시스템을 통해 관련 문서를 검색하도록 요청
예를 들어, SELF-RAG는 **"미국 주 이름의 기원"**에 대한 관련 정보를 웹에서 검색할 수 있음
2단계: 검색된 구절을 활용한 생성
이제 SELF-RAG는 검색된 여러 구절을 받아들임
하지만 여기서 중요한 것은, 모든 검색된 구절이 적합하지는 않을 수 있다는 점, 그래서 모델은 검색된 구절 각각의 관련성을 평가함
예를 들어, 검색된 구절 중 하나는 "캘리포니아는 스페인 소설에 등장하는 허구의 섬에서 이름을 따왔다"는 정보일 수 있음
다른 구절은 "텍사스는 원주민 부족의 이름에서 유래되었다"는 정보일 수 있음
SELF-RAG는 각 구절을 평가하여 가장 관련성 높은 구절을 선택하고, 그 구절을 바탕으로 답변을 재구성함
이 단계에서 생성된 문장은 검색된 정보를 포함하지만, 모델이 단순히 복사하는 것이 아니라, 새롭게 구성된 답변을 생성
3단계: 생성물 평가 및 비판 토큰 출력
SELF-RAG는 마지막으로 자신의 출력(답변)을 비판적으로 평가
이를 위해 비판 토큰을 사용하여 출력의 사실성, 품질, 전반적인 적합성을 평가
모델은 "캘리포니아는 허구의 섬에서 이름을 따왔다"는 정보가 완전히 사실에 부합하는지를 평가하고, 부족한 부분을 수정할 수 있음
"텍사스"와 관련된 문장을 평가하고, 충분한 지원 근거가 있는지를 확인
이 평가 과정에서 가장 사실적인 답변을 선택하고, 최종적으로 가장 질 높은 답변을 사용자에게 제공
최종 출력 예시:
"미국 주들의 이름은 다양한 출처에서 유래되었습니다. 예를 들어, 캘리포니아는 스페인 소설에 등장하는 허구의 섬에서 이름을 따왔으며, 텍사스는 원주민 부족의 이름에서 유래되었습니다."
이 예시에서는 SELF-RAG가 검색된 정보를 활용하여 답변을 생성하고, 비판적인 자기 평가를 통해 답변의 사실성을 검토하여 최종적으로 가장 적합한 답변을 선택하게 됨
핵심 개념:
검색 토큰: 검색이 필요하다고 판단되면 호출되며, 추가적인 외부 정보를 검색
비판 토큰: 모델이 생성한 답변의 사실성과 품질을 평가하며, 이를 바탕으로 가장 우수한 답변을 선택
자기 반성(Self-Reflection): 모델이 스스로 평가하고 개선할 수 있도록 하는 과정
이 과정은 검색 필요성과 관계없이 고정된 수의 문서를 계속 검색하여 출력을 생성하는 기존의 RAG 방식(Figure 1의 왼쪽 그림)과 차이
SELF-RAG는 각 구간에 대해 출력이 구절에 의해 지지되는지를 Self-Evaluation를 통해 인용을 제공하여 사실 검증을 쉽게 만듬
SELF-RAG는 확장된 모델 어휘로부터 다음 토큰 예측으로 Reflective-Token을 통합하여 텍스트를 생성하도록 임의의 LM을 훈련
Reflective-Token과 검색된 구절이 섞인 다양한 텍스트 모음을 사용하여 생성 모델을 훈련
Reflective-Token은 강화 학습에서 사용되는 보상 모델에서 영감을 받아, 훈련된 비판 모델에 의해 오프라인으로 원래 말뭉치에 삽입
이 과정은 훈련 중 비판 모델을 유지할 필요성을 제거하여 오버헤드를 줄여줌
비판 모델은 부분적으로 입력, 출력 및 대응하는 Reflective-Token이 포함된 데이터셋에 대해 GPT-4(OpenAI 2023)를 사용하여 수집된 데이터를 바탕으로 감독
텍스트 생성을 시작하고 안내하는 제어 토큰을 사용하는 연구에서 영감을 얻었지만, 훈련된 LM은 생성된 각 구간 후에 자신의 예측을 평가하기 위해 비판 토큰을 사용하여 생성 출력을 평가
SELF-RAG의 핵심 개념:
SELF-RAG는 텍스트 생성 과정에서 스스로 평가하는 메커니즘을 포함한 시스템
이 과정에서 모델은 Reflective-Token을 사용하여 자신의 생성물이 사실적으로 정확한지, 검색된 정보에 의해 지지되는지를 평가할 수 있음
SELF-RAG는 비판 모델을 통해 이러한 평가 과정을 자동화하고, 훈련된 모델이 이 평가 과정을 스스로 수행할 수 있도록 훈련
단계별로 설명
1. Reflective-Token 통합 및 훈련 과정
SELF-RAG는 Reflective-Token을 통해 각 생성 구간을 평가
이 Reflective-Token은 검색된 구절과 모델의 출력이 얼마나 관련이 있고, 그 출력을 지지하는지를 나타냄
예를 들어, "캘리포니아는 스페인 소설에서 이름이 유래했다"는 구절이 검색되었고, 모델이 이를 바탕으로 생성한 문장은 "캘리포니아는 스페인에서 유래된 이름입니다."일 수 있음
이때, 비판 토큰(ISSUP)을 사용하여 이 출력이 검색된 구절에 의해 완전히 지지되는지, 부분적으로 지지되는지, 전혀 지지되지 않는지를 평가
2. 훈련 과정에서 Reflective-Token을 어떻게 사용하나
SELF-RAG는 기존 텍스트 데이터와 Reflective-Token을 섞어 훈련 데이터셋을 만듬
이때 Reflective-Token은 검색된 구절과 해당 구절을 평가하는 정보를 포함
비판 모델은 이 데이터를 바탕으로 오프라인에서 Reflective-Token을 말뭉치에 삽입
이 과정에서 훈련된 비판 모델은 모델이 구절을 평가하는 기준을 설정
3. 비판 모델과 보상 모델의 역할
SELF-RAG는 강화 학습의 보상 모델에서 영감을 받아, 비판 모델을 사용하여 텍스트 생성 과정에서 평가할 수 있는 기준을 제공
이 비판 모델은 GPT-4를 활용해 정확한 평가 기준을 설정하며, 생성된 각 구간이 얼마나 관련성이 있는지, 정확한지 평가하는 토큰을 생성하게 됨
4. 오버헤드 감소
SELF-RAG는 훈련 과정에서 비판 모델을 오프라인으로 활용하여 훈련 중에는 비판 모델을 항상 유지할 필요가 없음
이로 인해 훈련 오버헤드(모델 복잡도 및 리소스)가 줄어들고, 보다 효율적인 훈련이 가능
예시:
입력 질문: "미국의 주들은 어떻게 이름이 붙여졌나요?"
1단계: 검색된 구절
검색된 구절 중 하나는 "캘리포니아는 스페인 소설에 등장하는 허구의 섬에서 이름을 따왔다"일 수 있고, 또 다른 구절은 "텍사스는 원주민 부족의 이름에서 유래되었다"일 수 있음
2단계: 답변 생성
모델은 이 구절들을 바탕으로 다음과 같은 답변을 생성할 수 있음: "미국의 주 이름들은 다양한 출처에서 유래했습니다. 예를 들어, 캘리포니아는 스페인 소설에 등장하는 허구의 섬에서 이름이 유래되었고, 텍사스는 원주민 부족의 이름에서 유래되었습니다."
3단계: Reflective-Token을 통한 평가
모델은 Reflective-Token을 사용하여 각 구절을 평가
검색 토큰(ISREL)은 "텍사스"나 "캘리포니아"에 관한 구절이 질문과 관련성이 있는지 평가
비판 토큰(ISSUP)은 생성된 답변이 해당 구절에 의해 완전히 지지되는지, 부분적으로 지지되는지, 전혀 지지되지 않는지를 평가
예를 들어, "캘리포니아는 스페인 소설에서 이름이 유래했다"는 구절이 답변을 완전히 지지한다고 판단될 수 있고, 이 판단은 완전 지지(Fully Supported)로 표시됩니다.
4단계: 최종 출력
최종적으로 모델은 각 구절의 평가 결과를 바탕으로 가장 사실적으로 지지되는 부분만 포함하여 답변을 구성
이렇게 하면, 검색된 구절이 답변을 사실적으로 뒷받침하도록 하고, 사용자에게 신뢰할 수 있는 출처를 제공할 수 있음
결론:
SELF-RAG는 단순히 검색된 구절을 바탕으로 답변을 생성하는 것에서 그치지 않고, 생성한 답변이 검색된 정보에 의해 얼마나 지지되는지 스스로 평가하고, 이를 바탕으로 더 정확하고 신뢰성 있는 답변을 생성할 수 있게 함
이러한 방식은 사실 검증과 관련된 작업에서 특히 유용하며, 각 구간마다 스스로 반성하고 개선할 수 있다는 점에서 기존의 RAG 모델보다 더 정교한 결과를 제공
SELF-RAG는 추가적으로 Reflective-Token 예측에 의해 정의된 엄격한 또는 유연한 제약을 만족시키기 위해 사용자 정의 가능한 디코딩 알고리즘을 제공
추론 단계 알고리즘은 (1) 다양한 하위 작업에 대해 검색 빈도를 유연하게 조정할 수 있으며, (2) Reflective-Token을 활용하여 세그먼트 수준 빔 서치를 통해 Reflective-Token 확률의 가중 합을 세그먼트 점수로 사용함으로써 사용자 선호에 맞춰 모델의 행동을 사용자 정의할 수 있게 함
추론 및 학습에서 Reflective-Token을 사용한 SELF-RAG는 더 많은 매개변수를 가진 사전 학습된 모델 및 명령 조정된 LLM보다 전반적인 성능 개선을 보여줌
Reflective-Token을 사용한 훈련과 추론이 전체 성능 향상에 미치는 효과와 함께 테스트 시 모델 사용자 정의(e.g., 인용 정확성과 완전성 간의 균형 맞추기)에 대한 효과를 확인할 수 있었음
RELATED WORK
RAG(Retrieval-Augmented Generation)
RAG은 LLM의 input space를 검색된 텍스트 구절로 보강하여 knowledge-intensive tasks에서 큰 성능 향상
이러한 방식은 파인튜닝 후 또는 상용 LLM과 함께 사용될 때 큰 성능 개선
최근의 연구는 고정된 수의 검색된 구절을 입력에 미리 추가하여 LLM을 명령 조정하는 방법을 제안하거나, 검색기와 LLM을 함께 사전 훈련한 후 작업 데이터셋에서 몇 번의 샷 파인튜닝을 수행하는 방법을 제안
1. 고정된 수의 검색된 구절을 미리 추가하여 LLM을 명령 조정(Instruction Tuning)하는 방법:
Instruction Tuning이란 모델에게 주어진 특정 명령에 맞춰 답변을 더 잘하도록 모델을 조정하는 방법
이를 위해 최근 연구들은 검색된 관련 정보를 고정된 수로 입력에 미리 추가하는 방식으로 LLM을 조정하는 방식을 제안
핵심 아이디어
모델이 입력된 질문이나 명령에 답변할 때, 먼저 외부 데이터베이스에서 관련 있는 정보를 검색한 후, 검색된 구절을 입력과 함께 모델에 제공하는 방식
여기서 중요한 점은 검색된 구절의 수가 고정되어 있다는 것
즉, 매번 같은 수의 구절을 검색하여 모델의 입력으로 사용
예시:예를 들어, "미국의 주들은 어떻게 이름을 얻었나요?"라는 질문이 있을 때, LLM은 이 질문에 답하기 위해 3개의 관련 구절을 미리 검색하여 입력에 추가
검색된 구절은 예를 들어 다음과 같음
"캘리포니아는 스페인 소설에서 이름이 유래되었다.""텍사스는 원주민 부족의 이름에서 유래되었다.""조지아는 영국 왕 조지 2세의 이름을 따서 붙여졌다."
이렇게 검색된 구절들을 질문과 함께 모델에 입력으로 넣으면, 모델은 이 구절들을 참고하여 답변을 생성
장점: 이 방법은 검색된 정보를 항상 일정하게 제공하므로, 예측의 일관성을 유지할 수 있음
또한 검색된 정보를 통해 모델이 사실 기반의 답변을 생성할 가능성이 높아짐
단점: 검색된 구절이 항상 관련성이 있지 않을 수 있고, 구절의 수가 고정되어 있기 때문에 상황에 따라 부족하거나 과도한 정보를 제공할 수도 있음
2. 검색기와 LLM을 함께 사전 훈련한 후 작업 데이터셋에서 few-shot 파인튜닝을 수행하는 방법:
이 방법은 검색 모델과 LLM을 함께 사전 훈련하여 두 시스템이 서로 잘 협력하도록 만든 후, 실제 작업에서 few-shot fine-tuning을 통해 추가적인 미세 조정을 하는 방식
검색기와 LLM의 사전 훈련
이 방법에서는 검색기와 LLM이 같은 훈련 과정에서 함께 학습
즉, 언어 모델이 질문에 답변을 생성할 때, 그 과정에서 어떤 정보를 검색할지와 검색된 정보를 어떻게 활용할지를 동시에 학습
사전 훈련 중에, 검색기는 주어진 질문에 대해 관련 있는 정보를 검색하는 법을 배우고, LLM은 검색된 정보를 기반으로 적절한 답변을 생성하는 법을 배우게 됨
이 두 과정이 동시에 이루어져 두 모델이 상호 보완적으로 작동할 수 있도록 만듬
few-shot 파인튜닝
사전 훈련 후, 특정 작업에 대해 모델을 더 잘 맞추기 위해 few-shot fine-tuning을 수행
장점:검색기와 LLM이 동시에 학습되기 때문에, 모델이 더 효율적으로 검색된 정보를 활용할 수 있습니다.
few-shot 파인튜닝을 통해 작업별로 모델을 미세하게 조정할 수 있어, 다양한 작업에서의 성능이 개선될 수 있음
단점:검색기와 LLM을 동시에 훈련하려면 복잡한 훈련 과정이 필요함
few-shot 파인튜닝은 적은 양의 데이터로 수행되기 때문에, 충분한 성능 개선을 보장하지 않을 수 있음
이전 연구는 주로 처음에 한 번만 검색을 수행하지만, Jiang et al. (2023)은 독점 LLM을 기반으로 생성 중에 적응적으로 구절을 검색하는 방법을 제안하거나, Schick et al. (2023)은 명명된 개체를 위한 API 호출을 생성하도록 LLM을 훈련
그러나 이러한 접근법의 성능 향상은 종종 실행 시간 효율성의 저하, 무관한 맥락에 대한 견고성 저하, 및 인용 부족의 단점이 존재
우리는 다양한 명령을 따르는 질의에 대해 검색을 필요에 따라 사용할 수 있도록 학습시키는 방법을 제안하며, 반성 토큰을 통해 제어된 생성을 도입하여 생성 품질과 인용을 더욱 개선
비판과 함께하는 훈련 및 생성
RLHF을 통해 강화 학습으로 LLM을 훈련하는 것은 LLM을 인간의 선호도에 맞추는 데 효과적임이 입증
우리의 연구는 정보 검색과 생성에 대한 세밀한 비판을 다루고 있지만, 우리는 RLHF에 비해 훨씬 낮은 훈련 비용으로 비판 모델에서 반성 토큰이 추가된 작업 예제를 통해 목표 LM을 오프라인으로 훈련
LLM 생성을 안내하기 위해 제어 토큰을 사용하는 이전 연구와 비교하여, SELF-RAG는 반성 토큰을 사용하여 검색의 필요성을 결정하고 생성 품질을 자체 평가
SELF-RAG: LEARNING TO RETRIEVE, GENERATE AND CRITIQUE
SELF-RAG는 LLM의 원래 창의성과 다재다능성을 희생하지 않고, 검색과 Self-Reflect을 통해 LLM의 품질과 사실성을 향상시키는 프레임워크
End-to-end 훈련은 필요할 때 검색된 구절에 근거해 텍스트를 생성하고, 특수 토큰을 생성하는 법을 학습하여 출력을 비판하도록 LLM을 훈련시킴
이러한 Reflect-Token(Table 1 참조)은 검색의 필요성을 나타내거나 출력의 관련성, 지지 여부 또는 완전성을 확인
반면, 일반적인 RAG 접근법은 인용된 출처에서 완전한 지원을 보장하지 않고 무작위로 구절을 검색
PROBLEM FORMALIZATION AND OVERVIEW
형식적으로, 주어진 입력 x에 대해, 우리는 M을 훈련시켜 다중 구간 y = [y1, . . . , yT]로 구성된 텍스트 출력을 순차적으로 생성하도록 함
여기서 yt는 t번째 구간에 대한 토큰의 시퀀스를 나타냅니다. 생성된 토큰 yt에는 원래 어휘에서 가져온 텍스트뿐만 아니라 반성 토큰(Table 1 참조)이 포함됩니다.
1. 형식적인 문제 정의
- 입력 x: 입력으로 주어지는 데이터, 즉 사용자가 제공한 질문이나 요청을 의미
- 예시: 입력이 "미국 독립 전쟁은 언제 일어났나요?"일 수 있음
- 출력 y: 모델이 여러 구간으로 구성된 출력 텍스트를 생성
이 출력은 여러 부분으로 나뉘어 있으며, 각 부분은 y1, y2, ..., yT로 표시- 예시: 출력 텍스트는 모델이 순차적으로 생성하는 답변 구간들로 구성
예를 들어, "미국 독립 전쟁은 1775년부터 1783년까지 일어났습니다."는 한 구간으로 구성될 수 있지만, 더 복잡한 답변이라면 여러 구간으로 나뉠 수 있음
- 예시: 출력 텍스트는 모델이 순차적으로 생성하는 답변 구간들로 구성
- 구간 y_t: t번째 구간은 모델이 생성한 텍스트의 특정 부분을 나타냄
예를 들어, 첫 번째 구간(y1)은 첫 번째 문장을 의미할 수 있고, 두 번째 구간(y2)은 두 번째 문장을 의미- 예시: "미국 독립 전쟁은" (첫 번째 구간)과 "1775년부터 1783년까지 일어났습니다." (두 번째 구간).
- 생성된 토큰 yt: 구간 yt에는 기존 어휘에서 가져온 일반적인 텍스트뿐만 아니라, Reflective Tokens도 포함
즉, 모델은 일반적인 텍스트를 생성하면서, 그와 동시에 생성된 텍스트를 평가하는 반성 토큰을 추가로 생성
2. Reflective Tokens
- 반성 토큰은 모델이 각 구간에서 자체적으로 평가하고, 평가 결과를 기록하는 토큰
이 토큰들은 텍스트의 정확성, 관련성, 추가적인 검색 필요성을 나타냄 - 반성 토큰은 기본적으로 모델이 자체적으로 생성하는 메타데이터로, 해당 구간이 잘 생성되었는지, 추가적으로 검색이 필요한지, 또는 텍스트의 품질을 개선할 필요가 있는지를 나타냄
3. 반성 토큰이 포함된 생성 과정 예시
입력:
- 입력 질문: "미국 독립 전쟁은 언제 일어났나요?"
출력 y:
- 첫 번째 구간(y1):
- 텍스트: "미국 독립 전쟁은 1775년에 시작되었습니다."
- 반성 토큰:
- 정확성(Accuracy): 1 (정확함) – 이 문장은 사실에 기반하고 있음.
- 추가 검색 필요성(Need for Search): 0 (검색 불필요) – 더 많은 정보가 필요하지 않음.
- 품질(Quality): 0.9 – 문법적으로 적합하고 정보가 명확함.
- 두 번째 구간(y2):
- 텍스트: "전쟁은 1783년에 끝났습니다."
- 반성 토큰:
- 정확성(Accuracy): 1 (정확함) – 이 정보도 정확함.
- 추가 검색 필요성(Need for Search): 0 (검색 불필요) – 추가 검색이 필요하지 않음.
- 품질(Quality): 1 – 문장이 간결하고 정보가 명확함.
Inference overview.
각 $x$와 이전 생성물 $y<_t$에 대해 모델은 검색의 유용성을 평가하기 위해 검색 토큰을 해독함
검색이 필요하지 않다면 모델은 표준 LM처럼 다음 출력 구간을 예측
검색이 필요하다면, 모델은 검색된 구절의 관련성을 평가하는 비판 토큰, 다음 응답 구간, 그리고 응답 구간의 정보가 구절에 의해 지원되는지를 평가하는 비판 토큰을 생성
마지막으로, 새로운 비판 토큰이 응답의 전체적인 유용성을 평가
각 구간을 생성하기 위해, SELF-RAG는 여러 구절을 병렬로 처리하며, 자체 생성된 반성 토큰을 사용하여 유연한 제약(Section 3.3) 또는 강제적인 제어를 적용
1. 검색 토큰(Search Token)이란 무엇인가?
검색 토큰은 SELF-RAG 모델이 검색의 필요성을 평가하고 추가적인 검색을 실행할지 여부를 결정하는 데 사용되는 토큰
모델이 입력된 질문과 이전에 생성된 텍스트를 바탕으로 검색이 필요한지를 판단하는 데 중요한 역할을 함
- 검색 토큰의 역할:
- 질문과 이전 구간(이전에 생성된 텍스트)을 바탕으로 추가적인 검색이 필요하다고 판단되면, 검색 토큰이 생성
- 이 검색 토큰이 모델에게 검색을 요청하며, 검색된 구절들이 새로운 답변에 반영
예시:
- 질문: "미국 독립 전쟁의 원인은 무엇인가요?"
- 모델이 이전 구간에서 "미국 독립 전쟁은 영국과 미국 식민지 사이에서 발생했습니다."라는 텍스트를 생성했다고 가정
- 하지만 이 텍스트는 원인에 대한 충분한 정보를 제공하지 않으므로, 모델은 검색 토큰을 생성하여 추가적인 정보가 필요하다고 판단하고, 검색을 요청
2. 검색 토큰과 반성 토큰이 하는 일이 동일한가?
아닙니다, 검색 토큰과 반성 토큰의 역할은 다름
- 검색 토큰은 검색의 필요성을 평가하는 데 사용
모델이 입력된 질문과 이전에 생성된 답변을 참고하여, 추가적인 검색이 필요한지를 판단하고, 필요한 경우 검색을 요청하는 역할을 함 - Reflective Token은 구체적인 답변의 품질을 평가하고, 각 구간에서 생성된 텍스트가 정확성, 관련성, 추가적인 검색 필요성 등을 스스로 평가하는 역할
- 반성 토큰은 검색된 구절을 반영하여 모델이 생성한 답변이 충분히 정확하고 적절한지를 평가하는 데 사용
- 구간별로 생성된 텍스트가 제대로 생성되었는지를 스스로 평가하고, 필요시 수정하거나 보완할 수 있도록 도와줌
3. 비판 토큰(Critic Token)은 모델이 판단해서 생성되는 것인가?
비판 토큰은 모델이 생성된 답변을 평가하기 위해 스스로 판단하여 생성
비판 토큰은 검색된 구절과 생성된 텍스트를 바탕으로, 답변이 충분히 적절한지를 평가하고, 답변의 정확성, 관련성, 추가적인 지원 여부 등을 판단
- 비판 토큰의 역할:
- 모델이 검색된 구절이 답변에 충분히 적합한지 또는 생성된 답변이 질문에 얼마나 관련성이 있는지를 평가할 때, 비판 토큰을 생성
- 각 구간이 생성될 때마다, 해당 구간이 검색된 구절과 얼마나 일치하는지, 사실적이고 정확한지 등을 판단하여 비판 토큰이 생성
- 비판 토큰은 또한 전체 답변의 유용성을 평가하고, 이를 바탕으로 답변을 개선하거나, 잘못된 구간을 수정할 수 있음
예시:
- 모델이 "미국 식민지 주민들은 영국의 높은 세금과 법적 통제에 반발했습니다."라는 구간을 생성했다고 가정해 봅시다.
- 비판 토큰은 이 구간이 검색된 구절과 일치하고, 정확한 정보를 담고 있는지 평가합니다.
- 만약 구간이 충분히 정확하지 않다면, 비판 토큰이 수정을 요구하거나, 추가 검색이 필요하다고 판단할 수 있습니다.

기본 개념 정리:
- M: 생성 모델(Generator LM), 즉 질문에 대한 답변을 생성하는 언어 모델.
- R: 검색기(Retriever), 입력된 질문에 대해 관련 문서나 구절을 검색하는 모델.
- d: 검색된 구절(passage).
- x: 입력 질문.
- $y<_t$: t번째 구간까지 생성된 답변.
1. 입력 (Step 1):
- 입력 데이터는 질문(x)와 이전에 생성된 답변($y<_t)
모델은 이 입력을 바탕으로 다음 구간 $y_t$을 생성
2. 검색 여부 판단 (Step 2):
- M 모델은 질문과 이전에 생성된 답변을 바탕으로 검색이 필요한지를 예측
- 즉, Retrieve 토큰을 예측하여 검색을 할지 여부를 결정
만약 검색이 필요하다고 판단되면:
- Step 3~7에서 검색 및 평가가 이루어집니다.
만약 검색이 필요 없다고 판단되면:
- Step 8~10에서 그냥 답변을 생성하고, 검색된 정보를 사용하지 않습니다.
3. 검색이 필요한 경우 (Step 3~7):
Step 4: 검색 수행:
- R 모델을 사용하여, 질문(x)와 이전 구간($y_(t-1)$)을 바탕으로 관련된 구절들(D)을 검색
이때, 대규모 텍스트 데이터에서 검색
Step 5: 관련성 예측 (IsREL):
- M 모델은 질문(x), 검색된 구절(d), 그리고 이전에 생성된 구간$(y_t)$을 바탕으로 IsREL을 예측
IsREL은 이 구절이 질문에 얼마나 관련이 있는지를 평가하는 역할
Step 6: 지원 여부 및 사용성 예측 (IsSUP, IsUSE):
- IsSUP: 이 구절이 답변의 근거로 사용될 수 있는지(support).
- IsUSE: 이 구절이 답변으로 사용될 가치가 있는지(usefulness).
- M 모델은 IsSUP과 IsUSE를 예측
즉, 이 구절이 답변에 얼마나 중요한 정보를 제공하는지 평가
Step 7: 랭킹:
- IsREL, IsSUP, IsUSE 세 가지 점수를 바탕으로 다음 구간 $y_t$을 생성하는 데 사용할 정보를 결정
이때, 가장 적절한 구절을 선택
4. 검색이 필요 없을 경우 (Step 8~10):
Step 9: 구간 생성:
- 검색이 필요 없다고 판단된 경우, M 모델은 그냥 질문(x)과 이전에 생성된 답변을 바탕으로 다음 구간$(y_t)$을 예측하여 생성
Step 10: IsUSE 평가:
- 생성된 구간이 IsUSE 기준을 충족하는지 확인합니다. 즉, 이 구간이 답변으로서 얼마나 유용한지 평가
5. 평가 및 비판 과정 (Critique, Step 5, 6, 10):
- Critique(비판): 생성된 구간이 검색된 구절과 질문에 얼마나 잘 맞는지 평가하는 단계
- IsREL, IsSUP, IsUSE는 모두 Critique(비판 토큰)에 의해 평가되며, 이를 통해 답변이 적절한지, 더 나은 정보가 필요한지를 판단
Training overview
SELF-RAG는 확장된 모델 어휘(즉, 원래 어휘와 반성 토큰)에서 다음 토큰 예측으로 반성 토큰을 통합하여 임의의 LM이 텍스트를 생성할 수 있도록 함
구체적으로, 검색 모델 R이 검색한 구절과 비판 모델 C가 예측한 반성 토큰이 섞인 큐레이션된 코퍼스를 사용하여 생성 모델 M을 훈련
C를 훈련시켜 검색된 구절과 주어진 작업 출력의 품질을 평가하기 위해 반성 토큰을 생성
비판 모델을 사용하여, 훈련 코퍼스를 업데이트하여 반성 토큰을 작업 출력에 오프라인으로 삽입
이후, 최종 생성 모델 M을 전통적인 LM 목표를 사용하여 훈련하여, 추론 시 비판에 의존하지 않고도 M이 자체적으로 반성 토큰을 생성할 수 있도록 함
SELF-RAG 훈련
비판 모델 훈련
비판 모델을 위한 데이터 수집. 각 구간에 대한 반성 토큰의 수동 주석은 비용이 많이 듬.
GPT-4와 같은 최첨단 LLM은 이러한 피드백을 효과적으로 생성하는 데 사용할 수 있음.
그러나 이러한 독점 LLM에 의존하는 것은 API 비용을 증가시키고 재현성을 떨어뜨릴 수 있음.
우리의 방법은 훈련 데이터셋에서 각 입력-출력 인스턴스에 대한 다수의 구절과 구간에 대해 세밀한 평가가 필요하므로, SELF-RAG 훈련 데이터를 생성하기 위해 요구되는 평가 수가 기하급수적으로 증가
이러한 문제를 극복하기 위해, 우리는 GPT-4를 사용해 반성 토큰을 생성하도록 지시하여 감독된 데이터를 생성한 후, 그 지식을 내부 C에 증류
각 반성 토큰 그룹에 대해, 우리는 원래 훈련 데이터에서 무작위로 인스턴스를 샘플링
{Xsample, Y sample} ∼ {X,Y}. 반성 토큰 그룹마다 정의와 입력이 다르므로, 이에 맞는 지시문 프롬프트를 사용
예를 들어, 우리는 GPT-4에 특정 유형의 지시문을 주고 ("주어진 지시문을 바탕으로 외부 문서를 찾는 것이 더 나은 응답을 생성하는 데 도움이 되는지 판단하십시오.") 원래 작업 입력 x와 출력 y를 몇 가지 예시와 함께 제공하여 적절한 반성 토큰을 텍스트로 예측하게 함
p(r|I, x, y).
수동 평가 결과, GPT-4 반성 토큰 예측은 인간 평가와 높은 일치를 보임
각 유형에 대해 4천에서 2만 건의 감독 데이터를 수집하여 C의 훈련 데이터로 통합
전체 과정 설명
비판 모델(C)의 역할
비판 모델(C)은 반성 토큰을 생성하는 모델
반성 토큰은 모델이 생성한 답변의 품질을 평가하거나 개선하는 데 사용
이 비판 모델은 반성 토큰을 학습하고, 구간별 답변이 질문과 얼마나 잘 맞는지 또는 검색된 구절과 일치하는지를 평가하는 역할을 함
데이터 수집의 어려움
각 구간에 대해 반성 토큰을 수동으로 주석을 다는 것은 매우 비용이 많이 든다는 문제가 있음
각 구간에서 수동으로 반성 토큰을 만드는 것은 많은 시간과 비용이 소요
게다가, SELF-RAG의 훈련 데이터는 각 구간과 그에 관련된 여러 구절을 평가해야 하므로 평가해야 할 데이터의 양이 기하급수적으로 증가
GPT-4 활용
이러한 비용 문제를 해결하기 위해, GPT-4와 같은 대형 언어 모델을 사용하여 반성 토큰을 자동으로 생성하도록 지시
GPT-4는 최첨단 LLM이기 때문에, 사람처럼 구간을 평가하고 반성 토큰을 생성할 수 있음
이를 통해 비판 모델(C)을 훈련시킬 감독 데이터를 대규모로 수집할 수 있음
반성 토큰 생성 예시
GPT-4는 특정 지시문(prompt)을 받으면, 반성 토큰을 생성할 수 있음
예를 들어, GPT-4에 "주어진 질문과 생성된 답변을 바탕으로, 외부 문서를 찾는 것이 더 나은 답변을 생성하는 데 도움이 되는지 판단하십시오."라는 지시문을 제공하고, 이에 대한 입력 데이터(x)와 출력 데이터(y)를 함께 제공
GPT-4는 이 지시문을 바탕으로 답변의 품질을 평가하고, 필요한 반성 토큰을 예측
반성 토큰은 "추가 검색이 필요함", "답변이 충분함" 등과 같이 모델이 구간별로 어떻게 대응해야 하는지를 나타내는 정보
GPT-4를 활용한 반성 토큰 생성 예시:
입력 데이터(x): "미국 독립 전쟁의 원인은 무엇인가요?"
출력 데이터(y): "미국 독립 전쟁은 1775년에 시작되었습니다."
지시문(prompt): "주어진 질문과 생성된 답변을 바탕으로, 외부 문서를 찾는 것이 더 나은 답변을 생성하는 데 도움이 되는지 판단하십시오."
GPT-4는 이 입력과 출력 데이터를 바탕으로 반성 토큰을 생성
반성 토큰 예시: "추가 검색 필요. 원인에 대한 정보가 부족함."
비판 모델(C) 훈련
GPT-4가 생성한 반성 토큰을 사용하여 비판 모델(C)을 훈련
GPT-4가 생성한 반성 토큰이 포함된 데이터를 통해 비판 모델(C)이 반성 토큰을 생성하는 방법을 학습하게 됨
이러한 데이터를 수천에서 수만 건 수집하여 비판 모델의 훈련 데이터로 통합
비판 학습
우리가 Dcritic 훈련 데이터를 수집한 후, 우리는 사전 훈련된 LM으로 C를 초기화하고, Dcritic에 대한 표준 조건부 언어 모델링 목표를 사용해 훈련합니다. (Eq. 1)

이미지에 있는 수식을 설명드리겠습니다. 이 수식은 **비판 모델(Critic Model, C)**을 훈련하기 위한 목적 함수를 나타냅니다. 수식의 세부 항목들은 다음과 같은 의미를 가집니다: - **max\_C**: 이 부분은 비판 모델 \( C \)를 최적화하는 것을 의미합니다. 즉, 모델 \( C \)가 가장 높은 성능을 발휘하도록 파라미터를 조정하는 과정을 나타냅니다. - **\(\mathbb{E}_{((x,y),r) \sim \mathcal{D}_{\text{critic}}}\)**: 기대값(Expectation)을 계산하는 것을 의미합니다. 이 때 기대값은 비판 데이터셋 \( \mathcal{D}_{\text{critic}} \)에서 샘플링된 데이터 쌍 \((x, y)\)와 반성 토큰 \( r \)에 대한 것입니다. - **log \( p_C(r|x, y) \)**: 비판 모델 \( C \)가 주어진 입력 \( x \)와 출력 \( y \)를 기반으로 반성 토큰 \( r \)을 생성할 확률의 로그 값입니다. 이 로그 확률은 모델이 이 확률을 최대화하도록 학습하는 데 사용됩니다. - **r for reflection tokens**: 이 부분은 특정 반성 토큰 \( r \)에 대한 조건부 확률을 나타내며, 모델이 이 토큰을 올바르게 예측하는 것을 목표로 합니다. 이 함수의 목적은 비판 모델 \( C \)가 주어진 입력 \( x \)와 출력 \( y \)를 기반으로 반성 토큰 \( r \)을 정확하게 예측하도록 훈련하는 것입니다. 최적화 과정에서는 모델 \( C \)가 반성 토큰을 예측하는 데 있어 최대한 높은 정확도를 가지도록 로그 가능도를 최대화하게 됩니다.
비록 초기 모델은 사전 훈련된 LM일 수 있지만, 우리는 C 초기화를 위해 생성 모델과 동일한 Llama 2-7B(Touvron et al., 2023)를 사용합니다. 비판 모델은 대부분의 반성 토큰 카테고리에서 GPT-4 기반 예측과 90% 이상의 일치를 달성합니다(부록 Table 4).
다시한번 정리
1. 학습(Training) 과정에서:
- 반성 토큰을 **비판 모델(C)**이 학습하는 과정입니다.
- **비판 모델(C)**은 반성 토큰을 생성하는 역할을 하며, 이 과정에서 GPT-4와 같은 대형 언어 모델을 통해 반성 토큰이 생성된 데이터를 학습합니다.
- 반성 토큰은 답변의 품질을 평가하고, 답변이 질문과 검색된 구절에 맞는지를 나타내는 평가 요소입니다.
- 학습 데이터에는 반성 토큰이 포함된 코퍼스가 있으며, **비판 모델(C)**은 이 데이터를 학습하여 답변의 품질을 평가하는 법을 배웁니다.
학습 과정 정리:
- GPT-4가 반성 토큰을 생성하여 학습 데이터에 반영.
- **비판 모델(C)**은 이 반성 토큰이 포함된 학습 데이터를 사용해 학습.
- **비판 모델(C)**은 답변의 품질을 평가하고, 이를 통해 반성 토큰을 생성하는 법을 학습.
2. 추론(Inference) 과정에서:
- 추론 시에는 반성 토큰을 통해 구간별로 답변을 생성하고, **비판 모델(C)**이 이 반성 토큰으로 생성된 답변들을 평가하는 역할을 합니다.
- 각 구간에서 생성된 답변이 반성 토큰을 기반으로 평가되고, **비판 모델(C)**은 최종적으로 구간별로 생성된 답변들이 질문과 검색된 정보에 얼마나 적합한지를 평가합니다.
- 즉, 반성 토큰이 사용된 여러 답변들을 비판 모델이 평가하여, 가장 적절한 최종 답변을 선택하는 역할을 합니다.
추론 과정 정리:
- 반성 토큰을 사용하여 구간별로 답변을 생성.
- **비판 모델(C)**은 반성 토큰을 기반으로 생성된 여러 답변을 평가.
- 가장 적절한 답변을 **비판 모델(C)**이 선택하고 최종적으로 답변으로 출력.

#### 3.2.2 생성 모델 훈련
생성 모델을 위한 데이터 수집. 주어진 입력-출력 쌍(x, y)에 대해, 우리는 검색 모델과 비판 모델을 사용해 원래 출력을 보강하여 SELF-RAG 추론 시 프로세스를 정밀하게 모방한 감독 데이터를 생성합니다(Section 3.1). 각 구간 yt ∈ y에 대해, 우리는 C를 실행하여 추가 구절이 생성을 개선하는 데 도움이 될지 평가합니다. 검색이 필요하다면, 검색 특수 토큰 Retrieve = Yes가 추가되고, R이 상위 K개의 구절 D를 검색합니다. 각 구절에 대해, C는 구절이 관련 있는지 여부를 평가하고 ISREL을 예측합니다. 구절이 관련 있다고 평가되면, C는 구절이 모델 생성물을 지원하는지 여부를 평가하고 ISSUP을 예측합니다. 비판 토큰 ISREL과 ISSUP는 검색된 구절 또는 생성물 뒤에 추가됩니다. 출력의 마지막 부분 y (또는 yT)에서 C는 전체 유용성 토큰 ISUSE를 예측하고, 반성 토큰과 원래 입력 쌍이 포함된 보강된 출력을 Dgen에 추가합니다. 예시 훈련 데이터는 그림 2에서 확인할 수 있습니다.
#### 생성 모델 학습
우리는 반성 토큰이 추가된 큐레이션된 코퍼스 Dgen에서 M을 훈련하여 생성 모델 M을 훈련합니다(Eq. 2).
비판 모델 훈련(Eq. 1)과 달리, M은 목표 출력과 반성 토큰을 예측하는 법을 배웁니다. 훈련 중에는 손실 계산을 위해 검색된 텍스트 덩어리(<p>와 </p>로 둘러싸인 텍스트)를 마스킹하고, 원래 어휘 V를 확장하여 반성 토큰(Critique, Retrieve)을 추가합니다.

이 수식은 **생성 모델(Generator Model, \( M \))**을 훈련하기 위한 목적 함수를 나타냅니다. 수식의 각 요소는 다음과 같은 의미를 가지고 있습니다: - **max\(_M\)**: 이 부분은 생성 모델 \( M \)을 최적화하는 것을 의미합니다. 즉, 모델 \( M \)이 최상의 성능을 발휘하도록 파라미터를 조정하는 과정을 나타냅니다. - **\(\mathbb{E}_{(x, y, r) \sim \mathcal{D}_{\text{gen}}}\)**: 기대값(Expectation)을 계산하는 것을 의미합니다. 이 기대값은 생성 데이터셋 \( \mathcal{D}_{\text{gen}} \)에서 샘플링된 입력 \( x \), 출력 \( y \), 및 반성 토큰 \( r \)에 대한 것입니다. - **log \( p_M(y, r | x) \)**: 생성 모델 \( M \)이 주어진 입력 \( x \)를 바탕으로 출력 \( y \)와 반성 토큰 \( r \)을 생성할 확률의 로그 값입니다. 이 로그 확률은 모델이 이 확률을 최대화하도록 학습하는 데 사용됩니다. 이 함수의 목적은 생성 모델 \( M \)이 주어진 입력 \( x \)를 기반으로 출력 \( y \)와 반성 토큰 \( r \)을 정확하게 예측하도록 훈련하는 것입니다. 최적화 과정에서는 모델 \( M \)이 출력과 반성 토큰을 예측하는 데 있어 최대한 높은 정확도를 가지도록 로그 가능도를 최대화하게 됩니다. 이 수식은 생성 모델이 입력을 바탕으로 적절한 출력을 생성하고, 동시에 반성 토큰을 통해 생성 과정을 개선하도록 훈련하는 것을 목표로 하고 있습니다.
#### 비판을 통한 학습에 관한 이전 연구와의 연결
최근 연구는 훈련 중에 추가적인 비판(피드백)을 포함시킵니다. 예를 들어, RLHF(Ouyang et al., 2022)를 통한 PPO. PPO는 훈련 중에 별도의 보상 모델에 의존하는 반면, 우리는 비판을 오프라인으로 계산하여 이를
훈련 코퍼스에 직접 삽입하고, 생성 LM은 표준 LM 목표로 훈련됩니다. 이는 PPO에 비해 훈련 비용을 크게 줄입니다. 우리의 연구는 제어 토큰을 통합하여 생성을 제어하는 이전 연구(Keskar et al., 2019; Lu et al., 2022; Korbak et al., 2023)와도 관련이 있습니다. 우리의 SELF-RAG는 각 생성 구간 후 자신의 예측을 평가하기 위해 특수 토큰을 생성하도록 학습하여, 추론 시 유연한 재랭킹 메커니즘 또는 강제 제약을 사용할 수 있게 합니다(다음 섹션에서 논의됨).
### 3.3 SELF-RAG 추론
자기 평가를 위해 반성 토큰을 생성하는 것은 SELF-RAG가 추론 단계에서 제어 가능하게 하여 다양한 작업 요구에 맞춰 행동을 조정할 수 있게 합니다. 사실 정확성이 요구되는 작업(Min et al., 2023)을 위해, 우리는 모델이 출력이 이용 가능한 증거와 긴밀하게 일치하도록 구절을 더 자주 검색하기를 원합니다. 반대로, 개인 경험 에세이 작성과 같은 더 개방된 작업에서는 검색 빈도를 줄이고 전반적인 창의성 또는 유용성 점수를 우선시하는 데 중점을 둡니다. 이 섹션에서는 추론 과정에서 이러한 다양한 목표를 충족시키기 위한 제어 방법을 설명합니다.
#### 임계값을 활용한 적응적 검색
SELF-RAG는 검색 토큰을 예측함으로써 언제 텍스트 구절을 검색할지 동적으로 결정합니다. 대안적으로, 우리의 프레임워크는 임계값을 설정할 수 있습니다. 구체적으로, Retrieve = Yes 토큰의 생성 확률이 모든 출력 토큰에서 Retrieve로 정규화된 값을 초과할 경우 검색을 트리거합니다(자세한 내용은 부록 Section A.4 참조).
#### 비판 토큰을 활용한 트리 디코딩
각 구간 단계 t에서, 검색이 필요할 때, 단단한 또는 유연한 조건에 따라 R이 K개의 구절을 검색하고, 생성 모델 M이 각 구절을 병렬로 처리하여 K개의 다른 후속 후보를 출력합니다. 우리는 각 타임스탬프 t에서 상위-B 구간 후속을 얻기 위해 세그먼트 수준의 빔 서치(빔 크기=B)를 수행하고, 생성 종료 시 최상의 시퀀스를 반환합니다. 구절 d에 대한 각 구간 yt의 점수는 비판 점수 S로 업데이트되며, 이는 각 비판 토큰 유형의 정규화된 확률의 가중 선형 합입니다.
각 비판 토큰 그룹 G(예: ISREL)에 대해, 해당 타임스탬프 t에서의 점수를 sGt로 표시하고, 다음과 같이 구간 점수를 계산합니다:

이 수식은 **SELF-RAG 모델**에서 특정 구간 \( y_t \)의 점수를 계산하는 방법을 설명합니다. 이 점수는 모델이 생성한 텍스트 구간이 얼마나 잘 생성되었는지를 평가하기 위해 사용됩니다. ### 수식의 각 구성 요소 설명 1. **\( f(y_t, d, \text{Critique}) \)**: - \( y_t \): t번째 시점에서 생성된 텍스트 구간. - \( d \): 참조로 사용하는 검색된 문서. - \(\text{Critique}\): 비판(평가) 토큰. 이 함수 \( f \)는 주어진 텍스트 구간 \( y_t \)와 검색된 문서 \( d \), 그리고 비판 토큰을 기반으로 텍스트 구간의 점수를 계산합니다. 2. **\( p(y_t | x, d, y_{<t}) \)**: - 모델이 이전의 입력 \( x \)와 검색된 문서 \( d \), 그리고 이전 구간들 \( y_{<t} \)에 기반하여 \( y_t \)를 생성할 확률입니다. 3. **\( S(\text{Critique}) \)**: - 비판 토큰을 기반으로 계산된 점수입니다. \( S(\text{Critique}) \)는 다양한 비판 토큰의 가중 합으로 구성됩니다. 4. **\( S(\text{Critique}) = \sum_{G \in \mathcal{G}} w^G s_t^G \)**: - \( \mathcal{G} \): 비판 토큰의 그룹을 나타내며, 여기에는 \( \text{IsREL} \) (관련성), \( \text{IsSUP} \) (지원 여부), \( \text{IsUSE} \) (유용성)이 포함됩니다. - \( w^G \): 각 비판 토큰 그룹 \( G \)에 대한 가중치입니다. - \( s_t^G \): t번째 시점에서 비판 토큰 그룹 \( G \)에 대한 점수입니다. ### 요약 이 수식은 특정 시점에서 생성된 텍스트 구간 \( y_t \)에 대해, 검색된 문서 \( d \)와 비판 토큰을 고려하여 그 구간의 품질을 평가하는 점수를 계산하는 방법을 보여줍니다. 이 점수는 모델이 텍스트를 생성할 때, 단순히 텍스트만 생성하는 것이 아니라 그 생성된 텍스트가 얼마나 신뢰할 수 있고, 관련성이 있으며, 유용한지를 평가하는 데 사용됩니다.
여기서 sGt는 비판 토큰 유형 G에 대한 가장 바람직한 반성 토큰(e.g., ISREL=Relevant)의 생성 확률을 나타내며, NG는 G에 대한 가능한 다양한 값을 나타내는 토큰의 수를 나타냅니다. Eq. 4에서의 가중치 wG는 테스트 시 사용자 정의된 동작을 가능하게 하기 위해 추론 시 조정될 수 있는 하이퍼파라미터입니다. 예를 들어, 출력 y가 대부분 증거에 의해 지원되도록 보장하려면, ISSUP 점수에 대한 가중치 항목을 더 높게 설정할 수 있으며, 다른 측면에 대한 가중치는 상대적으로 낮출 수 있습니다. 대안적으로, 모델이 바람직하지 않은 토큰(e.g., ISSUP=No support)을 생성할 때 세그먼트 후속을 필터링하여 디코딩 중에 강제 제약을 더할 수도 있습니다.
실험
작업과 데이터셋
SELF-RAG와 다양한 기준 모델들을 평가하기 위해 여러 하위 작업에서 실험을 수행하였으며, 전반적인 정확성, 사실성, 유창성을 평가하기 위한 지표로 출력을 종합적으로 평가
이러한 실험에서는 Few-shot 시연 없이 작업을 설명하는 지시문을 제공하는 Zero-shot 평가를 수행
Closed-set tasks
공공 건강에 대한 사실 검증 데이터셋과 과학 시험에서 생성된 다중 선택 추론 데이터셋 등 두 개의 데이터셋을 포함
정확도를 평가 지표로 사용하여 테스트 세트의 결과를 보고
두 데이터셋 모두에서 목표 클래스의 답변 확률을 집계
Short-form generations tasks
두 개의 개방형 질문 응답 데이터셋, PopQA와 TriviaQA-unfiltered가 포함되며, 시스템은 사실적 지식에 대한 임의의 질문에 답해야 함
PopQA의 경우, 월간 위키피디아 페이지 조회수가 100회 미만인 1,399개의 희귀 엔티티 쿼리로 구성된 롱테일 서브셋을 사용
TriviaQA-unfiltered (open) 테스트 세트는 공개적으로 사용 가능하지 않기 때문에, 이전 연구의 검증 및 테스트 분할을 따르며, 11,313개의 테스트 쿼리를 평가에 사용
Mallen et al. (2023); Schick et al. (2023)의 방식에 따라, 엄격한 일치가 아닌 모델 생성물에 정답이 포함되어 있는지를 기준으로 성능을 평가
Long-form generation tasks
전기 생성 작업과 장문 QA 작업 ALCE-ASQA가 포함
전기 생성 평가에는 FactScore 를 사용하며, ASQA 평가에는 정답성(str-em), MAUVE 기반 유창성, 인용 정확도와 재현율의 공식 지표를 사용
기준 모델
**검색을 사용하지 않는 기준 모델**: 우리는 강력한 공개적으로 사용 가능한 사전 학습된 LLMs, Llama27B, 13B(Touvron et al., 2023), 명령 조정된 모델들, Alpaca7B, 13B(Dubois et al., 2023) (Llama2 기반의 복제), 그리고 개인 데이터를 사용해 훈련 및 강화된 모델들인 ChatGPT (Ouyang et al., 2022)와 Llama2-chat13B를 평가합니다. 명령 조정된 LLMs의 경우, 공개적으로 사용 가능한 경우 훈련 시 사용된 공식 시스템 프롬프트 또는 명령 형식을 사용합니다. 우리는 또한 CoVE65B (Dhuliawala et al., 2023)와 같은 최근 연구와 비교하며, 이는 LLM 생성물의 사실성을 개선하기 위해 반복적인 프롬프트 엔지니어링을 도입합니다.
**검색을 사용하는 기준 모델**: 우리는 테스트 시 또는 훈련 중 검색을 사용한 모델을 평가합니다. 첫 번째 범주에는 표준 RAG 기준 모델들이 포함되며, 여기서 LM (Llama2, Alpaca)은 검색된 문서들로 사전 준비된 쿼리를 바탕으로 출력을 생성합니다. 이는 우리 시스템에서와 동일한 검색기를 사용합니다. 또한 Llama2-FT가 포함되며, 이는 반성 토큰이나 검색된 구절 없이 우리가 사용한 모든 훈련 데이터로 Llama2를 파인튜닝한 것입니다. 우리는 또한 개인 데이터를 사용해 훈련된 LMs로 검색이 추가된 기준 모델들의 결과를 보고합니다: Ret-ChatGPT와 Ret-Llama2-chat, 이는 위와 동일한 보강 기법을 사용하며, InstructGPT 기반의 프로덕션 검색 시스템인 perplexity.ai도 포함됩니다. 두 번째 범주는 검색된 텍스트 구절로 훈련된 동시적 방법들을 포함합니다. 예를 들어, SAIL (Luo et al., 2023)은 상위 검색된 문서를 명령 앞에 삽입하여 Alpaca 명령 조정 데이터에서 LM을 조정하는 방법을 사용하고, Toolformer (Schick et al., 2023)는 API 호출(예: 위키피디아 API)로 LM을 사전 훈련하는 방법입니다.
#### 4.3 실험 설정
**훈련 데이터 및 설정**: 우리의 훈련 데이터는 다양한 명령을 따르는 입력-출력 쌍으로 구성되어 있습니다. 특히, 우리는 Open-Instruct에서 처리된 데이터(Wang et al., 2023)와 지식 집약적 데이터셋(Petroni et al., 2021; Stelmakh et al., 2022; Mihaylov et al., 2018)에서 인스턴스를 샘플링합니다. 총 150,000개의 명령-출력 쌍을 사용합니다. 우리는 Llama2 7B와 13B(Touvron et al., 2023)를 생성 기본 LM으로 사용하며, Llama2 7B를 기본 비판 LM으로 사용합니다. 검색 모델 R의 경우, 기본적으로 Contriever-MS MARCO(Izacard et al., 2022a)를 사용하며, 각 입력에 대해 최대 10개의 문서를 검색합니다. 추가 훈련 세부사항은 부록 Section B.1에 나와 있습니다.
**추론 설정**: 기본 구성으로, 우리는 가중치 항목 ISREL, ISSUP, ISUSE 값을 각각 1.0, 1.0, 0.5로 설정합니다. 빈번한 검색을 장려하기 위해 대부분의 작업에 대해 검색 임계값을 0.2로 설정하며, 인용 요건으로 인해 ALCE (Gao et al., 2023)에서는 0으로 설정합니다. 우리는 vllm (Kwon et al., 2023)을 사용해 추론 속도를 높입니다. 각 구간 수준에서 빔 너비 2를 채택합니다. 토큰 수준 생성에서는 탐욕스러운 디코딩을 사용합니다. 기본적으로, 우리는 Contriever-MS MARCO (Izacard et al., 2022a)에서 상위 5개 문서를 사용합니다. 전기 및 개방형 QA의 경우, 추가적으로 웹 검색 엔진이 검색한 상위 5개 문서를 사용합니다(Luo et al., 2023). ASQA의 경우, 공정한 비교를 위해 GTR-XXL (Ni et al., 2022)이 제공한 상위 5개 문서를 모든 기준 모델에 걸쳐 사용합니다.
### 5. 결과 및 분석
#### 5.1 주요 결과
**검색 없이 기준 모델들과의 비교**: 표 2 (상단)는 검색이 없는 기준 모델을 제시합니다. 우리 SELF-RAG(하단 두 행)는 모든 작업에서 감독 학습된 파인튜닝 LLM을 크게 능가하며, PubHealth, PopQA, 전기 생성, 그리고 ASQA(Rouge 및 MAUVE)에서 ChatGPT보다도 더 우수한 성능을 보입니다. 또한, 우리의 접근법은 정교한 프롬프트 엔지니어링을 사용하는 동시적 방법보다도 훨씬 뛰어난 성능을 보입니다. 특히, 전기 생성 작업에서 우리의 7B와 13B 모델은 Llama265B를 반복적으로 프롬프트로 수정하는 CoVE(Dhuliawala et al., 2023)보다 우수한 성과를 거두었습니다.
**검색을 사용하는 기준 모델들과의 비교**: 표 2 (하단)에 나와 있듯이, 우리 SELF-RAG는 기존의 RAG를 여러 작업에서 능가하며, 모든 작업에서 비독점적 LM 기반 모델 중 최고 성능을 기록했습니다. 검색을 사용하는 강력한 명령 조정 LLM들(예: Llama2-chat, Alpaca)은 비검색 기준 모델들보다 큰 성능 향상을 보입니다. 그러나 이러한 기준 모델들은 검색된 구절의 하위 문자열을 단순히 복사하거나 추출할 수 없는 작업에서는 제한된 해결책을 제공합니다. PubHealth와 ARC-Challenge에서는, 검색을 사용하는 기준 모델들이 비검색 대비 성능을 눈에 띄게 향상시키지 못했습니다. 또한, 대부분의 검색을 사용하는 기준 모델들이 인용 정확성을 향상시키는 데 어려움을 겪는 것을 관찰했습니다. ASQA에서는, 우리의 모델이 모든 모델 중 ChatGPT를 제외한 모델들보다 훨씬 높은 인용 정밀도와 재현율을 보여주었습니다. Gao et al. (2023)은 ChatGPT가 이 특정 작업에서 일관되게 우수한 효과를 발휘하며, 더 작은 LLM을 능가한다고 발견했습니다. 우리의 SELF-RAG는 이 성능 격차를 메우며, 인용 증거로 완전히 지원되는지 여부를 측정하는 인용 정밀도에서 ChatGPT보다도 더 우수한 성과를 냈습니다. SELF-RAG가 아닌 동일한 명령-출력 쌍으로 훈련된 Llama2-FT7B는 테스트 시에만 검색이나 자기 반성을 사용하여 SELF-RAG보다 뒤처졌습니다. 이 결과는 SELF-RAG의 성능 향상이 단순히 훈련 데이터 때문이 아님을 나타내며, SELF-RAG 프레임워크의 효과를 보여줍니다.

#### 5.2 분석
**축소 연구(Ablation Studies)**: 우리는 프레임워크의 핵심 역할을 하는 요소들을 식별하기 위해 일련의 축소 연구를 수행했습니다. 우리는 모델과 다르게 훈련된 두 가지 모델 변형을 평가했습니다: No Retriever는 검색된 구절 없이 표준 명령 따르기 방식으로 명령-출력 쌍을 사용하여 LM을 훈련시키고, No Critic은 항상 최상위 검색된 문서 하나와 함께 반성 토큰 없이 입력-출력 쌍을 사용하여 LM을 훈련시킵니다. 이는 SAIL(Luo et al., 2023)과 유사하며, 우리는 SAIL에서 Alpaca 데이터셋(Dubois et al., 2023)을 사용하는 대신 우리 명령-출력 데이터를 사용했습니다. 우리는 또한 추론 시간 알고리즘에 대한 축소 실험도 수행했습니다. 여기에는 No retrieval이 포함되어 있으며, 이는 추론 중 검색을 비활성화합니다. Hard constraints는 적응적 임계값을 사용하는 대신 Retrieve = Yes일 때 검색하는 모델 성능을 나타냅니다. Retrieve top 1은 표준 RAG 접근법과 유사하게 항상 최상위 문서 하나만 검색하여 사용하는 모델 성능을 나타냅니다. Remove ISSUP는 Eq. 4의 반성 토큰을 기반으로 한 빔 서치에서 ISSUP 점수만 제거했을 때의 모델 성능을 나타냅니다. 이 축소 실험에서는 훈련 변형을 보다 효율적으로 탐색하기 위해 50,000개의 훈련 인스턴스 크기를 사용했습니다. 이 섹션의 후반부에서는 훈련 데이터 크기 영향에 대한 분석을 수행했습니다. 우리는 PopQA, PubHealth, ASQA의 세 가지 데이터셋에서 축소 연구를 수행했습니다. ASQA에서는 150개의 샘플된 인스턴스에서 모델을 평가했으며, 적응적 또는 비검색 프로세스를 포함한 축소 연구는 제외했습니다.
우리는 표 3a에 축소 실험 결과를 보여줍니다. 표의 상단은 훈련 축소 결과를 보여주며, 하단은 추론 축소 결과를 나타냅니다. 우리는 모든 요소가 중요한 역할을 한다는 것을 알 수 있었습니다. 또한, 모든 작업에서 SELF-RAG와 No Retriever 또는 Critic 기준 모델 간의 큰 성능 격차를 관찰했으며, 이는 이 모델들과 함께 LM을 훈련시키는 것이 SELF-RAG의 성능 향상에 크게 기여함을 나타냅니다. 관련성이 없는 상위 구절을 사용(Retrieve top 1)하는 기존의 RAG 접근법은 PopQA와 ASQA에서 큰 성능 저하를 일으켰으며, 빔 서치에서 ISSUP을 제거하면 ASQA에서 성능이 저하되었습니다. 이는 검색 모델에서 모든 구절을 단순히 사용하는 대신, 세부적인 여러 기준에 기반해 신중하게 선택하는 SELF-RAG의 능력이 효과적임을 보여줍니다.
**추론 시간 커스터마이징의 효과**: 제안된 프레임워크의 주요 이점 중 하나는 최종 생성 샘플링에 각 비판 유형이 얼마나 영향을 미치는지를 제어할 수 있게 한다는 점입니다. 우리는 ASQA에서 다양한 평가 측면이 고려되는 동안, 7B 모델에서 추론 시간 동안 다른 파라미터 가중치의 효과를 분석했습니다. 그림 3b는 ISSUP에 대한 가중치 항목을 변경했을 때의 효과를 보여줍니다. 그림에서 알 수 있듯이, 가중치를 증가시키면 모델의 인용 정밀도가 긍정적으로 영향을 받습니다. 이는 모델 생성물이 증거에 의해 지원되는지 여부에 더 중점을 두기 때문입니다. 반면, 더 큰 가중치는 MAUVE 점수가 낮아지게 합니다. 생성이 길어지고 더 유창해질수록 인용으로 완전히 지원되지 않는 주장들이 더 많아지게 되는 경향이 있습니다(Liu et al., 2023a). 우리의 프레임워크는 추가적인 훈련 없이도 이러한 파라미터를 조정하여 테스트 시 모델의 동작을 선택하고 사용자 정의할 수 있도록 합니다.
**효율성과 정확성 간의 균형**: 우리의 프레임워크를 사용하여, 실무자는 보상 토큰의 확률을 사용해 검색 빈도를 조정할 수 있습니다. 우리는 이러한 적응적 임계값이 전체 정확도와 검색 빈도에 어떤 영향을 미치는지 평가했으며, PubHealth와 PopQA에서 임계값 δ(δ가 클수록 검색 빈도가 줄어듦)의 변화에 따른 성능을 평가했습니다. 그림 3c는 두 데이터셋 모두에서 모델의 검색 빈도가 δ에 따라 극적으로 변화하는 것을 보여줍니다. 한편, 검색 빈도가 적을 때의 성능 저하는 PubHealth에서 작지만 PopQA에서는 더 큽니다.