임베딩은 단어의 의미를 어떻게 숫자로 표현하는가
임베딩은 단어의 의미를 어떻게 숫자로 표현하는가
인공지능은 사람이 사용하는 단어를 그대로 이해하지 못한다. 컴퓨터는 글자와 문장을 수치로 변환해야 계산할 수 있기 때문이다. 언어 모델은 입력된 문장을 먼저 토큰으로 나눈 뒤, 각 토큰을 일정한 길이의 숫자 목록으로 바꾼다. 이처럼 단어나 토큰의 의미를 여러 개의 숫자로 표현한 것을 임베딩이라고 한다.
임베딩은 단어에 단순한 번호를 붙이는 것과 다르다. 예를 들어 ‘사과’를 1번, ‘바나나’를 2번, ‘자동차’를 3번으로 정하면 컴퓨터는 각 단어를 구분할 수는 있지만 의미의 관계까지 알기는 어렵다. 숫자 1과 2가 가깝다고 해서 사과와 바나나가 비슷한 의미라는 사실이 자동으로 표현되는 것은 아니다. 임베딩은 이러한 한계를 보완하기 위해 단어를 하나의 숫자가 아니라 여러 차원의 숫자 벡터로 나타낸다.
벡터란 일정한 순서로 배열된 숫자들의 집합이다. 하나의 단어가 수십 개 또는 수백 개 이상의 숫자로 표현될 수 있으며, 각 숫자는 단어가 가진 여러 특징을 나누어 반영한다. 사람이 각 숫자의 의미를 정확히 이름 붙이기는 어렵지만, 전체 벡터를 비교하면 단어 사이의 관계를 계산할 수 있다.
예를 들어 ‘고양이’와 ‘강아지’는 모두 동물이며 사람과 함께 생활하는 경우가 많다. 반면 ‘자동차’는 이동 수단에 해당한다. 학습이 잘 이루어진 임베딩 공간에서는 고양이와 강아지의 벡터가 비교적 가까운 위치에 놓이고, 자동차의 벡터는 더 먼 위치에 놓일 가능성이 높다. 이 거리는 단어가 사용되는 문맥이 얼마나 비슷한지를 수치로 나타낸 결과라고 볼 수 있다.
임베딩은 단어의 사전적 정의를 직접 입력해 만드는 것이 아니다. 언어 모델은 많은 문장을 학습하면서 어떤 단어가 어떤 단어와 함께 등장하는지 살펴본다. ‘고양이가 잠을 잔다’, ‘강아지가 잠을 잔다’처럼 비슷한 문장에서 사용되는 단어는 서로 비슷한 위치를 갖도록 조정된다. 반대로 함께 등장하는 문맥이 크게 다르면 벡터의 위치도 멀어질 수 있다.
이러한 원리는 비슷한 문맥에서 사용되는 단어는 비슷한 의미를 가질 가능성이 높다는 생각에 기반한다. 예를 들어 ‘의사’와 ‘병원’, ‘교사’와 ‘학교’, ‘비’와 ‘우산’처럼 자주 함께 나타나는 단어는 의미적으로 관련성이 있다. 모델은 수많은 문장에서 반복되는 관계를 학습하면서 단어 사이의 연결을 숫자로 표현한다.
임베딩 공간에서는 단어 사이의 유사도를 계산할 수 있다. 두 벡터가 비슷한 방향을 가리키면 의미적으로 가까운 단어로 판단하고, 방향이 크게 다르면 관련성이 낮다고 본다. 이를 이용하면 검색어와 비슷한 문서를 찾거나, 문장의 주제를 분류하고, 사용자의 질문과 관련된 답변을 선택할 수 있다.
임베딩은 단어뿐만 아니라 문장과 문서 전체에도 적용될 수 있다. 하나의 문장을 대표하는 벡터를 만들면 표현이 다르더라도 의미가 비슷한 문장을 찾을 수 있다. 예를 들어 ‘오늘 날씨가 춥다’와 ‘기온이 많이 내려갔다’는 사용된 단어가 다르지만 비슷한 의미를 담고 있다. 문장 임베딩을 사용하면 두 문장이 가까운 벡터로 표현될 수 있다.
검색 시스템에서도 임베딩은 중요한 역할을 한다. 기존의 키워드 검색은 사용자가 입력한 단어와 문서에 포함된 단어가 일치하는지를 중심으로 결과를 찾는다. 반면 임베딩을 이용한 검색은 단어가 정확히 같지 않아도 의미가 비슷한 내용을 찾을 수 있다. 사용자가 ‘휴대전화 배터리가 빨리 닳는 이유’를 검색했을 때 ‘스마트폰 전력 소모 원인’이라는 문서를 찾아낼 수 있는 이유가 여기에 있다.
대규모 언어 모델은 고정된 임베딩만 사용하는 것이 아니라 문맥에 따라 단어의 표현을 다르게 계산한다. 예를 들어 ‘은행’이라는 단어는 돈을 맡기는 금융기관을 뜻할 수도 있고 강이나 호수의 가장자리를 의미할 수도 있다. 단어만 따로 보면 의미를 구분하기 어렵지만, ‘은행에서 돈을 찾았다’와 ‘강의 은행을 걸었다’처럼 주변 문장을 함께 보면 의미가 달라진다.
현대 언어 모델은 주변 토큰과의 관계를 분석해 같은 단어라도 문맥에 맞는 다른 벡터를 만든다. 이를 문맥적 임베딩이라고 한다. 문맥적 임베딩 덕분에 모델은 동음이의어를 구분하고, 문장 안에서 단어가 수행하는 역할을 더 정확하게 파악할 수 있다. 같은 단어가 문장마다 다른 의미로 사용되는 자연어의 특징을 수치 계산에 반영하는 것이다.
임베딩은 완벽한 의미 표현 방식은 아니다. 학습 데이터에 편향된 표현이 많으면 그 관계가 벡터에도 반영될 수 있다. 특정 직업이나 성별, 지역에 대한 고정관념이 반복적으로 등장하면 모델이 이러한 관계를 의미 있는 패턴으로 학습할 가능성이 있다. 따라서 임베딩을 사용하는 인공지능은 데이터의 품질과 편향을 함께 점검해야 한다.
또한 벡터 사이의 거리가 가깝다고 해서 두 단어가 항상 같은 의미를 갖는 것은 아니다. 서로 반대되는 단어도 비슷한 문맥에서 자주 사용되면 가까운 위치에 놓일 수 있다. ‘높다’와 ‘낮다’는 의미는 반대지만 둘 다 높이와 수준을 설명하는 문장에서 등장한다. 그러므로 임베딩의 유사도는 절대적인 의미의 동일성이 아니라 문맥과 사용 방식의 유사성을 나타낸다고 이해해야 한다.
결국 임베딩은 사람이 사용하는 단어와 문장을 인공지능이 계산할 수 있는 숫자 공간으로 옮기는 기술이다. 단어를 여러 차원의 벡터로 표현하면 의미가 비슷한 표현을 가까운 위치에 배치하고, 문맥에 따른 차이도 계산할 수 있다. 언어 모델은 이러한 임베딩을 바탕으로 문장의 관계를 분석하고, 검색과 분류, 번역과 답변 생성 같은 다양한 작업을 수행한다. 임베딩의 원리를 이해하면 인공지능이 단어의 의미를 숫자로 다루는 방식을 보다 쉽게 파악할 수 있다.