이는 그래프 알고리즘에 관한 5부작 시리즈 중 5부입니다.
- 르브론 제임스가 당신의 추천을 이끌어서는 안 되는 이유
- 카페테리아 파벌에서 그래프 커뮤니티까지: 루뱅 알고리즘 이해
- 누구의 서명이 정말 중요한가요? 연감 서명을 통한 PageRank 이해
- 가장 빠른 탈출구 찾기: Dijkstra 알고리즘이 최단 경로를 찾는 방법
- 기계에 임베딩이 필요한 이유: 그래프 구조를 기능으로 전환
축하해요. 우리는 해냈습니다. 우리는 직관적인 시각적 요소와 이해하기 쉬운 은유를 사용하여 네 가지 알고리즘을 통해 작업했습니다. 그러나 우리는 마침내 장애물에 부딪혔습니다. 이제 임베딩에 대해 논의해야 하는데 은유가 부족합니다.
아시다시피 그래프는 놀랍도록 직관적입니다. 노드와 관계의 그림을 한눈에 보고 클러스터, 허브 및 패턴을 즉시 찾아낼 수 있습니다. 하지만 그와 똑같은 시각적 매력이 바로 기계에게 그래프를 어색하게 만드는 이유입니다.
기계는 그림을 '보는' 것이 아니라 숫자를 처리합니다. 그리고 원시 형태의 그래프는 전혀 숫자가 아닙니다.
따라서 이상적으로는 그래프를 모델이 처리할 수 있는 행렬로 변환할 수 있는 방법이 있습니다.
그리고 실제로, 우리는 이미 인접 행렬을 가지고 있습니다. 각 행과 열은 노드를 나타내고, 각 셀은 두 노드가 연결되어 있는지 또는 얼마나 강하게 연결되어 있는지를 알려주는 거대한 격자입니다.
그래프를 기계 친화적으로 만들기 위한 훌륭한 첫 번째 시도입니다. 그래프가 충분히 커져 매트릭스가 1000페이지짜리 스프레드시트에 해당하는 디지털 크기로 부풀릴 때까지 말입니다. 그리고 바로 여기서 임베딩이 빛을 발하기 시작합니다.
FastRP 내부 살펴보기
100개의 다양한 미디어 인물을 얼마나 좋아하는지에 대한 설문조사에 참여한 1,000명의 사람들을 비교하여 각 사람이 100가지 차원의 미디어 인물 선호도를 갖고 있다고 상상해 보십시오. 누가 가장 비슷한 취향을 가지고 있는지 알아보기 위해 각 설문조사를 서로 비교하는 것은 정말 시간이 많이 걸릴 것입니다.
실제로 이 사람들이 서로 얼마나 유사한지 측정하려면 이 100D 공간에 있는 1,000개 지점 모두 사이의 거리를 계산해야 하는데, 이는 계산 비용이 많이 듭니다.
대신 결과를 1,000개의 "행"(각 사람당 하나씩)과 100개의 열(각 미디어 수치당 하나씩)이 있는 행렬로 표현할 수 있습니다. 이 행렬에 100개의 행과 10개의 열이 있는 무작위로 생성된 행렬을 곱하면 각 사람의 데이터를 단 10개의 숫자로 압축하는 새로운 행렬이 생성됩니다.
이 변환은 난수를 사용하더라도 모든 사람에게 적용되는 동일한 무작위 투영 행렬이므로 사람들 간의 관계가 보존됩니다. 실제로 차원 수를 줄였음에도 불구하고 사람들 사이의 상대적인 거리는 거의 그대로 유지됩니다. 이는 임의의 숫자를 곱할 때 발생하는 임의의 변동이 모든 차원에 걸쳐 충분히 곱할 때 평균이 0이 되는 경향이 있기 때문입니다.
이 예에서는 매우 작은 숫자로 작업할 것입니다. 그래프는 위에서 본 것과 같을 것입니다!
1단계: 원-핫-랜덤 투영
먼저, 그래프의 각 노드를 숫자로 변환하는 간단한 방법이 필요합니다. 한 가지 쉬운 방법은 원-핫 벡터입니다. 노드가 3개뿐이므로 각 노드는 자체 자리에 1이 하나 있는 짧은 3자리 숫자 목록을 얻습니다. 이 목록은 행렬로도 표현될 수 있습니다.
이는 작동하지만 대부분 0이므로 매우 작거나 효율적이지 않습니다. 이를 축소하려면 난수로 구성된 작은 테이블인 난수 투영 행렬을 곱합니다.
세 개의 노드가 있으므로 이 행렬에는 세 개의 행이 필요합니다. 그리고 모든 것을 노드당 두 개의 숫자로 줄이고 싶기 때문에 두 개의 열을 사용합니다.
두 행렬을 곱한 후 각 노드는 두 개의 숫자로 표시되어 동일한 아이디어를 훨씬 더 작은 형태로 포착합니다.
그럼 행렬의 첫 번째 행에 해당하는 노드 A부터 살펴보겠습니다. 기본적으로 H의 맨 위 행에 R의 각 행을 곱하고 모든 값을 더합니다.
각 행에 대해 이 작업을 수행하면 아래와 같은 결과가 나타납니다. 재미있는 점을 발견할 수 있습니다. 이 출력은 무작위 투영 행렬과 동일합니다. 그것은 우연이 아닙니다. 원-핫 행렬의 각 행에는 단일 1이 있습니다. 이는 단순히 투영 행렬에서 해당 행을 "선택"한다는 의미입니다. 모든 0은 다른 모든 것을 지웁니다.
이 때문에 FastRP는 원-핫 행렬을 구축하거나 이러한 곱셈을 전혀 수행하지 않습니다. 추가 단계 없이 각 노드에 임의의 밀집 벡터를 직접 할당합니다. 결과는 동일합니다.
그러나 이것이 바로 알고리즘이 개념적으로 작동하는 방식이므로 이웃 집계와 같은 더 복잡한 단계로 이동하기 전에 논리를 이해하는 것이 중요합니다.
2단계: 단일 홉 네이버후드 집계
어떤 노드가 어떤 노드에 연결되어 있는지 보여주는 인접 행렬이라는 것을 사용하여 이전 그래프의 연결을 나타낼 수 있습니다. 인접 행렬을 살펴보겠습니다.
행렬에서 1은 행 노드에서 열 노드까지의 가장자리가 있음을 의미합니다. 모서리가 방향이 지정되어 있으므로 A -> B는 B -> A를 의미하지 않습니다.
이를 사용하여 1단계의 초기 임베딩과 곱하여 이웃 임베딩을 집계합니다.
아웃바운드 관계가 가장 많은 노드 A부터 시작하겠습니다. 비록 정확한 표기법이 아니더라도 최대한 명확하게 설명하기 위해 모든 것을 적어보겠습니다.
이는 [-0.6, 1.0]과 같습니다.
[0,1,1]의 각 열을 행렬의 해당 행과 곱한다는 것을 기억하세요. 이는 최종 임베딩을 얻기 위해 함께 추가해야 하는 세 개의 벡터를 제공합니다. 이것이 어떻게 3개의 숫자를 2로 줄이는지 주목하세요.
다음으로 노드 B를 해보겠습니다.
노드 C에는 아웃바운드 관계가 없으므로 아래 결과 매트릭스의 마지막 "행"에 대해 모두 0을 얻습니다.
그렇다면 여기에 정확히 무엇이 있습니까? 첫 번째 행은 노드 A의 아웃바운드 관계를 나타내고, 두 번째 행은 노드 B를 나타내고, 세 번째 행은 노드 C를 나타내는 행렬이 있습니다.
3단계: 재투영 및 가중합
노드 벡터에 인접 행렬을 곱하면 미묘한 일이 발생합니다. 많은 벡터가 동일한 이웃에서 만들어지기 때문에 동일하게 보이기 시작합니다. 이는 세 가지 다른 색상의 페인트를 동일한 두 가지 새로운 색상과 혼합하는 것과 같습니다. 곧 모든 것이 비슷한 색상으로 변합니다.
재투영은 색상이 하나의 흐릿한 혼합으로 혼합되는 것을 방지하는 방법입니다.
기본적으로 우리는 각 노드의 각 벡터를 충분히 구별하기 위해 행렬에 또 다른 임의 행렬을 곱할 것입니다.
하지만 이 새로운 무작위 행렬의 크기는 얼마나 커야 할까요? 행렬을 곱할 때 첫 번째 행렬의 열 개수는 두 번째 행렬의 행 개수와 일치해야 합니다. 따라서 새로운 무작위 행렬에는 2개의 행이 있어야 합니다. 출력을 동일한 2D 공간에 유지하려면 다음과 같이 2 × 2 무작위 투영 행렬이 필요합니다.
그런 다음 이 행렬에 2단계의 결과 행렬을 곱해야 합니다. 그렇게 하면 다음이 생성됩니다.
이는 각 노드의 단일 홉 환경에 대한 임베딩을 나타냅니다. 그런 다음 가중치 합계를 사용하여 이를 원래 임베딩 세트와 결합할 수 있습니다. 노드의 원래 위치를 나타내는 첫 번째 임베딩 세트에 가중치 1을 할당하고, 직접 이웃을 나타내는 두 번째 임베딩 세트에 가중치 0.8을 할당합니다.
이는 우리에게 다음을 제공할 것입니다:
노드 A:
노드 B:
노드 C:
그리고, 짜잔! 이제 우리는 각 노드의 ID뿐만 아니라 바로 이웃한 노드도 인코딩하는 세련된 임베딩 세트를 갖게 되었습니다.
동일한 단계를 수행하여 이 경로를 계속 따라갈 수 있지만 1홉 이웃을 보는 대신 2홉 이웃을 볼 수 있습니다. 그러나 이 시점에서는 대체로 동일한 관행이 될 것입니다. 실제로 떨어져 있는 이웃의 수는 실제로 조정할 수 있는 매개변수입니다.
원래 임무로 돌아가 보겠습니다. 그래프처럼 복잡한 것을 가져와서 더 적은 차원으로 줄이는 것입니다. 무작위 투영을 통해 우리는 각 노드의 위치에 숫자 값을 할당하고 이웃 노드의 위치를 추가로 인코딩할 수 있었습니다.
이제 이러한 간결한 표현을 통해 노드를 다른 특징 벡터처럼 처리할 수 있으므로 분류자, 회귀자 또는 클러스터링 알고리즘과 같은 표준 모델에 쉽게 연결할 수 있습니다.
- 그래프 데이터 과학
에이치시스템즈의 LogTree는 Neo4j 기반 GraphRAG 플랫폼으로, 데이터를 자동으로 지식그래프화하고 자연어 질의로 즉시 답을 제공합니다.
'GraphRAG' 카테고리의 다른 글
| 워그래프의 세계: Neo4j와 GraphRAG로 펼쳐보는 지식 전쟁 (1) | 2026.06.10 |
|---|---|
| 왜 벡터 검색은 당신의 RAG 솔루션에 효과가 없었을까? (1) | 2026.06.10 |
| 검색 증강 생성 (RAG)이란 무엇일까요? (0) | 2026.06.09 |
| GraphRAG란 무엇일까요? (0) | 2026.06.09 |
| GraphRAG란 무엇일까요? (0) | 2026.06.09 |
