ROC 커브의 개념

ROC curve가 나오게 된 배경, 이유, 한계, 활용, 해석 1. 배경 ROC는 원래 2차 세계대전 당시 레이더를 조작하던 엔지니어들이 오경보확률과 적중확률을 매칭시키기 위해 개발하였다고 합니다. 레이더 운용자(Receiver Operator)가 쓴다고 하여 이름도 Receiver Operating Characteristics입니다. 그려보기 실제로 한 번 그려봅시다. Actual Predicted 1 0.9 1 0.8 1 0.7 1 0.6 1 0.55 1 0.54 1 0.53 0 0.52 0 0.51 0 0.505 0 0.504 0 0.503 0 0.502 AOC 곡선을 그릴 때에는 Threshold를 움직여가며 점을 찍습니다....

February 2, 2025

Retrieval Augmented Generation에 있어서 난관

QA 태스크에서 LLM은 질문에 대해 잘못 답변(Hallucination)할 수 있고, 이를 완화하기 위해 질문과 연관된 문서를 찾아 증강(augment)하는 Retrieval-Augmented Generation 기법이 등장하였다. 그런데 이 RAG는 두 가지 난관이 있는데, 먼저 질문과 연관된 문서를 찾지 못하는 에러가 발생할 수 있고, 적절한 문서를 찾아왔지만 이를 제대로 반영하지 못하는 에러가 발생할 수 있다.1 Retrieval Error Information Retrieval의 문제. 펠프스가 어디서 태어났냐고 물었는데 직업과 아내에 대한 정보를 가져온다면 Retrieval Error라 할 수 있다. Grounding Error Retrieval된 문서를 반영하지 못하는 문제....

October 20, 2023

RRF(Reciprocal Rank Fusion)란?

RRF(Reciprocal Rank Fusion)는 문자 그대로 역수(Reciprocal)를 이용해 순위(Rank)를 혼합(Fusion)하는 알고리즘입니다. 구글에서 만든 알고리즘인데1, 다른 알고리즘보다 낫다고 알려져 있습니다. 구체적으로는 아래와 같은 수식을 이용해 계산하게 됩니다. $$ \text{score}^d_\text{RRF} = \sum_{r \in R} \frac{1}{k+\text{rank}^d_{r}} $$ 수식이 복잡하다면 아래와 같은 파이썬 예제 코드로 생각하셔도 무방합니다. def get_document_rank(ranking_list, target_document): # ranking_list is a list of documents in ranked order # e.g. ['A', 'B', 'C'] return ranking_list.index(target_document) + 1 def calculate_rrf_score(ranking_lists, target_document): # K is a constant factor K = 3 # find rank of document in ranks return sum( [ 1 / (K + get_document_rank(ranking_list, target_document)) for ranking_list in ranking_lists ] ) 예를 들어, A, B, C 세 문서에 대해 다음과 같이 점수를 매겨보았다고 가정해봅시다....

October 20, 2023