이번에 더 배울 것
원-핫(one-hot) 벡터는 노드가 N개일 때 길이 N의 벡터에서 자기 자리만 1이고 나머지는 0인 표현입니다. 동아리 8명이라면 민수는 (1,0,0,0,0,0,0,0)입니다. 노드를 구별하는 데는 충분하지만, 서로 다른 두 원-핫 벡터의 내적은 항상 0이라 코사인 유사도도 항상 0입니다. 민수와 지아가 친한지, 민수와 보라가 먼 사이인지 벡터만 봐서는 알 수 없습니다.
임베딩(embedding)은 노드 수보다 훨씬 작은 d차원(보통 수십~수백)의 밀집(dense) 벡터로, 모든 칸이 실수 값을 가집니다. 학습을 통해 그래프에서 자주 함께 나타나는 노드끼리 방향이 비슷해지도록 값을 정하므로, 코사인 유사도가 관계의 가까움을 반영합니다. 노드 100만 개를 128차원으로 표현하면 표는 100만×128개의 수가 되고, 각 노드는 128개의 수로 다른 모든 노드와 비교됩니다.
대신 임베딩은 학습이 필요하고, 값 하나하나에는 사람이 읽을 수 있는 의미가 없습니다. 새 노드가 생기면 원-핫은 차원을 하나 늘리기만 하면 되지만, DeepWalk 같은 임베딩은 그 노드의 벡터를 새로 학습해야 합니다. 그래서 노드 특징으로 새 노드의 벡터를 계산하는 GraphSAGE 같은 방법이 나왔고, 이어지는 심화 수업에서 다룹니다.
작은 예제로 따라가기
원-핫: 세 명만 남겨 민수=(1,0,0), 지아=(0,1,0)이라 하면 내적 0, 코사인 유사도 0입니다. 민수를 누구와 비교해도 0입니다.
임베딩(2차원, 가상 값): 민수=(0.9, 0.1), 지아=(0.8, 0.3), 도윤=(−0.7, 0.6). cos(민수, 지아) = 0.75/(0.906×0.854) ≈ 0.97입니다.
cos(민수, 도윤) = (−0.63+0.06)/(0.906×0.922) ≈ −0.68로, 다른 무리의 도윤은 반대쪽 방향에 놓입니다.
같은 두 쌍을 두 표현으로 비교하기
민수–지아(같은 무리)와 민수–도윤(다른 무리)의 코사인 유사도가 원-핫과 임베딩에서 각각 어떻게 나올지 먼저 예상해 보세요.
서로 다른 원-핫 벡터는 1이 놓인 자리가 달라 내적이 항상 0입니다. 친한 사이도 표현되지 않습니다.
학습을 시작하면 새 문제를 직접 풀고 확인 퀴즈를 마친 뒤 선택한 본과정 회차로 돌아갑니다.