brunch

You can make anything
by writing

C.S.Lewis

by 알바트로스 Oct 26. 2024

벡터화와 임베딩 : 컴퓨터가 언어를 이해하는 핵심원리

우리의 언어는 어떻게 숫자로 표현되는가?

우리가 살아가는 아날로그 세상과는 다르게 인공지능 모델이 살아가는 디지털 세상은 0과 1이라는 두 개의 숫자로 이루어져 있습니다. 인공지능 모델은 컴퓨터와 마찬가지로  0과 1로 구성된 이진수로 모든 것을 표현하고 받아들입니다. 


그런데 왜 하필이면 0과 1일 두 개의 숫자일까요? 이는 컴퓨터의 기본 구성 요소인 ‘전기 신호’와 연관이 있습니다. 컴퓨터는 크게 '흐른다(ON)'와 '흐르지 않는다(OFF)'의 두 가지 상태만을 가질 수 있기 때문이지요. 이 두 가지 상태를 각각 0과 1의 두 가지 숫자로 표현하면 방대한 양의 정보를 오류 없이 간단하게 처리할 수 있습니다.


출처 : Freepiks


컴퓨터가 이진수로 세상을 인식하는 방식은 우리 생활 속에서도 쉽게 찾아볼 수 있습니다. 예를 들어 자율주행 자동차는 센서와 카메라를 통해 주변 환경을 인식하고, 이 정보를 이진수 형태로 변환하여 컴퓨터가 이해할 수 있는 형식으로 처리합니다. 


센서가 물체의 거리와 위치를 측정하면 그 데이터는 이진수로 변환되어 차량의 계산 시스템으로 전달됩니다. 이 시스템은 이진수 데이터를 분석하여 도로, 장애물, 보행자 등을 인식하고, 이를 바탕으로 주행 경로를 결정하지요.



1. 언어를 0과 1의 이진수로 표현하는 벡터화(Vectorization)


우리가 일상생활에서 사용하는 언어 역시 예외는 아닙니다. 아무리 복잡하고 긴 단어와 문장도 0과 1로 이루어진 행렬(Matrix)로 표시할 수 있지요. 이처럼 자연어를 컴퓨터가 이해할 수 있는 형태의 숫자들의 집합인 벡터(vector)로 변환해 주는 과정을 벡터화(vectorization)라고 합니다. 


대표적인 벡터화 방법으로는 0과 1의 이진수로 이루어진 벡터로 단어나 문장을 표현하는 One-hot encoding이 있습니다. 이를 응용하여 문장이나 단어 간 유사도뿐만 아니라 문서 간의 유사도를 측정하는 Bag-of-words라는 방법도 있습니다.


출처 : https://towardsdatascience.com/


1) One-hot encoding: 각 단어를 고유한 인덱스에 해당하는 벡터로 표현하는 방법입니다. 예를 들어, 단어 '컴퓨터'를 [1, 0, 0,...]과 같은 벡터로 표현합니다.

2) Bag-of-words: 문서 내 단어의 출현 빈도를 벡터로 나타내는 방법입니다.



2. 컴퓨터가 언어를 이해하는 핵심원리, 임베딩(Embedding)이란?


임베딩이란 벡터화에서 한 단계 더 나아가서 고차원 공간에서 단어, 문장 또는 다른 데이터의 의미를 반영한 고차원 벡터를 생성하는 과정을 말합니다. 벡터화를 거친 단어는 임베딩(Embedding)이라는 단계를 거치며 단어나 문장을 컴퓨터가 인식할 수 있는 형태로 변환됩니다. 


임베딩(Embedding)은 LLM과 RAG의 작동방식 이해에 있어서 매우 중요한 개념입니다. 이 임베딩이라는 과정을 통해 컴퓨터가 언어의 의미를 보다 효과적으로 이해하고 처리할 수 있게 되기 때문입니다. 아무리 방대한 양의 언어 데이터를 가지고 있다고 해도 이 임베딩이라는 과정을 거치지 않으면 LLM은 이해할 수 없습니다. LLM의 파인튜닝(fine-tuning)이나 검색증강생성(RAG)에 자연어를 숫자로 변환해 주는 임베딩 모델이 핵심적인 역할을 하는 이유입니다.


출처 : swatimeena989


1) Word2 Vec, GloVe, BERT 등 : 대규모 텍스트 데이터를 학습하여 단어를 벡터로 변환하는 알고리즘입니다.



3. 유사도 혹은 거리(similarity or distance), 누가 더 비슷한가?


우리의 언어 정보를 담고 있는 벡터는 단순한 행렬이 아닙니다. 벡터는 '방향성' 정보를 포함하고 있기 때문이지요. 코사인 유사도(cosine similarity)는 두 벡터가 얼마나 비슷한 방향을 가리키고 있는지를 측정하는 방법입니다. 즉, 두 벡터 사이의 각도를 통해 유사도를 판단하는 것이죠. 코사인 유사도는 1에 가까울수록 두 벡터가 매우 유사하고, -1에 가까울수록 두 벡터가 반대 방향을 가리키므로 매우 다르다고 할 수 있습니다. 0에 가까울수록 두 벡터가 서로 직교한다는 의미입니다.


출처 : https://towardsdatascience.com/


앞서서 컴퓨터가 0과 1로 이루어진 이진수로 세상을 인식한다고 설명드렸지만, 일반적으로 코사인 유사도는 실수 값으로 구성된 벡터로 대해 계산하는 것이 더 일반적입니다. 왜냐하면 실수 값은 단순히 존재 유무(0 또는 1)를 나타내는 것뿐만 아니라, 해당 특징의 중요도나 발생 빈도 등을 더욱 정확하게 반영할 수 있기 때문입니다.


이처럼 우리 인간의 언어는 벡터화와 임베딩이라는 과정을 거쳐 컴퓨터가 이해할 수 있는 숫자 형태의 정보로 변환되게 됩니다. 다음시간에는 구체적으로 임베딩 기법이 검색증강생성(RAG) 파이프라인에서 어떠한 역할을 하는지 소개하도록 하겠습니다.





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