AI VIDEO BRIEFING
임베딩이란 무엇인가 — 원-핫 벡터부터 Word2Vec, 토크나이저까지 쉽게 이해하기
이미지와 소리는 본래 숫자지만 글은 그렇지 않다. 컴퓨터가 단어의 의미를 숫자로 다루게 된 과정을 원-핫 벡터, Word2Vec, 바이트 페어 인코딩까지 따라가며 풀어봤다.

핵심 메시지
쉽게 이해하기
강연은 컴퓨터가 숫자밖에 다루지 못한다는 사실에서 출발한다. 더 정확히는 전기가 통했는지 아닌지뿐이고, 우리가 그 조합을 숫자라고 부르기로 했을 뿐이다. 그래서 그림이든 소리든 글이든 결국 숫자로 바꿔야 한다. 문제는 그림과 소리는 태생적으로 숫자라는 점이다. 고양이 사진은 픽셀마다 빨강·초록·파랑 값을 갖고, 그 값들의 차이가 작으면 비슷한 색이라는 의미가 자연스럽게 따라온다. 음성도 마이크가 받은 압력 변화가 전기 신호를 거쳐 숫자로 기록된다.
글은 다르다. 유니코드에서 '나'는 십진수로 45208번이고 그 부근에는 '난'과 '남'이 있다. 그렇다고 '난'이 '나'와 '남' 사이의 의미를 갖는 것은 아니다. 단어에 번호를 아무리 잘 붙여도 번호 차이가 의미의 거리를 나타내지 못한다는 뜻이다. 그래서 위치 자체가 의미를 갖도록 한 자리만 1이고 나머지는 전부 0인 원-핫 벡터를 쓴다. 하지만 이렇게 하면 단어가 10만 개일 때 벡터 길이도 10만이 되고, 짧은 문장 하나를 표현하는 데 수십만 개의 숫자가 필요해진다. 게다가 모든 단어가 서로 완전히 독립적이라 어떤 것이 더 가깝다고 말할 수도 없다.
여기서 임베딩의 정의가 나온다. 듬성듬성한 원-핫 벡터를 의미가 담긴 조밀한 벡터로 옮기는 것이다. 강연자는 이 옮김을 지구 위의 한 점이 지도 위의 한 점으로 대응되는 일에 빗댄다. 둘이 같을 이유가 없는데도 같게 만든 것은 중간에 어떤 행렬을 곱했기 때문이다. 의미 공간이 몇 차원인지는 알 수 없지만 적어도 2차원이나 3차원은 아닐 것이고, 아버지와 아빠는 가깝게 그렇지 않은 단어들은 멀게 놓아 주는 그 행렬을 찾아내면 임베딩을 해낸 것이다. 사람이 계산하지 않고 기계가 스스로 찾게 하는 것이 곧 딥러닝이다.
그렇다면 정답을 무엇으로 삼을까. 사람이 단어마다 의미를 숫자로 찍어 줄 수는 없다. 2010년대 초에 등장한 Word2Vec은 영리한 우회로를 찾았다. 문장에서 단어 하나를 뽑아 앞뒤 몇 개를 입력으로 주고 가운데 들어갈 단어를 맞히게 한 것이다. 인터넷에 널린 문장만 모으면 학습 데이터가 얼마든지 생긴다. 그렇게 학습한 결과는 놀라웠다. 한국에서 서울을 빼고 도쿄를 더하면 일본이 나오고, 상징적인 예로는 킹에서 맨을 빼고 우먼을 더하면 퀸이 나왔다. 강연자는 이를 한국과 일본 사이의 거리가 서울과 도쿄 사이의 거리와 비슷하게 배치된 것으로 이해하면 쉽다고 설명한다. 다만 당시 성능은 실용에 쓰기엔 아직 갈 길이 멀었다.
남은 난제는 글을 어떻게 조각내느냐였다. 어미를 잘라 어근을 찾는 어간 추출과 기본형으로 되돌리는 표제어 추출을 거치면 '먹었냐'와 '먹었다'를 하나로 묶을 수 있지만, 완벽한 변환표를 갖는 것은 불가능하고 신조어와 고유명사는 계속 쏟아진다. 강연자는 2018년 무렵 번역기가 처음 보는 사람 이름을 아는 조각으로 쪼개 엉뚱하게 번역했던 제보 경험을 예로 든다. 해결책이 바이트 페어 인코딩이다. 세상의 단어는 무한하지만 글자는 유한하다는 점에 착안해, 글자 단위에서 시작해 함께 자주 등장하는 조각을 빈도순으로 묶어 나간다. 그러면 규칙은 숫자를 세는 것뿐인데도 단어 비슷한 단위가 저절로 만들어지고, 최악의 경우 글자 단위로 쪼개지므로 모르는 단어가 원천적으로 생기지 않는다.
주요 인사이트
- 임베딩의 본질을 '의미를 숫자로 바꾸는 마법'이 아니라 '한 벡터 공간에서 다른 벡터 공간으로 보내는 행렬을 찾는 일'로 정의한 대목이 이 강연의 뼈대다. 어렵게 느껴지던 개념이 선형대수의 익숙한 연산으로 내려앉는다.
- 정답 데이터가 없는 문제를 데이터 만드는 방식을 바꿔 푸는 것이 Word2Vec의 진짜 발명이다. 의미를 라벨로 달 수 없으니, 주변 단어로 가운데 단어를 맞히는 문제로 바꿔 인터넷의 모든 문장을 학습 데이터로 만들었다.
- 언어학적으로 정교한 접근이 오히려 확장의 발목을 잡았다는 점이 역설적이다. 100개가 넘는 언어를 지원하려면 언어마다 전문가를 초빙해 규칙을 짤 수 없으니, 빈도만 세는 단순한 통계 방식이 답이 됐다.
- 단어 조각 앞에 붙는 연결 표시는 그 조각이 단독으로 쓰이는 단어가 아니라 앞 조각에 이어진 부분임을 알려 준다. 덕분에 처음 보는 이름도 엉뚱한 뜻으로 해석되지 않고 하나의 덩어리로 묶인다.
- 토크나이저 설계가 사용자 체감으로 직결된다는 지적이 실용적이다. 단어장에 한글 토큰 자리가 부족하면 한 글자를 두세 토큰으로 표현하게 되어 생성 속도가 느려지고, 단어장이 커지자 속도가 개선됐다.
자주 묻는 질문
왜 그림과 소리는 쉬운데 글은 숫자로 바꾸기 어렵나요?
그림은 픽셀마다 빨강·초록·파랑 값을 갖고 소리는 압력 변화가 그대로 기록되므로 태생적으로 숫자입니다. 값의 차이가 작으면 비슷하다는 의미도 자연스럽게 따라옵니다. 반면 글자에 붙인 번호는 차이에 아무 의미가 없어, 번호가 가깝다고 뜻이 비슷하지 않습니다.
원-핫 벡터의 문제는 무엇인가요?
위치가 의미를 갖게 하려고 한 자리만 1이고 나머지는 0으로 두는 방식인데, 단어가 10만 개면 벡터 길이도 10만이 됩니다. 단어 세 개짜리 짧은 문장 하나에 숫자 30만 개가 필요해지고, 모든 단어가 서로 독립적이라 어느 것이 더 가깝다고 말할 수도 없습니다.
Word2Vec은 정답 없이 어떻게 학습했나요?
문장에서 단어 하나를 가리고 그 앞뒤 단어들을 입력으로 준 다음, 가운데 들어갈 단어를 맞히게 했습니다. 사람이 의미를 라벨로 달아 줄 필요 없이 인터넷에 있는 문장만 모으면 학습 데이터가 무한히 만들어집니다.
바이트 페어 인코딩은 어떤 문제를 해결했나요?
세상의 단어는 계속 늘어나 단어장에 다 담을 수 없고, 담기지 못한 단어는 모르는 단어가 됩니다. 바이트 페어 인코딩은 유한한 글자 단위에서 출발해 자주 함께 등장하는 조각을 빈도순으로 묶어 나갑니다. 숫자를 세는 규칙만으로 단어에 가까운 단위가 만들어지고, 최악의 경우에도 글자로 쪼개지므로 모르는 단어가 생기지 않습니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗