자연어처리와 수학 ②

벡터와 행렬의 연산은 자연어처리 기술의 근본적 도구로 자리 잡고 있으며, 이들 없이는 생성형 인공지능이 존재할 수 없었을 것입니다. “벡터와 행렬이 없다면 생성형 인공지능이 없다”는 말은 99% 진리라고 할 수 있습니다. 수학은 눈에 보이지 않지만, 그 저변을 뒷받침하는 중요한 기초입니다. 수학은 인공지능을 가능하게 하는 숨은 힘이며, 우리가 활용하는 기술의 깊은 곳에서 그 역할을 하고 있습니다.
Getty Images Bank
Getty Images Bank
컴퓨터가 인간의 언어를 이해하려면 단어와 문장을 수치로 표현하는 과정이 필요합니다. 이를 ‘임베딩’이라고 합니다. 단어를 벡터라는 수학적 구조로 변환해 컴퓨터가 처리할 수 있도록 만드는 핵심 기술이죠. 임베딩은 단어를 숫자로 바꾸는 것을 넘어 단어 간 의미적 관계와 맥락을 수학적으로 반영하는 것이 특징입니다. 예를 들어 강아지와 고양이는 서로 의미가 비슷하므로 임베딩 벡터 공간에서도 가까운 위치에 놓이며, 반대로 강아지와 자동차는 멀리 떨어져 있게 됩니다.

쉽게 사용할 수 있는 임베딩은 어떤 말뭉치에 존재하는 단어들에 각각의 인덱스를 부여해 각 문장에 사용된 단어들의 횟수를 기재하고, 사용되지 않은 단어에는 0을 부여하는 벡터를 생성하는 방식이었습니다. 이러한 접근법이 바로 ‘Bag of Words’입니다. 단어의 빈도를 벡터로 표현함으로써 문서를 단순한 수치적 배열로 전환하는 방식입니다. 말뭉치에서 특정 단어가 몇 번 등장했는지를 나타내는 행렬을 생성하고, 이를 통해 단어 간 상관성을 계산할 수 있습니다. 하지만 이 과정에서 가장 자주 등장하는 단어가 the, is, a 같은 기능어라는 문제가 발견되었습니다. 이러한 단어들은 문장의 구조를 형성하는 데 중요하지만, 말뭉치의 실제 의미를 파악하는 데는 큰 도움이 되지 않았습니다. 이를 해결하기 위해 불용어 처리라는 단계를 도입해 특정 단어를 제외함으로써 임베딩 결과의 유의미성을 높였습니다. 그러나 여전히 이 방법은 단어의 순서나 문맥을 반영하지 못한다는 한계를 지니고 있었습니다.

이러한 한계를 극복하기 위해 ‘Word2Vec(워드투벡)’나 ‘GloVe(글로브)’ 같은 임베딩 기법이 등장했습니다. 벡터와 행렬 같은 수학적 도구를 본격적으로 활용하는 방법입니다. Word2Vec은 단어의 주변 맥락을 학습하여 각 단어를 고차원 벡터로 표현합니다. 이를 통해 ‘강아지’와 ‘고양이’ 같은 의미상으로 유사한 단어들이 벡터 공간에서 가까운 위치를 갖게 됩니다. GloVe는 전체 말뭉치의 통계 정보를 기반으로 단어 간 관계를 벡터 공간에서 모델링합니다. 여기서 행렬 분해와 같은 기법이 사용됩니다.

현재까지의 작업은 언어를 수학적으로 처리하기 위한 준비 단계에 해당합니다.

사람의 뇌에서도 단어가 특정 위치에 저장된다고 알려져 있습니다. 하지만 모든 사람의 뇌가 동일한 위치에 동일한 단어를 저장하는 것은 아닙니다. 마찬가지로 자연어처리 모델에서도 단어가 벡터 공간에서 어떤 위치에 저장되느냐는 모델의 구조와 학습 방식에 따라 달라집니다.

예를 들어, ‘해양생물’과 ‘바다’라는 단어는 물리적으로 가까운 위치에 있을 가능성이 높습니다. 그러나 ‘해양생물’과 ‘포유류’는 물리적으로 멀리 떨어져 있을 수 있어도, 의미적으로는 가까울 수 있습니다. 이러한 관계를 제대로 이해하고 반영하기 위해서는 벡터 간 유사성을 계산하고 평가할 수 있는 다양한 기법이 필요합니다.

벡터 연산은 단어 간 유사도를 계산하는 데 핵심적 역할을 합니다. 각 단어는 고차원 벡터 공간에서 특정 위치를 가지며, 벡터 간 연산을 통해 단어 간의 의미적 관계를 정량적으로 파악할 수 있습니다. 예를 들어, 두 벡터 사이의 코사인 유사도(Cosine Similarity)는 단어 간 각도 차이를 계산해 유사성을 측정합니다. 이 방식은 단어의 크기(빈도)가 아니라 방향(의미적 관계)에 초점을 맞추기 때문에, 보다 정밀하게 단어 간의 문맥적 유사성을 평가할 수 있습니다. 유클리드 거리(Euclidean Distance)를 사용해 두 벡터 간의 물리적 거리를 계산하는 방법도 있습니다.

정경호 한국삼육고 교사
정경호 한국삼육고 교사
이러한 수학적 연산은 더 복잡한 언어 구조를 모델링하는 데도 활용됩니다. 특정 문맥에서 ‘온도’와 ‘날씨’라는 단어는 높은 유사도를 보일 수 있지만, 동일한 문맥에서 ‘온도’와 ‘시간’은 상대적으로 낮은 유사도를 지닐 수 있습니다. 이를 실현하기 위해 행렬 분해(Matrix Factorization) 기법이나 SVD(Singular Value Decomposition) 같은 수학적 도구가 사용됩니다. 행렬 분해는 거대한 단어-문서 행렬에서 주요 차원을 추출하여 단어 간의 패턴과 관계를 부각하는 데 효과적입니다. 이러한 과정은 언어의 핵심적 의미를 유지하는 역할을 합니다. 이를 통해 생성형 인공지능은 인간의 추론과 유사한 방식으로 언어를 이해하고 활용할 수 있게 됩니다.