📏

벡터란 무엇인가

방향과 크기를 가진 숫자 묶음 — 차원이 올라가면 의미를 담는다

벡터는 숫자를 순서대로 나열한 것이다.

2D 벡터 — 평면 위의 화살표

[3, 4]는 x 방향으로 3, y 방향으로 4 이동하는 화살표다. 지도에서 "동쪽 3km, 북쪽 4km"라고 말하는 것과 같다.

두 벡터 사이의 거리를 구하면 "얼마나 멀리 있는가"를 알 수 있고, 각도를 구하면 "얼마나 비슷한 방향인가"를 알 수 있다. 이 각도 기반 유사도가 코사인 유사도다.

3D 벡터 — 공간 속의 점

[3, 4, 2]는 3차원 공간의 점이다. x, y에 z축(높이)이 추가됐을 뿐, 거리와 각도 계산은 2D와 같다.

여기까지는 사람이 직접 눈으로 볼 수 있다. 2D는 종이 위에, 3D는 Three.js 같은 도구로 회전시키면서 볼 수 있다.

고차원 벡터 — 의미의 공간

[0.023, -0.15, 0.41, ..., -0.33] — 숫자가 1536개. 이건 더 이상 눈으로 볼 수 없다.

근데 수학은 변하지 않는다. 2D에서 두 점 사이 거리를 구하는 공식이 1536D에서도 그대로 작동한다. 차원이 늘어난 것뿐이지, "가까운 건 비슷하고 먼 건 다르다"는 원리는 같다.

AI에서 임베딩이 1536차원인 이유는 단순하다 — 2~3차원으로는 "고양이"와 "강아지"가 비슷하다는 정도만 표현 가능하고, "페르시안 고양이는 고급스럽고 길고양이는 거칠다" 같은 뉘앙스를 담으려면 차원이 많이 필요하다.

고차원을 시각화하는 방법

1536차원을 직접 볼 순 없지만, 2D/3D로 "압축"해서 보는 방법이 있다.

t-SNE: 가까운 점은 가깝게, 먼 점은 멀게 유지하면서 2D로 투영한다. 클러스터(덩어리) 구조를 파악하기 좋다.

UMAP: t-SNE보다 빠르고, 전체 구조를 더 잘 보존한다. 대량 데이터에 적합.

PCA: 가장 정보량이 많은 축 2~3개만 남기고 나머지를 버린다. 가장 빠르지만 정보 손실이 크다.

이 압축 시각화에서 "비슷한 이미지끼리 뭉쳐 있다"가 보이면, 임베딩이 제대로 작동하고 있다는 증거다.

왜 추천시스템에 중요한가

추천시스템의 거의 모든 기법은 결국 "유저 벡터와 아이템 벡터 사이의 거리를 구하는 것"이다. 벡터를 이해하면 Matrix Factorization, Two-Tower, 임베딩 기반 검색 전부가 같은 원리 위에 있다는 게 보인다.

2D 벡터 — 인터랙티브

화살표 끝(●)을 드래그해서 벡터를 움직여보세요. 코사인 유사도가 실시간으로 변합니다.

A = [3, 4]
B = [4, 1]
코사인 유사도 0.00

3D 벡터 — 회전해서 보기

마우스 드래그로 공간을 회전, 스크롤로 줌. 3개 벡터의 관계를 3차원에서 확인할 수 있습니다.

고양이 [0.8, 0.6, 0.3]
강아지 [0.7, 0.5, 0.4]
자동차 [-0.3, 0.9, -0.2]
고양이↔강아지: 0.97 | 고양이↔자동차: 0.12

고차원 → 2D 압축 (시뮬레이션)

1536차원 벡터를 2D로 압축하면 이런 느낌입니다. 의미가 비슷한 단어끼리 뭉칩니다.

동물
탈것
음식
감정

동작 원리

1

숫자를 나열하면 벡터 (예: [3, 4])

2

차원 = 숫자의 개수 (2D, 3D, 1536D...)

3

벡터 간 거리/각도로 유사도 측정 (코사인 유사도)

4

고차원은 t-SNE/UMAP으로 2D/3D에 압축 시각화

장점

  • 수학이 차원에 관계없이 동일하게 작동 — 2D 이해하면 1536D도 같은 원리
  • 코사인 유사도 하나로 텍스트, 이미지, 유저 취향까지 비교 가능

단점

  • 차원이 높을수록 직관적 이해 불가능 — 시각화는 항상 정보 손실 수반
  • 차원의 저주 — 고차원에서는 모든 점이 비슷하게 먼 거리에 위치하는 현상

사용 사례

2D/3D — 물리 시뮬레이션, 게임, 지도 고차원 — AI 임베딩, 추천, 검색 시각화 — 임베딩 품질 검증, 클러스터 분석