brunch

You can make anything
by writing

C.S.Lewis

by 최재철 Apr 05. 2024

임베딩(Embedding) 모델(과거부터 최근까지)

원핫인코딩에서 OpenAI 임베딩모델까지

임베딩(embedding)은 자연어 처리에서 중요한 개념 중 하나입니다. 이 개념은 텍스트 데이터를 다루는데 사용됩니다. 예를 들어, 우리가 검색 엔진을 사용하여 정보를 찾거나, 제품을 추천받거나, 비슷한 주제로 묶여 있는 문서를 찾는 경우에 임베딩이 사용될 수 있습니다.

임베딩은 단어나 문장을 수학적으로 표현하는 것을 의미합니다. 이를 통해 컴퓨터가 단어나 문장의 의미를 이해하고 비슷한 의미를 가진 단어나 문장을 찾아낼 수 있습니다. 예를 들어, "사과"라는 단어와 "배"라는 단어가 비슷한 의미를 가진다고 하면, 이를 임베딩을 통해 수치적으로 표현할 수 있습니다.

큰 언어 모델인 LLM(Large Language Models)은 이러한 임베딩을 사용하여 많은 양의 텍스트 데이터를 학습합니다. 이렇게 학습된 임베딩은 검색이나 추천 시스템에서 사용되어 사용자의 요구에 맞는 정보를 찾아내거나 추천해 줄 수 있습니다. 따라서 임베딩은 자연어 처리에서 매우 중요한 요소입니다.


Embedding이란?


"Embedding" 또는 임베딩 벡터는 텍스트를 숫자로 표현한 것입니다. 이 숫자는 실수로 이루어진 고정된 크기의 배열입니다. 예를 들어, "사과"라는 단어가 있다면 이를 특정한 숫자들로 표현한 것이 임베딩 벡터입니다. 

이렇게 만들어진 임베딩 벡터는 단어, 문장 또는 문서와 같은 텍스트를 모델에 입력하면 출력으로 나옵니다. 이 임베딩 벡터들은 텍스트의 의미를 수치적으로 나타내줍니다.

임베딩 벡터 간의 거리를 측정하면, 해당 텍스트들 간의 관련성을 알 수 있습니다. 거리가 가까울수록 두 텍스트는 서로 관련성이 높다는 것을 의미하고, 거리가 멀면 관련성이 낮다는 것을 나타냅니다. 예를 들어, "사과"와 "배"라는 단어의 임베딩 벡터 간의 거리가 가까우면 이 두 단어는 서로 관련성이 높다는 것을 의미합니다.


벡터 표현 방식에 대한 더 자세한 것은,  여기를 참고하세요. 




Embedding이 왜 필요한가?


AI 모델은 기본적으로 숫자 형태의 입력만 받고 숫자 형태의 결과만 출력할 수 있습니다. 하지만 사람이 입력한 텍스트는 숫자가 아니기 때문에, 이를 AI 모델이 이해할 수 있는 형태로 변환해 주어야 합니다. 이 변환 작업이 embedding의 주된 이유입니다.

컴퓨터에서는 이미 텍스트가 숫자로 인코딩되어 있지만, 그 이유는 텍스트의 길이가 매우 길고 가변적이기 때문입니다. AI 모델은 이러한 가변적인 입력을 다루기에 적합하지 않습니다. 그래서 텍스트를 고정된 길이의 숫자 형태로 변환하는 과정이 필요합니다. 이 변환된 형태를 embedding이라고 하며, 이를 통해 AI 모델이 텍스트를 처리할 수 있게 됩니다.



Embedding을 어떻게 생성할 수 있는가?


[ 과거: One-hot Encoding ] 

원핫인코딩 (출처 : https://www.thedataschool.com.au/)

과거에는 AI 모델을 학습할 때 간단한 방식을 사용했습니다. 예를 들어, 많은 문서를 가진 큰 데이터셋이 있다고 상상해 보겠습니다. 이제 그 데이터셋에서 모든 단어를 세어서 하나의 거대한 단어 목록을 만들고, 각 단어에 숫자를 할당합니다. 그리고 어떤 단어가 나타났을 때, 그 단어의 인덱스에 해당하는 위치에만 1이 있는 벡터를 만들어서 해당 단어의 표현으로 사용합니다. 이것이 One-hot Encoding입니다.

One-hot Encoding은 간단해서 이해하기 쉽지만, 단어 수에 따라 벡터의 차원이 매우 커지는 경향이 있습니다. 예를 들어, 단어가 100,000개라면 100,000차원의 벡터가 필요하고, 대부분의 요소가 0인 아주 긴 벡터가 됩니다. 이렇게 되면 벡터가 매우 희소하고 AI 모델이 처리하기 어려워집니다.


[ 현재: Learned Embedding ] 

러닝임베딩 (출처 : https://assets-global.website-files.com/)

"Learned Embedding"은 새로운 embedding 생성 방법으로, One-hot Encoding의 단점을 보완하기 위해 등장했습니다. 이 방법은 신경망 구조를 가진 AI 모델(또는 LLM)을 거대한 문서 데이터를 사용하여 학습하여 얻어집니다. 이 학습 과정에서 AI 모델은 다양한 단어들을 받아들이며, 문맥 상 의미적으로 유사한 단어들의 embedding vector들 간의 거리를 가깝게, 그렇지 않은 단어들의 거리를 멀게 만들어서 의미적 관계를 학습합니다.

One-hot Encoding과는 달리 Learned Embedding은 사람이 보고 이해하기 어려운 특성을 지니지만, embedding vector의 차원이 매우 낮고(e.g. 384~1,536), embedding vector 내의 모든 요소를 밀도 있게 활용하여 AI 모델이 보다 효과적으로 다룰 수 있습니다. 이러한 특성 때문에 Learned Embedding은 One-hot Encoding에 비해 더 효과적으로 작동할 수 있습니다.



Embedding 활용 용도

임베딩 모델은 쿼리 문자열과의 관련성을 기준으로 주로 다음과 같은 기능 또는 서비스에 활용될 수 있습니다. 

 검색     : 결과 순위를 지정 

 클러스터링 : 텍스트 문자열이 유사성을 기준으로 그룹화

 추천     : 관련 문자열이 포함된 항목을 추천

 이상탐지  : 관련성이 거의 없는 이상값이 식별

 다양성측정 : 유사성 분포를 분석

 분류     : 텍스트 문자열이 가장 유사한 레이블단위로 분류


마지막으로, 아래 표는 과거부터 최근까지 다양한 임베딩 모델의 제조사와 벡터 차원 수, 특징을 정리한 내용입니다

이 표를 참고하여 다양한 임베딩 모델의 특징을 비교하시면 도움이 되실 것입니다. :)






브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari