본문 바로가기
medai

MedAI) Search-Adaptor: Embedding Customization for Information Retrieval

by 잼민ai 2024. 7. 21.

not medical but...



LLM의 시대가 오면서 사실상 LLM의 지식 베이스만으로 QA, 수학 문제 풀이, 요약, ... 등 다양한 과제를 해결하는 바람에, IR이 좀 시들해진 것은 사실인 것 같습니다. 근데! retrieval에 특화된 과제의 데이터들은 LLM이 어려워하는 경향이 있나봐요. 왜냐하면... 일반적인 QA처럼 query-answer가 아니라 query랑 corpus (말뭉치) 쌍으로 데이터가 구성되어 있으니까요. Fine-tuning, LoRA, prompt-tuning 등의 튜닝들도 각자만의 한계가 있다고 합니다.

연구진은, "어떻게 하면  최소한의 비용으로 튜닝을 해서 LLM이 retrieval-specific data를 잘 활용하도록 할 수 있을까?"라는 질문에 대한 답으로 Search-Adapter를 제안합니다. LLM의 weight를 업데이트하는 방식이 아니라, LLM의 pre-trained embedding을 수정하려는 방식이에요. 또,데이터가 적은 상황에서 overfitting/forgetting 등이 발생하는 것을 방지하기 위해 ranking loss를 새로 정의하고 regularizer를 사용했다고 하네요. LLM 자체를 학습(=가중치 갱신)시키는 것보다, 이렇게 작은 모듈인 어댑터로 하는 게 방법만 reasonable하다면 훨씬 더 효율적인 것 같기는 합니다 @.@

오른쪽이 도식인데 사실 이것만 보면 잘 모르겠음ㅋㅋ

 

암튼 ㄱ~

일단 본격적으로 search-adapter를 소개하기에 앞서, 연구에서 초점을 맞추고 있는 문제를 수학적으로 정의한 대목을 짚고 가야겠습니다.

\begin{gather}
\mathcal{Q}=\{q_1,\: \cdots,\:q_N\}, \quad \mathcal{C}=\{c_1,\: \cdots,\:c_M\}  \label{eq1} \tag{1} \\
\mathcal{R}=\{(q_i,\: c_j, \: y_{ij})\}_{i=1:N,\: j=1:M}, \text{ where } y_{ij} \text{ denotes relationship: } \label{eq2} \tag{2} \\
y_{ij}>0 \text{ if }q_i\text{ and }c_j\text{ are related (positive relationship); }\\
\text{Otherwise, }y_{ij}=0\text{ (negative relationship).}
\end{gather}

예측된 값인 $\hat{y_{ij}}$이 ground truth인 $y_{ij}$와 "highly-correlated"인 triple을 바탕으로 연관성 높은 문서들을 retrieve하는 모양인데요, 엥 근데 실수값을 가지는 $y$와 $\hat{y}$ 사이에 'highly correlated'가 대체 무슨 말이지.. ㅇㅅㅇ 이런 말로 단락을 마무리짓고 있는데요..

The optimal score is the one that has the same order as the ground truth relationship for each query.

score는 $\hat{y}$을 말하는 것 같고, 이상적인 경우에는 각각의 query에 대해 문서들($c$)과의 $\hat{y}$값들이, ground truth를 $y$값에 따라 정렬한 거랑 똑같아야 한다는 의미인 것 같아요. 그니까 임베딩이 업데이트 돼도, 각 문서의 연관도의 순서는 달라지면 안 된다 그말이징..

Search-Adapter

두 가지 중요한 요소를 꼽을 수 있을 것 같아요.

  • Adaptation function: query의 임베딩을 $qe_i$, corpus의 임베딩을 $ce_j$, 조정된 임베딩을 각각 $\hat{qe_i}$, $\hat{ce_j}$로 나타낸다면, $\hat{qe_i}= qe_i +f(qe_i)$, $\hat{ce_j}= ce_j +f(ce_j)$로 표현할 수 있습니다. $f$는 학습가능하고(learnable) $f: \mathbb{R}^d\rightarrow\mathbb{R}^d$인, 즉 벡터를 또 다른 벡터로 바꿔주는 함수예요. 흠 마치 derivative처럼 정의했네
  • Query predictor: 엥 query 임베딩을 예측하는 거라고?! 왜 필요하지.. 인퍼런스 단계에서는 $f$만 쓴다고 되어있긴 하네요 흠

Ranking Loss

위에 언급되었다시피 relevance score 자체는 바뀌어도 되지만, corpus 전체를 기준으로 보았을 때 문서별 relevance score의 순위/순서는 같아야 한다는 게 Objective입니다. 따라서 적절하게 loss를 구성해주어야 ranking이 유지가 될 텐데요.

\begin{align}\label{eq3}\tag{3}
\mathcal{L}_{Rank} & =\sum_{i=1}^N\sum_{j=1}^M\sum_{k=i}^M I(y_{ij}>y_{ik})\cdot(y_{ij}-y_{ik})\cdot\log(1+e^{(s_{ij}-s_{ik})})
\end{align}

워.

ㅋㅋ 자 차근차근 보자.. $I(y_{ij}>y_{ik})$는 indicator인데요, 괄호 안의 값이 참이면 1, 아니면 0이라고 함! $s_{ij}$는 $qe_i$와 $ce_j$ 사이의 코사인 유사도 값이구요. 해석을 해보자면.. 일단 query 하나에 대해서 먼저 생각을 해봅시다($i$를 고정시킨다는 말). 기준되는 문서도 하나 고정하죠($j$도 fix). 언제 loss가 0이 아닌 값을 갖냐면, 어떤 문서와 query의 relevance score의 값이 다른 문서의 것보다 크다고 주장함에도 불구하고 임베딩끼리 계산한 코사인 유사도는 그 반대인 경우예요. 그럼 function이 제기능을 못하는 중인 거니까.. 로그는 그냥 monotonic한 다른 걸로 대체해도 상관없다고 함!

 

Regularization

임베딩을 바꾼다는 건 인코더를 손본다는 거니까 적절한 regularization으로 forgetting/overfitting을 방지해줄 필요가 있는데요, 두 종류의 regularization을 사용하고 있습니다. 수식 쓰기 귀찮아서 말로 떼우겠음

  • Recovery: 수정된 query와 corpus embedding, 그리고 original embedding간의 normalized L1 distance를 계산해준 것
  • Prediction: 직관적으로 생각했을 때, 만약에 corpus랑 query가 연관성이 매우 높다면, 거꾸로 corpus로부터 query를 예측할 수도 있을 거 같아요. 이 직관을 바탕으로 prediction loss라는 걸 구상을 해줬다고 합니다. 대충 구성을 보아하니.. 예측한 query와 실제 query의 L1 distance에 relevance score를 곱하고 (예측은 특정 corpus로부터 하니까) 전체 relevance score 값들의 합으로 나누는 것이에요. 그냥 좀더 query를 잘 embed할 수 있도록 손쓴 거 같음ㅋㅋ

그래서 우리가 풀려는 최적화 문제는?!

\begin{equation}\label{eq4}\tag{4} \min_{f,p}\mathcal{L}_{Rank}(f) + \alpha\mathcal{L}_{Rec}(f)+\beta\mathcal{L}_{Pred}(f,p)\end{equation}

$\alpha, \:\beta$는 하이퍼파라미터구요~

 

$f$가 명시적으로 정의된 함수가 아니라 최적화 문제로 찾아가는 게 흥미롭군요..

 

evaluation은 IR 벤치마크인 BEIR로 진행했다하구요, 결과는 꽤 성공적이었던 것으로! ablation 스터디에서 보니 loss함수가 꽤나 결정적인 component였던 것으로 확인되었습니다~.~

공부..로 읽는 거니까 결과 분석은 덜 꼼꼼하게 하는 점 양해 부탁합니다..

 

오늘은 여기까지!

728x90