[AI][용어] 임베딩(Embedding)이란? AI가 단어를 '숫자'로 이해하는 법

반응형

여러분 혹시 AI가 '사과'라는 단어를 어떻게 알아듣는지 생각해 본 적 있으신가요?

모두가 잘 아시다시피 컴퓨터는 글자를 모릅니다.

아는 것은 0과 1뿐이며 이것으로 모든 명령어를 처리합니다.

그런데 우리는 요즘 AI에게 글을 묻고, AI는 글로 답합니다.

그렇다면 AI는 ‘사과’라는 글자를 어떻게 숫자로 바꾸고, 그 숫자에서 의미를 다룰 수 있을까요?

AI는 먼저 글자를 토큰이라는 작은 조각으로 나누고, 그 토큰에 번호를 붙입니다. 그리고 그 번호를 의미가 담긴 숫자 묶음으로 바꾸는데, 이 과정이 바로 오늘 다룰 임베딩(Embedding)입니다.

그림 1. 임베딩

이름은 낯설지만, 원리는 생각보다 단순합니다.

그냥 간단히 단어를 숫자로 번역하는 작업'이라고 보면 됩니다. 최근에는 그저 단어를 숫자로 변환하는 것 뿐만 아니라 의미까지 담고 있습니다.


1. 단어를 숫자로 바꾸기

가장 단순하게 생각하면, 단어마다 번호를 붙이면 됩니다.

사과는 1번, 바나나는 2번, 자동차는 3번, 기차는 4번. 이런 식으로 번호를 붙이면 컴퓨터는 쉽게 단어가 무엇인지 알 수 있습니다.

그림 2. 번호를 붙이면 컴퓨터는 쉽게 단어가 무엇인지 알 수 있음.

그런데 이 방법에는 큰 문제가 있습니다. 각각 단어에 번호를 부여하면 컴퓨터는 각 단어에 대해서는 알 수 있지만, 이 번호만으로는 단어들 사이의 관계를 전혀 알 수 없습니다.

예를 들어 앞에서 예를 들었듯이 사과가 1이라고 하고 바나나가 2라고 할 때, 사과와 바나나가 둘 다 과일이라는 사실을, 숫자 1과 2는 말해주지 못합니다.

예를 들어 사과가 1번, 바나나가 2번, 자동차가 3번이라면, 숫자만 봤을 때 사과와 바나나는 1만큼 차이 나고, 바나나와 자동차도 1만큼 차이 납니다.

하지만 바나나와 자동차가 사과와 바나나만큼 의미가 비슷한 것은 아닙니다.

단순한 번호는 단어의 의미나 관계를 알려주지 못합니다.

그림 3. 단순히 번호만 붙이면 컴퓨터는 단어의 관계와 의미를 이해하지 못함.

마찬가지로 숫자 3인 자동차와 숫자 4인 기차가 둘 다 탈 것이라는 것도 말해주지 못합니다.

이렇게 되면 AI가 의미를 다룰 수 없습니다.

그래서 임베딩은 단어를 하나의 번호가 아니라, 여러 숫자의 묶음인 벡터로 바꿉니다.

이 묶음 안에 단어의 의미가 여러 각도로 담깁니다.

그림 4. 단어를 여러 숫자의 묶음인 벡터로 바꿈.


2. 의미를 좌표로 나타내기

이해를 돕기 위해 아주 단순하게 줄여서 설명해 보도록 하겠습니다.

실제 임베딩의 숫자 축은 사람이 보기 좋게 ‘과일 축’, ‘탈것 축’처럼 깔끔하게 나뉘지는 않습니다.

다만 이해를 돕기 위해 아주 단순하게 줄여서, 단어를 딱 두 개의 숫자로 표현한다고 해봅시다.

하나는 과일, 다른 하나는 탈것이라고 정의해 보겠습니다.

  • 사과 → (과일 0.9, 탈것 0.0)
  • 바나나 → (과일 0.9, 탈것 0.1)
  • 포도 → (과일 0.8, 탈것 0.0)
  • 자동차 → (과일 0.0, 탈것 0.9)
  • 기차 → (과일 0.0, 탈것 0.9)

이렇게 두면, 사과·바나나·포도는 과일 숫자가 서로 비슷합니다. 자동차와 기차도 탈 것 숫자가 가깝습니다.

반대로 과일과 탈것은 멀리 떨어져 있습니다.

이를 이용해서 숫자만 보고도 사과와 포도는 비슷한 부류, 자동차는 다른 부류라는 걸 알 수 있습니다.

이렇게 하면 한 번도 비교한 적 없는 단어끼리도 어디에 더 가까운지 알 수 있습니다.

예를 들어 딸기라는 단어가 (과일 0.85, 탈것 0.0) 근처에 놓이면, AI는 누가 알려주지 않아도 딸기는 사과·포도 쪽과 더 가깝구나를 알 수 있습니다.

그림 5. 좌표로 의미가 가까운지 확인 가능

실제 AI는 숫자 두 개가 아니라 수백, 수천 개를 씁니다.

그리고 그 수많은 숫자 축에 색깔, 크기, 쓰임새, 감정 같은 의미가 조금씩 나눠 담깁니다.

그래서 임베딩을 의미의 좌표라고 부르기도 합니다. 비슷한 뜻의 단어는 이 좌표 공간에서 서로 가까이 모입니다.

예를 들어 이런 단어들이 각자 끼리끼리 뭉칩니다.

  • 기쁘다 · 즐겁다 · 행복하다 → 감정
  • 서울 · 도쿄 · 파리 → 도시
  • 개 · 고양이 · 토끼 → 동물 

그림 6. 비슷한 뜻의 단어는 좌표 공간에서 서로 가까움.

여기서 한 가지 더 생각해 볼 점이 있습니다. 같은 단어라도 문장에 따라 의미가 달라질 수 있다는 점입니다.

예를 들어 ‘사과’라는 단어를 봅시다.

“나는 사과를 먹었다.”에서 사과는 과일입니다. 하지만 “친구에게 사과했다.”에서 사과는 미안하다는 뜻입니다.

글자만 보면 둘 다 ‘사과’지만, 의미는 전혀 다릅니다.

그래서 현대 AI는 단어 하나만 따로 보는 것이 아니라, 그 단어가 어떤 문장 안에서 쓰였는지도 함께 봅니다.

즉, 임베딩은 단어 자체의 의미뿐 아니라 문맥 속 의미를 다루는 출발점이 됩니다.

그림 7. 같은 글자라도 단어의 의미에 따라 좌표가 달라짐.


3. 다양한 계산이 가능

임베딩의 가장 큰 장점은 바로 단어가 숫자가 되면, 단어끼리 계산을 할 수 있다는 점입니다.

가장 유명한 예가 이것입니다.

왕 − 남자 + 여자 ≈ 여왕

말로 풀어보면 이라는 좌표에서 남자라는 의미를 빼고 여자를 더했더니, 여왕의 좌표가 나왔다는 뜻입니다.

단어의 의미가 숫자에 잘 담겨 있기 때문에, 의미의 덧셈과 뺄셈이 가능해진 것입니다.

물론 이것이 언제나 수학 공식처럼 정확하게 맞는다는 뜻은 아닙니다.

중요한 것은 임베딩이 단어 사이의 의미 관계를 숫자 공간 안에 어느 정도 담아낼 수 있다는 점입니다.

그림 8. 임베딩은 단어끼리 계산이 가능함.

이외에도 다양하게 가능합니다.

예를들어,

  • 파리 − 프랑스 + 일본 ≈ 도쿄 (수도 관계)
  • 걷다 − 현재 + 과거 ≈ 걸었다 (시제 관계)

사람이 규칙을 일일이 알려준 것이 아니라, 방대한 글을 학습하는 과정에서, 단어들의 의미 관계가 자연스럽게 좌표에 새겨집니다.

우리가 하는 검색, 번역, 추천에도 임베딩은 중요한 역할을 합니다.


4. 사실 우리는 매일 임베딩을 쓰고 있다

임베딩은 연구실에서만 쓰는 내용이 아닙니다. 우리가 매일 쓰는 서비스 곳곳에서 이미 쓰이고 있습니다.

예를들어서

쇼핑몰에서 이 상품과 비슷한 추천이 뜨는 것

유튜브가 방금 본 영상과 비슷한 걸 이어서 보여주는 것

검색창에 노트북 추천을 쳤는데 컴퓨터 추천 글도 같이 나오는 것

이 모든 것들이 비슷한 것끼리는 좌표가 가깝다는 임베딩의 원리를 쓰고 있습니다.

그림 9. 일상 생활에서 임베딩을 자주 사용함.

예를 들어 검색창에 아이랑 갈 만한 곳이라고 쳤다고 해봅시다.

예전 방식이라면 반드시 ‘아이’, ‘갈’, ‘곳’ 같은 단어가 정확히 들어간 글을 찾으려고 했을 것입니다.

하지만 임베딩을 활용하면 “가족 나들이”, “주말 체험”, “어린이 박물관”, “키즈카페 추천”처럼 표현은 달라도 의미가 가까운 내용까지 함께 찾을 수 있습니다.

단어가 완전히 같지 않아도, 의미가 가까우면 가까운 좌표에 놓이기 때문입니다.

그림 10. 대표적인 임베딩 사용 예.

또한 우리가 앞서 다룬 다른 개념들도 사실 임베딩 위에서 작동합니다.

AI가 다음 단어를 확률로 고를 때도, 문장의 맥락을 파악할 때도, 그 출발점에는 항상 단어를 의미 있는 숫자로 바꾸는 이 임베딩이 있습니다.

즉, 임베딩은 AI가 세상을 이해하는 첫 번째 관문입니다.

글자를 숫자로 바꾸되, 그 숫자에 의미까지 담아내는 것.

이 덕분에 AI는 단어를 단순한 기호가 아니라 뜻을 가진 무언가로 다룰 수 있게 됩니다.


5. 간단한 요약

임베딩은 단어나 글자 조각을 의미가 담긴 숫자 묶음, 즉 벡터로 바꾸는 과정입니다.

비슷한 의미는 가까운 위치에 놓이고, 덕분에 AI는 단어를 단순한 글자가 아니라 서로 관계를 가진 의미로 다룰 수 있습니다.

반응형

Designed by JB FACTORY