3D 랩 로드 중…
레슨 로드 중…
← AI의 작동 원리월드 1 · 4개 중 3번째 레슨모든 레슨 ↓

임베딩: 모든 토큰을 나타내는 숫자 목록
이 내용을 가르치고 있나요? 프로젝터 모드 열기
토큰 ID는 라벨일 뿐입니다. ID 4821은 ID 4822와 의미가 “가까운” 것이 아닙니다. 의미와 비슷한 패턴을 계산하려면, 유사도를 계산할 수 있는 수로 나타낸 표현이 필요합니다.
그 표현이 바로 임베딩입니다. 모든 토큰을 숫자 목록으로 나타낸 것이며, 이를 벡터라고 합니다. 벡터는 커다란 표에 들어 있습니다. 벡터의 값은 처음에는 무작위로 정해지고, 학습 중에 조정됩니다. 실제 모델은 토큰 하나마다 수백 개에서 수천 개의 수를 사용합니다.
벡터는 무엇 때문에 유용할까요? 비슷한 맥락에서 등장하는 토큰은 결국 비슷한 벡터를 갖게 됩니다. 이 아이디어는 Mikolov와 동료들이 2013년에("word2vec") 대규모로 입증했으며, 한 언어학자의 말을 떠올리게 합니다. 단어는 함께 쓰이는 단어들로 특징지어진다는 말이죠. “고양이”와 “개”는 “반려동물”, “먹이를 주다”, “수의사” 같은 단어 근처에 자주 나타나므로 벡터도 서로 가까워집니다. 하지만 “고양이”와 “기화기”는 그렇지 않습니다.
비슷한 정도 측정하기: 코사인 유사도. 두 벡터 a와 b의 코사인 유사도는 이렇게 구해.
cos = (a · b) / (|a| × |b|)
여기서 a · b는 서로 대응하는 성분끼리 곱한 값의 합이고, |a|는 각 성분을 제곱해 더한 값의 제곱근이야. 결과는 항상 −1과 1 사이야. 1은 두 벡터가 같은 방향을 가리킨다는 뜻이고, 0은 서로 직각이라는 뜻이며, −1은 반대 방향이라는 뜻이야.
각각 숫자 두 개로 이루어진 간단한 예를 보자. 설명을 위해 만든 값으로, 고양이 = (3, 4), 개 = (4, 3)이야. 내적은 3×4 + 4×3 = 24이고, 두 벡터의 길이는 모두 5야. 따라서 cos = 24 / 25 = 0.96이야. 이번에는 자동차 = (4, −3)을 보자. 고양이와의 내적은 12 − 12 = 0이므로 cos = 0이야.
300차원은 그릴 수 없습니다. 지도를 보여 주기 위해 PCA나 t-SNE 같은 방법으로 벡터를 3차원(또는 2차원)으로 줄입니다. AI Lab의 월드 “여섯 개 특성에서 점 구름으로”에서는 이런 방법이 어떻게 작동하고 거리를 어떻게 휘게 만드는지 보여 줍니다. 줄이는 과정에서는 항상 무언가가 왜곡됩니다. 지도에서 이웃처럼 보이는 두 단어가 전체 공간에서는 더 멀리 떨어져 있을 수도 있습니다.
정적 임베딩에는 한계가 있습니다. 각 토큰이 하나의 고정된 벡터를 가진다면, “은행”이라는 단어는 “강둑”과 “은행 계좌”에서 같은 벡터를 갖습니다. 하나의 벡터가 두 의미를 모두 나타내야 하는 것이죠. 이 실습의 뒤쪽(월드 2)에서는 어텐션을 사용하면 토큰의 숫자가 주변 단어에 따라 달라질 수 있다는 것을 배우게 됩니다.
두 단어 벡터가 정확히 같은 방향을 가리킵니다. 코사인 유사도는 얼마일까요?
단어 벡터의 3D 지도에서 두 단어가 전체 공간에서는 멀리 떨어져 있는데도 서로 가까이 보일 수 있는 이유는 무엇일까요?
“bank”에 하나의 고정된 벡터를 사용하는 것이 문제가 되는 이유는 무엇일까요?
고양이 = (3, 4), 개 = (4, 3)일 때 코사인 유사도는 얼마인가요?