지능이라는 이름의 게임(11): 집단지능과 블록체인(3)

이번에는 구글의 검색 엔진을 살펴보자. 내부 개발자가 아닌 다음에는 현재 구글의 검색 엔진이 정확히 어떻게 구성되어 있는지를 정확히 알 수 없다. 구글이 검색엔진 알고리즘을 공개하지 않을 뿐 아니라 그것이 지속적으로 변하고 있기 때문이다.

구글의 검색엔진은 2000년 페이지랭크(PageRank) 알고리즘으로 시작한 이후 계속 갱신되어 왔으며 2013년에 허밍버드(Hummingbird) 알고리즘으로 전환된 후에는 큰 틀이 유지되고 있는 것으로 알려졌다. 구글의 발표에 의하면 검색엔진 알고리즘에는 200여 개의 요소가 투입되고 있다. 외부에 알려진 요소로는, 랭크브레인(RankBrain), 페이지랭크(PageRank), 웹사이트 품질, 검색어의 위치(제목/URL), 검색어의 동의어 존재 여부, 서버의 위치, 컨텐츠 발행 날짜 등이 있다. 그 알고리즘은 사용자가 무엇을 원하는지를 추측한 다음, 가장 적합한 정보 순으로, 최대한 신속하게 검색결과가 제시되도록 작동한다.(주석 1)

구글의 검색엔진 알고리즘은 계속 진화해 왔지만 구글의 접근방식을 이해하는 데는 아직도 페이지랭크 알고리즘을 살펴보는 것이 가장 효과적이다. 페이지랭크 알고리즘은 크게 변화되지 않았으며 아직도 구글 검색엔진 알고리즘의 중요한 요소로 남아 있다. 웹페이지의 페이지랭크 (점수)를 계산하는 원리는 아래 식(1)로 간단히 나타낼 수 있다.

웹페이지 A의 페이지랭크 는 기본적으로 웹페이지 A에 링크를 건 웹페이지 B, C, D 등의 페이지랭크[ ]를 합한 것이다. 식(1)에서 나머지 요소들은 그렇게 단순한 합을 점수로 했을 때 발생하는 문제를 해결하기 위해 추가되었다. (주석 2)

이 식을 곰곰히 살펴보면, 해당 검색어(들)를 갖고 있는 웹페이지의 등급—그것도 링크라는 상당히 엉뚱한 기준을 가지고 매긴—이 검색 결과를 제시하는 순서를 결정한다(현재는 페이지랭크 외에도 많은 정보들이 고려되어 최종적인 나열 순위가 결정된다). 한 웹페이지의 페이지랭크는 다른 웹페이지와의 관계(링크 여부)와, 그 웹페이지를 링크한 웹페이지의 영향력(페이지랭크)에 의해 결정된다.

관련 이미지

한 마디로 페이지랭크는 일종의 인기도이다. 웹페이지들이 각 웹페이지를 두고 링크(link)를 거는 방식으로 일종의 인기투표를 한 결과라고 할 수 있다. 이는 구글의 검색 엔진이, 웹사이트들(결국 그것은 운영자들)의 지혜를 기술적으로 취합해서 효율적인 정보검색이라는 사용자들의 ‘공동’ 과제를 해결하는 집단지능임을 의미한다.

IBM의 Chef Watson은 인지적 컴퓨팅(cognitive computing)이라는 방법을 사용해서 요리 아이디어와 요리법이라는 사람들의 일상적인 숙제를 해결해주고 있다. 이 사례도 대단히 흥미 있지만 생략하고 다음 포스팅부터는 블록체인을 살펴보자.

 

주석 1: 구글의 검색엔진이 변해온 과정을 보려면 MOZ 웹사이트의 Google Algorithm Change History를 참조. 랭크브레인 알고리즘에 관해서는 Search Engine Land blog의 FAQ: All about the Google RankBrain algorithm을 참조.  PageRank에 대한 알기 쉽고 상세한 수학적 설명은 코넬대학교가 운영하는 The Mathematics of Web Search에서 찾을 수 있음. 이 사이트는 PageRank를 이해하는데 필요한 선형대수(linear algebra)에 대한 설명도 제공함.

주석2: 는 damping factor인데, “어떤 무작위로 웹서핑을 하는 사람이 현재의 페이지에서 다른 페이지로 가는 링크를 클릭할 확률”이다. 은 모든 웹페이지의 숫자이며, 는 B라는 페이지가 가지고 있는 링크(outbound links)의 총 개수이다. 이 요소들에 대한 쉬운 설명은 ‘조성문의 실리콘밸리 이야기’ 블로그의 “‘쉽게 설명한’ 구글의 페이지랭크 알고리즘”을 참조.

지능이라는 이름의 게임(10): 집단지능과 블록체인(2)

초기에 아마존 웹사이트는 전문가들이 작성한 서평과 추천을 게시했다. 그 서평과 추천은 인기가 있었고 책 판매에 상당한 성과를 가져왔다. 그러나 그런 방식의 효과에 만족할 수 없었던 제프 베조스(Jeff Bezos)는 고객들 자신의 구매 선호를 기반으로 돌아가는 알고리즘을 개발했다. 오래지 않아 알고리즘에 의한 추천은 사람에 의한 추천을 완전히 대체하였다(Mayer-Schönberger & Cukier, 2013).

아마존의  책 추천에는 품목-대-품목 협업 필터링(Item-to-item collaborative filtering)이라는 알고리즘이 사용된다. 그것은 기존의 추천 시스템들이 지니고 있던 여러 가지 한계를 극복한 것이었다(Linden et. al., 2003).

예컨대 전통적인 협업 필터링(traditional collaborative filtering)은, 고객들 사이의 상관성(흔히 코사인 유사도를 사용한다)을 구해둔 다음, 어떤 고객이 웹사이트을 방문하면, 그 고객과 가장 유사한 몇 명의 고객들을 추려서 그들이 가장 많이 구입했거나 선호하는 상품을 추천하는 방식이다. 고객들 사이의 상관성은 고객들의 상품 구매 기록과 상품 평가 기록을 가지고 계산한다. 이 알고리즘은, 규모가 작은 웹사이트에서는 그런대로 잘 작동하지만 고객의 숫자가 1천만 명을 넘고 상품의 종류가 1백만 가지를 넘어서면 막대한 컴퓨팅 비용을 초래하는 여러가지 문제가 대두된다(Linden et. al., 2003: 76-77).

전통적인 협업 필터링처럼 군집 모형(cluster models)도, 웹사이트를 방문한 고객에게 유사 고객들(similar customers)의 선호를 기반으로 상품을 추천한다. 이 알고리즘은, 고객들을 많은 그룹들로 세분해 둔 다음, 새 고객이 방문하면 그를 그 그룹들 중 하나 혹은 몇 개로 분류한다. 그룹들은 군집화 알고리즘이나 비지도학습 알고리즘을 사용해서 생성된다.

군집 모형은 전통적인 협업 필터링에 비해 큰 규모의 웹사이트에서도 효율적으로 작동한다. 그러나 이 알고리즘은 전체 고객들의 정보 대신 제한된 수의 그룹들의 정보만으로 추천하기 때문에 추천의 정확성이 떨어지는 문제가 있다(Linden et. at., 2003: 77).

이 알고리즘들과는 달리 검색 기반 방법(search-based methods)은,  어떤 고객의 상품 구매나 평가 기록에 근거해서 유사한 상품을 추천한다. 즉, 고객에게 그가 구매했거나 긍정적으로 평가한 컨텐츠의 동일한 저자, 작가, 감독, 장르 등의 인기 상품을 추천하는 것이다. 이 방식은 고객의 구매나 평가 기록에 포함된 상품이 소수일 때는 잘 작동하지만 그 숫자가 크게 늘어나면 그러한 상품들을 추천하는 것이 현실적으로 불가능해진다(Linden et. al., 2003: 78).

아마존의 품목-대-품목 협업 필터링은 고객들의 경험 데이터를 이용하되, 그것을 상품들 사이의 상관관계로 전환해서 사용한다. 설명을 단순화하기 위해 아마존에 네 권의 책(A,B,C,D)만 있고 사용자가 두 명(사용자 1, 2)만 있다고 하자.

만약 새로운 방문자(사용자 3)가 A라는 책을 보았다면 그에게 어떤 다른 책을 추천하면 좋을까? 아마존의 추천 엔진은 다른 사용자들의 책 탐색 기록 정보를 이용해서 A와 가장 상관성이 높은 책 B와 C를 추천한다.

이 그림은 Software Programming blog의 How does the Amazon recommendation system work?을 손질한 것임.

이 과정을 수학적으로 설명해 보자. <그림 1>에서 사용자 1은 [B, C, B] 순으로 검색했고, 사용자 2는 [C, A, B] 순으로 검색했다. 이 정보를 가지고 품목-대-품목 행렬을 구하면 우측의 상단과 같다. 이 행렬을 가지고 두 벡터(vector) 끼리의 코사인 유사도(Cosine Similarity, CosSim)를 구한다. 아래 식에서처럼 두 벡터의 내적(inner product)을 두 벡터의 노름(norm, 벡터의 크기)의 곱으로 나누어 코사인값을 구하면 된다.

위 식에서 보듯이 두 벡터의 내적은 두 변수값의 곱()의 합이고,  벡터의 노름은 각 변수값의 제곱 합(, )의 양의 제곱근이다.

이렇게 구한 유사도는 –1에서 1까지 값을 갖는다. 코사인 유사도 –1은 두 벡터가 서로 완전히 반대 방향인 경우, 코사인 유사도 1은 두 벡터가 완전히 방향이 같은 경우, 그리고 코사인 유사도 0은 두 벡터가 서로 독립적인 경우를 가리킨다. 정보나 책의 검색에서 빈도가 음의 값을 가질 수 없으므로 코사인 유사도는 0에서 1까지의 값을 갖는다.

위의 경우 아마존의 검색 엔진은 책 A와 코사인 유사도가 가장 큰 책 B와 C를 추천한다. 즉, 아마존 검색 엔진은 사용자가 누구인가에 관계없이 책들의 상관성만 가지고 책을 추천한다.

책들 사이의 상관성은 오프라인에서 이미 계산해 두고 있기 때문에 아마존은  고객들에게 책을 비롯한 수많은 상품들을 더욱 빠르고, 더욱 정확하게 추천할 수 있다. 품목-대-품목 협업 필터링은 고객들의 구매, 클릭, 평가 등의 경험을 취합하여 온라인 상품 구매에서 고객들이 안고 있는 불확실성 문제를 해결하는 집단지능인 것이다.

단시간 내에 전세계 검색 시장의 최강자로 떠오른 구글(Google.com)의 검색엔진도 집단지능의 흥미 있는 사례이다. 다음 포스팅에서는 내친 김에 구글 검색 엔진의 원리도 살펴보자. (윤영민, 2018-05-12)

참고 문헌

Mayer-Schönberger,  Victor, & Kenneth Cukier. 2013. Big Data: A Revolution that will transform how we live, work, and think. Boston: An Eamon Dolan Book.

Linden, Greg, Brent Smith, & Jeremy York. 2003. “Amazon.com Recommendations: Item-to-item collabrative filterning.” IEEE Internet Computing, January-Feburary: 76-80.

지능이라는 이름의 게임(9): 집단지능과 블록체인(1)

‘지능이라는 게임’ 시리즈 포스팅의 (1)부터 (8)은 유기적 지능(organic intelligence)을 집중적으로 살펴보았고, 기계적 지능(mechanical intelligence)에 대해서도 약간 언급했다. 기계적 지능에 관해서는 나중에 기계학습(machine learning)이라는 소주제로 좀 더 자세히 살펴보기로 하고, 현대적 지능의 세 번째 유형인 사회적 지능(social intelligence)에 논의해 보자.  거기에 특별한 이유가 있는 것은 아니다. 필자는 블록체인을 집단지능의 하나로 보고 있고, 학교 수업에서 블록체인을 다루기 때문에 시간을 효율적으로 쓰기 위해서이다.

collective intelligence에 대한 이미지 검색결과

사회적 지능의 대표적인 모습은 집단지능(collective intelligence, 흔히 집단지성이라고 불림)이다. 집단지능은, 많은 사람들의 정보, 지식, 지혜, 추정, 혹은 판단을 모아서, 혹은 많은 사람들의 자발적 기여를 통해서 공동의 관심사 혹은 문제에 대한 해결을 도모하는 현상을 말한다. (전산학에서는 집단지능을 응용 프로그래밍의 하나로 보고 있다. 그 예로 Programming Collective Intelligence 을 참조하시오.)

그렇게 정의하면, 모든 사회조직은 집단지능이라고 해석될 수 있다. 국가, 기업, 시민단체, 이익단체, 마을 공동체 등이 모두 공동의 문제를 해결하기 위한 집단적 노력이라는 점에서 집단지능이라고 불릴 수 있을 것이다.

그런데 21세기적 집단지능에는 과학기술(technology)이 추가된다. 많은 사람들의 기여를 취합하거나, 조정하고, 나아가 그 결과를 제시하는데 과학기술이 적용된다. 그런  의미에서 21세기 집단지능은 사회적 지능이라기보다 사회-기술적 지능(socio-technological intelligence)라고 분류하는 편이 정확할 지도 모르겠다. 그러한 집단지능의 변천을 추적해 보면 아래 그림과 같다.

인터넷을 이용한 집단지능의 효시로는 아마도 미국 아이오와 대학교(University of Iowa)의 교수진이 운영하는 Iowa Electronic Markets (IEM)을 들 수 있을 것이다. 그것은 소위 예측시장(prediction markets)의 효시이기도 하다(예측시장의 훨씬 흥미있고 대중적인 사례로 Hollywood Stock Exchange, HSX가 있음).

IEM에서 참가자들은 소액의 돈으로 해당 선거의 후보에 해당하는 주식을 산다. 실제로 해당 선거가 끝나면, 선거 결과에 따라서 배당을 받는다. 당연히 자신이 구입한 주식에 해당하는 후보가 선거에서 이기면 배당이 된다. 따라서 참가자들은 진지하게 선거 결과를 예측하고 당선 가능성이 높은 후보에게 배팅(?)한다. 그리고 IEM 시스템은 그것들을 기술적으로 취합해서 선거 결과를 예측한다.

IEM에서는 지난 30년 동안 미국의 대통령, 정당의 대통령 후보, 주지사, 상원의원, 하원의원, 시장 등 각종 공직자 선거에 대한 주식거래가 이루어졌고, 선거 결과를 예측했다. IEM의 예측 성공률은 상당히 높아 유명 여론조사 기관들의 출구조사에 결코 뒤지지 않는다(관련 논문을 참고하시오).

리눅스(Linux)는 집단지능의 대표적인 사례로 널리 알려져 있다. 그러나 아마도 상업적 영향력이라는 측면에서 추천엔진(recommenders)만한 집단지능을 찾아보기 힘들 것이다. 특히 Amazon.com의 추천 시스템은 이전의 추천 시스템들과 달리 대규모의 쇼핑몰에서도 효율적으로 사용될 수 있음이 입증되었고, 음악이나 영화 사이트, 인터넷 쇼핑몰 그리고 SNS까지 너도나도 유사한 추천엔진을 도입해서 고객들에게 ‘개인화’ 서비스 혹은 ‘맞춤’ 서비스를 제공하고 있다.

다음 포스팅에서는 아마존 추천엔진이 어떤 원리로 작동하는가를 살펴보자. (윤영민, 2018-05-11)