본문 바로가기

LLM을 활용한 실전 AI 애플리케이션 개발

[LLM을 활용한 실전 AI 애플리케이션 개발] 쿼리, 키, 값 이해하기

 

- 앞서 우리는 사람이 글을 이해하는 것처럼 딥러닝 모델이 작동하도록 하려면 

  단어 사이의 관계를 계산해 관련이 있는지 찾고, 관련이 있는 단어의 맥락을 포함시켜

  단어를 재해석해야 한다고 정리했다.

 

- 트랜스포머 아키텍처를 개발한 연구진은 이 과정을 처리하기 위해 쿼리,키,값이라는 개념을 도입했다.

  쿼리, 키, 값은 정보 검색 분야에서 가져온 용어다.

  흔히 검색창에서 검색을 할 때, 우리가 입력하는 검색어를 쿼리(query)라고 한다.

  쿼리를 입력하고 엔터 키를 치면, 검색 엔진은 수많은 자료 중에 쿼리와 관련이 있는 문서를 찾는다.

 

- 이 때, 쿼리와 관련이 있는지 계산하기 위해 문서가 가진 특징을 키(key)라고 한다.

  키로는 문서의 제목, 문서의 본문, 저자 이름 등이 사용될 수 있다.

  검색 엔진이 쿼리와 관련이 깊은 키를 가진 문서를 찾아 관련도순으로 정렬해서 문서를 제공할 때,

  문서를 값(value)이라고 할 수 있다.

  우리가 검색하면서 원하는 것은 '값'이다. 

 

- 쿼리, 키, 값을 우리가 하고자 하는 관련 있는 단어 찾기에 대입해 보면 다음과 같다.

  예시 문장에서 우리는 '파리'와 관련이 있는 단어를 찾고자 하기 때문에 이 때 쿼리는 '파리'다.

  쿼리와 관련이 있는 단어를 찾을 때 키는 문장 속의 각 단어다.

  쿼리와 관련이 있는 키를 찾은 경우 그 키에 연결된 값을 반환해야 하는데,

  이 때 값을 키의 토큰 임베딩으로 뒀다. 

 

- 이렇게 뒀을 때 '파리'라는 쿼리로 ['나는', '최근', '파리', '여행을', '다녀왔다']라는 키 묶음에서

  관련이 잇는 키를 찾았을 때, 그림 오른쪽과 같이 '파리'와 '여행을', '다녀왔다'가 적절히 섞인 값이 된다면,

  사람이 단어를 재해석하는 과정을 모방할 수 있다.

  이번 절에서는 이렇게 모방하기 위한 쿼리, 키, 값을 찾아나갈 것이다. 

 

- 가장 간단하게 주변 단어의 맥락을 반영하는 방법에는 단어를 모두 동등하게 반영하는 방식이 있다.

  이를 '평균' 방법이라고 하자. 평균 방법은 모든 단어를 1씩 동등하게 반영하기 때문에

  그 결과 그림 오른쪽과 같이 '파리'라는 단어가 ['나는', '최근', 파리', '여행을', '다녀왔다']를 

  모두 같은 비율로 갖게 된다.

 

- 이러면 단어를 재해석한다는 목표를 달성하지만, 관련이 깊은 단어를 더 많이 반영한다는 목표는 달성하지 못한다.

  또 모든 단어에 평균 방법을 사용할 경우 모두 같은 값을 갖게 된다는 문제도 있다. 

 

- 이와 같은 평균 방법이 너무 단순한다면, '가까이 있는 단어가 더 관련이 깊을 것'이라는 가정을 세우고,

  자기 자신에게 가장 높은 가중치를 주고 멀어질수록 가중치를 낮추는 방식으로 의미를 반영할 수도 있다.

  '파리'는 세 번째 자리에 있기 때문에, 가장 가까운 자기 자신과는 3만큼 관계가 있고,

  한 칸 떨어져 있는 '최근'과 '여행을'은 2, 두 칸 떨어져 있는 '나는'과 '다녀왔다'는 1만큼 관계가 있다고 가정했다.

 

- 경험적으로 봤을 때, 글에서 가까운 곳에 있는 단어일수록 관계가 있는 경우가 많기 때문에

  이 방식으로 '파리'를 재해석했을 때, 평균 방식보다는 더 나은 결과를 기대할 수 있다.

  하지만 여전히 우리가 원하는 결과와는 차이가 큰 것을 확인할 수 있다.