G·Graph Daily Lab 전체 140회
추가 31 / 40 · 보충 · 약 12분

원-핫 벡터와 임베딩은 무엇이 다를까

노드를 숫자로 바꾸는 가장 단순한 방법은 원-핫 벡터입니다. 왜 그것만으로는 ‘비슷함’을 표현할 수 없는지 코사인 유사도로 확인합니다.

그래프 표현 학습

배운 뒤 돌아올 회차

DAY 76에서 노드 임베딩이 가까운 노드를 가까운 벡터로 만든다고 했는데, 출발점인 원-핫 표현과 비교하면 임베딩이 왜 필요한지 분명해집니다.

시작하면 직접 풀기와 퀴즈 기록이 저장됩니다. 본과정 100회 진도와는 별도입니다.

이번에 더 배울 것

원-핫(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

원-핫: 세 명만 남겨 민수=(1,0,0), 지아=(0,1,0)이라 하면 내적 0, 코사인 유사도 0입니다. 민수를 누구와 비교해도 0입니다.

2

임베딩(2차원, 가상 값): 민수=(0.9, 0.1), 지아=(0.8, 0.3), 도윤=(−0.7, 0.6). cos(민수, 지아) = 0.75/(0.906×0.854) ≈ 0.97입니다.

3

cos(민수, 도윤) = (−0.63+0.06)/(0.906×0.922) ≈ −0.68로, 다른 무리의 도윤은 반대쪽 방향에 놓입니다.

COMPARE & EXPLAIN

같은 두 쌍을 두 표현으로 비교하기

민수–지아(같은 무리)와 민수–도윤(다른 무리)의 코사인 유사도가 원-핫과 임베딩에서 각각 어떻게 나올지 먼저 예상해 보세요.

코사인 유사도 0

서로 다른 원-핫 벡터는 1이 놓인 자리가 달라 내적이 항상 0입니다. 친한 사이도 표현되지 않습니다.

원-핫은 노드를 구별할 뿐 비슷함을 담지 못하고, 학습된 밀집 임베딩은 코사인 유사도로 그래프 속 가까움을 표현합니다.

학습을 시작하면 새 문제를 직접 풀고 확인 퀴즈를 마친 뒤 선택한 본과정 회차로 돌아갑니다.