디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

구글 검색 알고리즘의 원리 3

...(141.223) 2007.04.24 14:41:40
조회 740 추천 0 댓글 7


앞에서는 쇼프로와 K-1이라는, 그나마 그 성격이 확연히 다른 주제를 예로 들었는데,
만약 두 주제의 성격이 다소 비슷한 면이 있다 라고 한다면,
(예를 들면 \'리눅스\' 관련 문서들과 \'윈도우즈\' 관련 문서들)
아래 그림처럼 훨씬 더 골때리는 상황이 생길 수 있어.

(단어 2)
^
|                 o o o
|              o          o o
|           o *     x          o       x
|          o           x x            x 
|                            x   x  x 
|                               
|
-------------------------------> (단어 1)

o = 주제 1에 속하는 문서들
x = 주제 2에 속하는 문서들
* = 쿼리

사용자가 위의 별표와 같은 쿼리를 줬을 때, 올바른 결과라고 하려면
주제 1에 속하는 문서들(그 중에서도 쿼리와 가까이 있는 문서들)이 상위에 올라와야겠지.
그런데 위 그림을 보면, 주제 2에 속하는 문서들 중 몇몇 개가 주제 1의 문서들보다
쿼리에 더 가까이 있기 때문에, 걔들이 상위에 올라가게 된다는 문제가 생기지.

사실 이전 글에 나온 예의 경우, 올바른 분류에 방해가 되는 단어("최홍만")와 도움이 되는 단어("K-1")가 확실히 구분이 되었었고,
따라서 방해가 되는 단어들만 어떻게 잘 찾아낸 다음,
그 단어들의 빈도수는 무시하고 거리를 계산하면 올바른 결과를 얻을 수가 있었어.
하지만 지금 이 예제의 경우는 이런 식의 해결이 불가능하지.

그런데, 위 그림을 보다보면 한 가지 단서가 나와.
그림에서 쿼리 근처 영역만 잘라놓고 보자.

|                 o ←A
|       D→  o
|     C→ o *     x ←B  
|          o 
|                          

일단 그림에서 보듯이 A와 쿼리 사이의 직선 거리는 B와 쿼리 사이의 직선 거리보다 멀지.
그렇지만.. 직선 거리만 보면 그렇지만...
쿼리와 C, 쿼리와 D, C와 D, D와 A의 거리들은
쿼리와 B의 거리보다 가깝지.

이런 점에 착안을 해서 나온 아이디어가 Markov random walk 이라는 건데,
쿼리의 위치에서 시작을 해서 A 또는 B에 도착하게 될 때까지
매 턴마다 랜덤하게 임의의 포인트로 이동을 하는 거야.
단, 각 포인트로 이동하게 될 확률은, 현재 포인트와의 거리가 가까울 수록 큰 것이 핵심.

즉, 현재 위치가 쿼리라면, 다음 턴에 방문하게 될 포인트로는
C가 가장 확률이 높고 그 다음이 D, B, A 순이 되는 거지.
현재 위치가 D라면, 다음에 방문할 포인트로는 A/C/쿼리가 각각 비슷한 확률을 갖고 B는 그보다 좀 작겠지.

그림을 보면, 쿼리에서 시작해서 A까지 갈 수 있는 유망한(= 비교적 높은 확률을 가지는) path들이 몇 개 있지?
쿼리->C->D->A, (확률값은 P(쿼리->C)*P(C->D)*P(D->A))
쿼리->D->A, (확률값은 P(쿼리->D)*P(D->A))
그밖에 되돌아왔다 다시 방문하는 경우들.. (쿼리->C->쿼리->D->A 등등)

결국 쿼리에서 시작해서 이리 저리 포인트를 거쳐 최종적으로 A에 도착할 확률은,
위의 path들 각각의 확률을 모두 더한 것이 될 거야.

반면, 쿼리에서 시작해서 B로 갈 수 있는 유망한 path는 쿼리->B 하나 뿐이지.
쿼리를 제외한 나머지 포인트들과는 거리가 너무 멀어서,
다음 턴에 방문하게 될 확률이 낮으니까.
-> 잘 납득이 안 간다면 곱하기의 성질을 생각해봐.
n개의 값들을 곱한다고 했을 때, 이 중 단 한 개의 값이라도 작으면(예를 들면 0.01)
그 곱셈의 결과는 작아지지.
(반면 덧셈은, n개의 값을 더할 때 이 중 몇 개의 값이 작더라도 결과에 무진장 큰 영향은 안미치고.)
가령 쿼리->C->B 라는 path를 생각해 보면,
이 path를 타고 B까지 갈 확률은 P(쿼리->C)*P(C->B) 가 되겠지.
그런데 이때 P(C->B)가 너무 작기 때문에 이 path 전체의 확률까지 같이 작아져 버리는 거야.
쿼리->A->B, 쿼리->D->B 등등 모두 마찬가지지. 쿼리->B로 직접 가는 경우를 빼고...

즉... 이제 우리는 두 문서간의 유사성을 판단할 때 그들 사이의 직선 거리를 생각하는 대신,
"이 문서에서 Markov random walk을 했을 때 저 문서에 도착할 확률"을 생각하면 되는 거야.

여기서 이런 의문을 가지는 횽아들이 있을 거야.
"A에서 B로 가는 path만 센다고 하더라도 A->B, A->C->B, A->D->B, A->D->C->D->A->B 등등등
무수히 많은 path들이 존재하는데 얘네들 각각의 확률을 어떻게 일일히 다 구해서 더해주나?"

이에 대한 답을 겸해서, 알고리즘을 써 볼께.

1. 우선 각 문서들 사이의 거리를 가지고 기본 확률을 구해야겠지.
즉, d(A,B)가 있을 때 P(A->B)를 정하는데,
이건 보통, 초월함수 e를 이용해서 변환을 해.
P(A->B) = exp(-d(A,B)) / {모든 point들에 대해 exp(-d(A,x))의 합}
(모든 point들에 대한 합으로 나눠주는 이유는,
 A에서 임의의 포인트로 움직일 확률의 전체 합이 1이 되어야 하니까.)

2. n개의 문서가 있다고 하면, 얘들에게 임의의 순서로 차례(index)를 부여 해. 1, 2, ..., n 까지.
그런 다음, K라는 행렬을 정의하는데
K의 i번째 행, j번째 열에 들어갈 원소의 값을 앞에서 구한 P(i번째 포인트 -> j번째 포인트) 로 설정해.

3(핵심). I를 단위행렬(대각선 원소만 1이고 나머지는 다 0인 행렬)이라고 했을 때, 마지막으로
Q = inverse(I - 0.9*K)    (0.9는 예를 들면 그렇다는 거고, 0 초과 1 미만의 값이면 됨)
이렇게 계산을 하면, Q의 i번째 행, j번째 열의 원소값은
i번째 포인트에서 Markov random walk을 해서 j번째 포인트로 도착할 확률,
즉 우리가 구하고자 하는 유사성, 그 값이 나오게 돼.

Q가 왜 이런 값이 나오는지는 위의 역행렬 공식을 테일러 전개해 보면 알 수 있어.
inverse(I - 0.9*K) = I + 0.9*K + 0.9^2*K^2 + 0.9^3*K^3 + ....
이렇게 되거든.

이때 K^n의 i번째 행, j번째 열의 원소값은
i번째 포인트에서 Markov random walk을 했을 때 "정확히 n턴 이후에" j번째 point에 도착할 확률을 나타내.
(I는 K의 0제곱, 즉, 시작 지점에서 아직 전혀 이동을 안한 상태를 의미)
따라서 위 식을 말로 풀어 쓰면
Q = "0턴 이후에 도착할 확률 + 1턴 이후에 도착할 확률 + 2턴 이후에 도착할 확률 + ...."
이렇게 되는 거지.
따라서 모든 가능한 path들의 확률을 빠짐없이 다 더해주는 효과가 있지.
각각의 path를 일일히 세지 않아도 말이지...

요기까지가 본론이야.
이 알고리즘의 장점은, 검색할 데이터의 종류가 특정 응용 분야에 한정되어 있지 않다는 점이지.
문서, 그림, 비디오 등등, 벡터화 할 수 있는 모든 종류의 데이터들의 검색에 모두 쓰일 수 있고,
심지어 벡터화 할 수 없는 데이터라 하더라도(그런게 있나 모르겠지만;;)
임의의 두 아이템의 직선 거리(또는 유사성)만 정의할 수 있으면 이 알고리즘을 쓸 수 있어.

구글의 PageRank 알고리즘은 이 아이디어를 "웹 검색" 이라는 분야에 적용을 한 케이스인거지.
이에 대한 얘기는 다음 글에 쓸께. 이제 정말 마지막이야;

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 이번주 설문은 탈모 걱정 없어 보이는 머리숱 금수저 스타는? 운영자 25/07/14 - -
AD 디지털 액세서리 기간한정 세일! 운영자 25/07/11 - -
공지 프로그래밍 갤러리 이용 안내 [88] 운영자 20.09.28 45461 65
2871604 닐슨코리아에서 한 달쯤 전엔가 미디어 시청 관련 자동응답 와서 발명도둑잡기(39.7) 13:55 5 0
2871603 회사일 특 [9] 프갤러(73.25) 13:53 18 0
2871602 c와 c++의 차이점 - include [1] ㅇㅇ(118.235) 13:52 19 2
2871601 오늘 유행하는 좋은 말도 배우고 배구공(119.202) 13:50 13 0
2871600 조선은 병역거부 가능하고 대학생은 군대 안감 발명도둑잡기(39.7) 13:48 7 0
2871599 버스 전광판에 여유 발명도둑잡기(39.7) 13:40 13 0
2871598 니 쫄았제? [1] ♥지나가던길냥덩♥갤로그로 이동합니다. 13:39 14 0
2871597 북좇센에태어나면 군복무 10년 실화냐?? [1] 뒷통수한방(1.213) 13:35 18 0
2871596 ㅊㅇㅈ을 석방하라 ㅇㅅㅇ [1] 익명의따당이갤로그로 이동합니다. 13:14 28 0
2871595 잠오노 [1] 루도그담당(211.184) 13:14 18 0
2871594 딴짓거리 말고 국비 6개월 자바배우고 취업해라 [1] 프갤러(167.172) 13:04 42 0
2871593 씹센징이 뭐지... [9] 배구공(119.202) 13:04 38 0
2871592 Ai 등장이후로 흥미도 떨어지고, 점점 도태 되는 중 [2] 무한탐구(218.234) 12:50 30 0
2871591 중국 사대주의 새끼들 프갤러(223.39) 12:50 19 0
2871590 이적 "30년 음악해도 '연예인' 느낌 안 들어 발명도둑잡기갤로그로 이동합니다. 12:23 21 0
2871589 PL이 무섭다 [4] 개멍청한유라갤로그로 이동합니다. 12:18 33 0
2871588 힙합 갤러리에서도 심리공작하는 친미극우 공작원 106.101 발명도둑잡기(118.216) 12:09 19 0
2871587 과연 회사들이 개발을 해야되서 하는걸까? [1] 프갤러(183.101) 12:06 28 1
2871586 인공지능 나오고 난 뒤부터 모드 활렵소가 사라짐 무한탐구(218.234) 12:01 24 0
2871584 ❤✨☀⭐⚡☘♥+나님 시작합니당♥+☘⚡⭐☀✨❤ [3] ♥지나가던길냥덩♥갤로그로 이동합니다. 11:54 20 0
2871583 미국 비자 심사에 SNS 계정과 음주운전 전과도 본다 발명도둑잡기(118.216) 11:22 12 0
2871582 인공지능 쓰면, 게임도 하루만에 뚝딱이네 무한탐구(218.234) 11:14 35 0
2871581 아빠의 아재개그는 자녀 정서의 도움이 된다 발명도둑잡기(118.216) 11:07 14 0
2871580 진정한 개발자가 되는 꿈을 꿨음 [7] 공기역학갤로그로 이동합니다. 11:04 72 0
2871579 노멀 아반떼 신형 렌트 받음.jpg [2] 야옹아저씨갤로그로 이동합니다. 10:45 31 0
2871578 출근했는데.. 일이 없음 [1] 프갤러(1.235) 10:40 31 0
2871577 또 싸우냐 병신들아 [4] 아스카영원히사랑해갤로그로 이동합니다. 10:39 53 0
2871576 일본을 따라잡기는 커녕 현실은 중국에 추월당한 한국 [5] 발명도둑잡기(118.216) 10:29 35 0
2871575 ❤✨☀⭐⚡☘♥+나님 시작합니당♥+☘⚡⭐☀✨❤ [2] ♥지나가던길냥덩♥갤로그로 이동합니다. 10:04 41 0
2871574 오늘도 평화로운 프갤 [4] 루도그담당(211.184) 10:01 53 0
2871573 멍유야 니가 잘못함. 자꾸 냥덩이랑 친한척해주니까 [9] ㅆㅇㅆ(124.216) 10:01 64 0
2871572 냥덩아 그리고 보빨할거면 제대로 해라 뭔 씨발 은근슬쩍 [2] ㅆㅇㅆ(124.216) 10:00 31 0
2871571 점마는 아카이브 링크때문에 냥덩이라 하는 줄아나 [5] ㅆㅇㅆ(124.216) 09:56 45 0
2871570 냥덩이 저새끼 진짜 8개월째 따라다니는거 신기하긴함 [2] ㅆㅇㅆ(124.216) 09:55 31 0
2871569 그리고 저 병신새끼 존나 웃긴게 지가 걸었던 링크가 [6] ㅆㅇㅆ찡갤로그로 이동합니다. 09:52 43 1
2871568 걍 냥덩이일수밖에 없는게 똑같은 말 반복하는게 똑같음 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 09:51 30 0
2871567 멀티스레드 사용시 주의사항 읽어보면 매우 재밌을것.. [1] ㅇㅇ(118.235) 09:49 27 0
2871566 냥덩이 유동 또 저격하냐. 애초에 레파토리가 뻔한데 [7] ㅆㅇㅆ찡갤로그로 이동합니다. 09:44 48 0
2871565 가장 웃겼던건 지 군대 선임 다중이 역할극 하던거 ㅇㅇ(211.234) 09:41 26 1
2871564 반박못하면 누구다중이라고 정신승리밖에 못함 ㅇㅇ(211.234) 09:37 22 1
2871563 2차납품 내일하면 잔금 들어온다 [3] ㅆㅇㅆ찡갤로그로 이동합니다. 09:35 29 0
2871562 공무원들 진짜 일 안하네 [1] 아스카영원히사랑해갤로그로 이동합니다. 09:29 44 0
2871561 섹스 !! ♥지나가던길냥덩♥갤로그로 이동합니다. 09:28 19 0
2871560 근데 한국 sw 는 땔깜 말고없잖아? [2] 프갤러(183.101) 09:27 36 0
2871559 대규모 수공업 -> 방직기계 등장 -> 소규모 -> 전 자동화 (직전) 프갤러(183.101) 09:24 16 0
2871558 졸리.. 졸리.. ♥지나가던길냥덩♥갤로그로 이동합니다. 09:23 15 0
2871557 사실 ai시대 전에도 웹앱땔깜들은 땔깜이었음 [2] 네오커헠(211.235) 09:05 61 0
2871556 조립 넥도리아(175.196) 09:01 13 0
2871555 오늘도 러스트는 세상에 기여중ㄷㄷㄷㄷ [1] 프갤러(218.154) 08:58 35 0
뉴스 [조선의 사랑꾼] 이경실 아들 손보승, ‘139kg’ 리얼 체중 공개...‘엄마 소원’ 다이어트에 진심! 살 빼라 했더니 복싱대회 출전! 디시트렌드 10:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2