검색
← 모듈 로드맵

REALM: 검색을 더한 언어 모델 사전학습

논문 · 전문가 · Kelvin Guu 외 4명 · 2020 · arXiv

원제 · REALM: Retrieval-Augmented Language Model Pre-Training

빈칸 맞히기 신호만으로 위키백과 검색기와 언어 모델을 함께 사전학습한 논문

먼저 알아야 할 것

마스크 언어 모델(BERT)밀집 검색 · MIPS소프트맥스잠재 변수 · 주변화오픈 도메인 QA

다루는 내용

REALM은 언어 모델이 예측 전에 위키백과 문서를 검색해 읽도록 하고, 검색 결과를 잠재 변수로 주변화한 가능도를 최대화해 검색기까지 라벨 없이 사전학습합니다. 기대보다 정답에 도움 된 문서의 점수가 오르는 원리로 학습되며, 1,300만 문서 색인은 비동기로 새로 고치고, 핵심 구간 가리기 · 빈 문서 · 뻔한 검색 금지 · ICT 초기화로 학습을 안정시켰습니다. 3억 3천만 파라미터로 NQ · WebQuestions · CuratedTrec에서 T5-11B와 ORQA를 4~16%p 앞섰습니다.

초록

저자가 쓴 초록을 옮긴 것입니다.

언어 모델 사전학습은 질의응답 같은 NLP 과제에 꼭 필요한 세상 지식을 놀라울 만큼 많이 담아낸다는 것이 알려져 있습니다. 하지만 이 지식은 신경망의 파라미터 속에 암묵적으로 저장되어 있어, 더 많은 사실을 담으려면 점점 더 큰 신경망이 필요합니다. 지식을 더 모듈화되고 해석 가능한 방식으로 담기 위해, 우리는 언어 모델 사전학습에 잠재 지식 검색기를 더했습니다. 이 검색기 덕분에 모델은 사전학습 · 미세조정 · 추론 동안 위키백과 같은 대규모 말뭉치에서 문서를 검색해 주의를 기울일 수 있습니다. 우리는 처음으로, 마스크 언어 모델링을 학습 신호로 삼고 수백만 개 문서를 고려하는 검색 단계를 거쳐 역전파함으로써, 이런 지식 검색기를 비지도 방식으로 사전학습하는 방법을 보입니다. 검색 증강 언어 모델 사전학습(REALM)의 효과를 어려운 과제인 오픈 도메인 질의응답(Open-QA)에 미세조정해 보여 줍니다. 세 가지 대표적인 Open-QA 벤치마크에서 지식을 명시적으로 저장하는 모델과 암묵적으로 저장하는 모델 양쪽의 최신 방법들과 비교했고, 모든 이전 방법을 큰 차이(절대 정확도 4~16%)로 앞서면서 해석 가능성과 모듈성 같은 질적인 이점도 제공함을 확인했습니다.

해설

REALM: 검색을 더한 언어 모델 사전학습

언어 모델이 빈칸을 맞히기 전에 위키백과에서 문서를 검색해 읽도록 만들고, 그 검색기까지 '빈칸 맞히기' 신호만으로 함께 사전학습한 논문입니다. 지식을 파라미터에 다 외우는 대신 바깥 문서에서 꺼내 쓰는 길을 열었고, 오픈 도메인 QA 세 벤치마크에서 이전 최고보다 4~16%p 높았습니다.

항목내용
원제REALM: Retrieval-Augmented Language Model Pre-Training
저자Kelvin Guu 외 4명 (Google Research)
발표2020 · arXiv 2002.08909
트랙 · 수준RAG·검색 · 심화
먼저 알면 좋은 것BERT의 마스크 언어 모델(MLM), 밀집 검색(내적 · MIPS), 소프트맥스, 잠재 변수와 주변화(marginalization), 오픈 도메인 QA

들어가기 전에

이 해설은 아래 내용을 안다고 보고 씁니다. 처음이라면 먼저 읽고 오면 수식과 손계산을 훨씬 쉽게 따라올 수 있습니다.

한눈에 보기

  • 언어 모델의 지식이 '파라미터 속에 숨어 있다'는 것이 왜 문제인지, 바깥 문서를 꺼내 쓰는 방식이 무엇을 바꾸는지 알게 됩니다.
  • 검색 → 예측 을 하나의 확률식 p(y∣x)=∑zp(y∣z,x) p(z∣x)p(y \mid x) = \sum_z p(y \mid z, x)\, p(z \mid x)로 묶는 방법을 손계산으로 이해합니다.
  • 정답 라벨 없이 검색기가 "도움이 되는 문서"를 배우는 원리(기울기 분석)를 압니다.
  • 수백만 문서 색인을 학습 중에 어떻게 갱신하는지(비동기 MIPS 새로 고침), 그리고 학습을 성공시킨 요령들을 알게 됩니다.

초록 (번역)

언어 모델 사전학습은 질의응답 같은 NLP 과제에 꼭 필요한 세상 지식을 놀라울 만큼 많이 담아낸다는 것이 알려져 있습니다. 하지만 이 지식은 신경망의 파라미터 속에 암묵적으로 저장되어 있어, 더 많은 사실을 담으려면 점점 더 큰 신경망이 필요합니다. 지식을 더 모듈화되고 해석 가능한 방식으로 담기 위해, 우리는 언어 모델 사전학습에 잠재 지식 검색기를 더했습니다. 이 검색기 덕분에 모델은 사전학습 · 미세조정 · 추론 동안 위키백과 같은 대규모 말뭉치에서 문서를 검색해 주의를 기울일 수 있습니다. 우리는 처음으로, 마스크 언어 모델링을 학습 신호로 삼고 수백만 개 문서를 고려하는 검색 단계를 거쳐 역전파함으로써, 이런 지식 검색기를 비지도 방식으로 사전학습하는 방법을 보입니다. 검색 증강 언어 모델 사전학습(REALM)의 효과를 어려운 과제인 오픈 도메인 질의응답(Open-QA)에 미세조정해 보여 줍니다. 세 가지 대표적인 Open-QA 벤치마크에서 지식을 명시적으로 저장하는 모델과 암묵적으로 저장하는 모델 양쪽의 최신 방법들과 비교했고, 모든 이전 방법을 큰 차이(절대 정확도 4~16%)로 앞서면서 해석 가능성과 모듈성 같은 질적인 이점도 제공함을 확인했습니다.

무엇을 풀었나

BERT · T5 같은 사전학습 모델은 "The ___ is the currency of the UK" 같은 빈칸에 'pound'를 맞힐 만큼 세상 지식을 담고 있습니다. 하지만 문제가 세 가지 있었습니다.

  1. 어디에 무엇이 저장됐는지 알 수 없습니다. 지식이 수억 개 파라미터에 흩어져 있어, 모델이 왜 그렇게 답했는지 근거를 보여 줄 수 없습니다.
  2. 더 많이 알려면 모델을 키워야 합니다. 저장 공간이 곧 파라미터 수라서, 지식을 늘리려면 학습 · 추론 비용이 같이 커집니다.
  3. 지식을 고치기 어렵습니다. 세상이 바뀌면 모델 전체를 다시 학습해야 합니다.

검색을 쓰는 질의응답 시스템은 이미 있었지만, 대부분 TF-IDF 같은 학습하지 않는 검색기 를 썼습니다. 직전 연구 ORQA는 학습하는 밀집 검색기를 썼으나 사전학습 단계에는 검색을 넣지 않았습니다. REALM의 질문은 이것입니다. 사전학습 단계부터 검색기를 언어 모델과 함께, 라벨 없이 학습할 수 있을까?

핵심 아이디어

mermaid
flowchart LR
  X["입력 x (빈칸 문장 또는 질문)"] --> R[지식 검색기: 내적으로 문서 점수]
  Z[(위키백과 문서 약 1,300만 개 · MIPS 색인)] --> R
  R --> TOP[상위 k개 문서 + 빈 문서]
  TOP --> E["지식 증강 인코더: [x; z]를 함께 읽음"]
  X --> E
  E --> Y[빈칸 단어 또는 답 구간 y]
  Y -->|정답 가능도 역전파| R
  Y -->|역전파| E
  R -.->|수백 스텝마다 문서 다시 임베딩| Z

1. 검색 → 예측을 하나의 확률로

직관. 시험 볼 때 오픈북을 허용하되, 어느 책을 펼칠지까지 학생이 정합니다. 펼친 책이 정답에 도움이 됐다면 "그 책을 고른 판단"도 칭찬받습니다.

단계별 설명.

  1. 입력 xx(빈칸이 있는 문장, 또는 질문)가 들어옵니다.
  2. 검색기가 문서 zz마다 점수를 매기고, 소프트맥스로 '문서 zz를 고를 확률' p(z∣x)p(z \mid x)를 만듭니다.
  3. 인코더가 xx와 zz를 함께 읽고 정답 yy의 확률 p(y∣z,x)p(y \mid z, x)를 냅니다.
  4. 어떤 문서가 도움이 될지는 정답이 없으므로, zz를 잠재 변수 로 보고 모든 문서에 대해 가중 평균합니다(주변화).

수식.

p(y∣x)=∑z∈Zp(y∣z,x)  p(z∣x)p(y \mid x) = \sum_{z \in \mathcal{Z}} p(y \mid z, x)\; p(z \mid x)
p(z∣x)=exp⁡f(x,z)∑z′exp⁡f(x,z′),f(x,z)=Embedinput(x)⊤Embeddoc(z)p(z \mid x) = \frac{\exp f(x, z)}{\sum_{z'} \exp f(x, z')}, \qquad f(x, z) = \mathrm{Embed}_{\text{input}}(x)^\top \mathrm{Embed}_{\text{doc}}(z)
기호뜻
xx입력 (사전학습: 빈칸 문장 / 미세조정: 질문)
yy출력 (빈칸에 들어갈 토큰 / 답)
zz, Z\mathcal{Z}문서 하나, 지식 말뭉치 전체(위키백과)
f(x,z)f(x, z)관련도 점수. 입력 벡터와 문서 벡터의 내적
Embed\mathrm{Embed}BERT의 [CLS] 출력에 투영 행렬을 곱해 차원을 줄인 벡터

숫자로 해 보기 (설명용 예시, 논문 수치 아님). 문서가 3개뿐이라고 합시다. 검색 확률이 p(z∣x)=(0.6,0.3,0.1)p(z \mid x) = (0.6, 0.3, 0.1)이고, 각 문서를 읽었을 때 정답을 맞힐 확률이 p(y∣z,x)=(0.9,0.2,0.05)p(y \mid z, x) = (0.9, 0.2, 0.05)라면,

p(y∣x)=0.6×0.9+0.3×0.2+0.1×0.05=0.54+0.06+0.005=0.605p(y \mid x) = 0.6 \times 0.9 + 0.3 \times 0.2 + 0.1 \times 0.05 = 0.54 + 0.06 + 0.005 = 0.605

입니다. 좋은 문서(첫째)에 검색 확률을 더 몰아주면 이 값이 커집니다.

논문의 실제 예. "정삼각형은 3이 ___ 소수이기 때문에 자와 컴퍼스로 작도할 수 있다"에서 정답 'Fermat'의 확률이 검색 없는 BERT는 1.1×10−141.1 \times 10^{-14}, "257은 페르마 소수…" 문서를 읽은 REALM은 1.0, 상위 8개 문서로 주변화한 REALM은 0.129였습니다.

2. 검색기는 무엇을 배우나: '기대보다 나은 문서'를 올린다

직관. 여러 참고서 중 하나를 펼쳤더니 평소보다 답을 잘 맞혔다면, 다음에는 그 참고서를 더 먼저 꺼내게 됩니다.

수식 (논문의 기울기 분석). 검색기 파라미터 θ\theta에 대한 기울기를 정리하면, 각 문서의 점수 f(x,z)f(x, z)는 다음 r(z)r(z)만큼 움직입니다.

∇log⁡p(y∣x)=∑zr(z) ∇f(x,z),r(z)=[p(y∣z,x)p(y∣x)−1]p(z∣x)\nabla \log p(y \mid x) = \sum_{z} r(z)\, \nabla f(x, z), \qquad r(z) = \left[\frac{p(y \mid z, x)}{p(y \mid x)} - 1\right] p(z \mid x)
기호뜻
p(y∣z,x)p(y \mid z, x)문서 zz를 읽었을 때 정답 확률
p(y∣x)p(y \mid x)검색 확률대로 문서를 골랐을 때의 '평균' 정답 확률
r(z)r(z)양수면 점수를 올리고, 음수면 내림

r(z)>0r(z) > 0일 조건은 p(y∣z,x)>p(y∣x)p(y \mid z, x) > p(y \mid x), 즉 그 문서가 평균보다 정답에 더 도움이 될 때 입니다.

숫자로 해 보기 (위 예 이어서). 평균 p(y∣x)=0.605p(y \mid x) = 0.605입니다. 첫 문서는 0.9>0.6050.9 > 0.605라 r=(0.9/0.605−1)×0.6≈0.29r = (0.9/0.605 - 1) \times 0.6 \approx 0.29로 점수가 올라갑니다. 둘째 문서는 0.2<0.6050.2 < 0.605라 r=(0.2/0.605−1)×0.3≈−0.20r = (0.2/0.605 - 1) \times 0.3 \approx -0.20으로 내려갑니다. 라벨 없이도 '쓸모 있는 문서'가 위로 올라오는 이유입니다.

3. 수백만 문서를 학습 중에 검색하기: 비동기 MIPS 새로 고침

직관. 도서관 색인 카드를 매일 새로 쓸 수는 없으니, 사서 한 명이 뒤에서 계속 새 색인을 만들고 완성될 때마다 교체합니다.

단계별 설명.

  1. 모든 문서를 더하는 것은 불가능하므로, 확률이 높은 상위 kk개 문서만 더합니다(나머지는 확률이 0에 가깝다고 봄).
  2. 상위 kk개는 내적 순서와 같으므로 최대 내적 검색(MIPS) 색인으로 빠르게 찾습니다.
  3. 문제는 검색기가 학습되면 문서 벡터도 바뀌어 색인이 '낡는다'는 점입니다.
  4. 그래서 두 작업을 동시에 돌립니다. 학습 작업은 계속 파라미터를 고치고, 색인 작업은 그 시점의 파라미터 사본으로 모든 문서를 다시 임베딩해 새 색인을 만듭니다. 완성되면 교체하고 다시 반복합니다(수백 스텝마다).
  5. 색인은 후보를 고를 때만 쓰고, 고른 kk개 문서의 확률과 기울기는 최신 파라미터로 다시 계산합니다.

왜 이렇게 했나. 절제 실험에서 색인을 30배 덜 자주 새로 고치면 NQ 정확도가 38.2에서 28.7로 크게 떨어졌습니다. 색인 신선도가 학습 안정성에 중요하다는 뜻입니다. 미세조정 때는 단순하게 색인을 한 번만 만들고 문서 인코더는 고정했습니다(질문 인코더는 계속 학습).

4. 학습을 성공시킨 요령들

  • 핵심 구간 가리기(salient span masking): 아무 단어나 가리면 문맥만으로 맞힐 수 있는 빈칸이 많습니다. 그래서 개체명(예: "United Kingdom")이나 날짜(예: "July 1969")처럼 세상 지식이 필요한 구간 을 골라 가립니다. 개체명은 CoNLL-2003으로 학습한 BERT 태거, 날짜는 정규식으로 찾습니다.
  • 빈 문서(null document): 검색이 필요 없는 빈칸도 있으므로, 후보에 '빈 문서'를 하나 넣어 그쪽으로 확률을 보낼 수 있게 합니다.
  • 뻔한 검색 막기: 사전학습 문장과 지식 말뭉치가 둘 다 위키백과면, 가린 문장이 원래 들어 있던 문서를 그대로 찾아 답을 베낄 수 있습니다. 이러면 검색기가 '글자 그대로 일치'만 배우므로, 그 문서는 후보에서 뺍니다.
  • 좋은 출발점: 처음부터 검색이 엉망이면 인코더가 문서를 무시하는 법을 배우고, 그러면 검색기는 신호를 못 받는 악순환이 생깁니다. 그래서 검색기는 역 클로즈 과제(ICT)로, 인코더는 BERT-base로 미리 데워 둡니다.

5. 설정 (논문 기준)

  • 지식 말뭉치: 2018년 12월 20일 영어 위키백과를 최대 288 워드피스로 잘라 1,300만 개 남짓의 후보
  • 사전학습: TPU 64개로 20만 스텝, 배치 512, 학습률 3×10−53 \times 10^{-5}, 예시마다 빈 문서 포함 8개 후보로 주변화
  • 미세조정 · 추론: 상위 5개 후보, 12GB GPU 한 대로 모델 전체 실행 가능
  • 미세조정(Open-QA)에서는 p(y∣z,x)p(y \mid z, x)를 문서 속 답 구간의 시작 · 끝 위치 확률로 정의합니다.

결과

오픈 도메인 QA (테스트 세트, 완전 일치 정확도 %)

시스템NQWebQuestionsCuratedTrec파라미터
T5-base27.029.1—2억 2,300만
T5-large29.832.2—7억 3,800만
T5-11B34.537.4—113억
ORQA33.336.430.13억 3,000만
REALM (사전학습 = 위키백과)39.240.246.83억 3,000만
REALM (사전학습 = CC-News)40.440.742.93억 3,000만
  • REALM은 30배 큰 T5-11B보다 높았습니다. 미세조정 설정 · 하이퍼파라미터 · 데이터가 같은 ORQA와의 차이는 순수하게 사전학습 덕분입니다.
  • 다른 검색 기반 시스템이 문서 20~80개를 쓰는 데 비해 5개만 검색하고도 가장 좋았습니다.

절제 실험 (NQ 개발 세트, 완전 일치 / 미세조정 전 상위 5개 검색에 정답이 있는 비율)

설정완전 일치미세조정 전 검색
REALM38.238.5
REALM 검색기 + 기본 인코더37.438.5
기본 검색기 + REALM 인코더35.313.9
기본 (ORQA)31.313.9
무작위 토큰 가리기32.324.2
무작위 구간 가리기35.326.1
색인 30배 덜 갱신28.715.1
  • 향상의 대부분은 검색기 를 사전학습한 데서 왔고, 인코더 사전학습도 도움이 됐습니다. 핵심 구간 가리기가 무작위 가리기보다 확실히 나았습니다.

왜 중요한가 · 이후 영향

  • '검색 증강 사전학습'의 출발점입니다. 지식을 파라미터에 다 외우지 않고 바깥 문서에서 꺼내 쓰는 설계를 사전학습 수준에서 처음 보였습니다. 바로 뒤를 이어 같은 해 RAG가 생성 모델로 이 생각을 확장했습니다.
  • 해석 가능성과 모듈성: 모델이 어떤 문서를 보고 답했는지 보여 줄 수 있고, 지식 말뭉치를 바꿔 끼울 수 있다는 장점을 실제로 제시했습니다.
  • 작은 모델 + 검색이 큰 모델을 이길 수 있다 는 증거가 됐습니다(3억 3천만 대 113억). 이 흐름은 RETRO 등으로 이어집니다.

한계 · 주의할 점

  • 학습 비용이 큽니다. TPU 64개에 색인 재구축용 TPU 16개, 수백 스텝마다 1,300만 문서를 다시 임베딩해야 합니다.
  • 답을 뽑아내는 방식(extractive) 입니다. 미세조정에서 답은 문서 속 구간이어야 하므로, 자유로운 문장 생성에는 바로 쓰기 어렵습니다(RAG가 이 부분을 다룹니다).
  • 상위 kk 근사: 모든 문서를 더하는 대신 상위 몇 개만 더하므로, 색인이 낡거나 검색이 빗나가면 학습 신호가 약해집니다.
  • T5는 사전학습에 SQuAD 데이터를 추가로 썼고 REALM은 쓰지 않았다는 점 등, 비교 조건 차이를 감안해서 읽어야 합니다.

스스로 점검

  1. 문서 2개, 검색 확률 (0.7,0.3)(0.7, 0.3), 정답 확률 (0.5,0.9)(0.5, 0.9)일 때 p(y∣x)p(y \mid x)는? 어느 문서의 점수가 올라가나요?

    0.7×0.5+0.3×0.9=0.620.7 \times 0.5 + 0.3 \times 0.9 = 0.62입니다. 둘째 문서(0.9>0.620.9 > 0.62)의 점수가 올라가고, 첫째(0.5<0.620.5 < 0.62)는 내려갑니다.

  2. 사전학습 중 색인을 계속 새로 고쳐야 하는 이유는?

    검색기가 학습되면 문서 벡터가 바뀌어 기존 색인이 실제 점수 순서와 어긋나기 때문입니다. 갱신을 30배 줄이면 정확도가 크게 떨어졌습니다.

  3. '뻔한 검색'을 막지 않으면 어떤 문제가 생기나요?

    가린 문장의 원래 문서를 찾아 답을 그대로 베끼게 되어, 검색기가 뜻의 관련성 대신 글자 일치만 배우게 됩니다.

용어 정리

용어쉬운 뜻
마스크 언어 모델(MLM)문장 일부를 가리고 원래 단어를 맞히게 하는 사전학습 방식
잠재 변수(latent variable)정답이 주어지지 않아 모델이 스스로 정하는 중간 선택(여기서는 '어떤 문서를 볼지')
주변화(marginalization)가능한 모든 선택에 대해 확률을 가중합해 하나의 확률로 합치는 것
MIPS최대 내적 검색. 내적이 가장 큰 벡터를 빠르게 찾는 방법
비동기 새로 고침학습을 멈추지 않고 뒤에서 색인을 새로 만들어 교체하는 방식
핵심 구간 가리기(salient span masking)개체명 · 날짜처럼 지식이 필요한 구간을 골라 가리는 방법
빈 문서(null document)검색이 필요 없을 때 확률을 보낼 수 있게 넣는 비어 있는 후보
역 클로즈 과제(ICT)문장 하나로 그 문장이 나온 문서를 찾게 하는 사전 과제
오픈 도메인 QA정답 문서를 주지 않고 거대한 말뭉치에서 찾아 답하는 과제
완전 일치(EM)예측 답이 정답과 글자 그대로 같은 비율

이어서 읽을 것

다음에 볼 것

이 글을 이해했다면 이어서 보면 좋은 항목입니다.

출처

AI 원리부터 이해하기 · RAG·검색 모듈

RAG·검색 모듈 학습

이 글은 RAG·검색 모듈의 학습 자료입니다. 전체 21개 자료 중 13번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

arXiv (논문별 상이)

arXiv 2002.08909