과학

구글 검색엔진의 기초

본 글은 성균관대학 교수인 이상구 교수님이 선형대수학 배워서 뭐해? 라는거에 대해 설명하기 위해 쓴 글인데 이해하기 쉽고 간단해서 소개해.

 

좋은 검색엔진은 어떻게 동작해야할까?

 

간단히 생각해보면 내가 검색한 키워드가 본문에 많이 들어가 있으면 좋을거야

근데 만약 문서에

 

 

"""

스타크래프트 립버전 1.16.1다운 스타크래프트 립버전 1.16.1다운 있을 것 같았다. 그건 실로 벅찬 감격이었다.고마워요 본드. 덕분에 마음이 아주 편해졌어요.고마워할 필요는 없어.킴은 미소지으며 손을 내밀었다. 니콜라는 기쁜 얼굴로 악수를

리를 질렀다. 이건....정말 상황 파악이 느린 녀석이로군. 네가 지금 어디에 스타크래프트 립버전 1.16.1다운 알기나 하는 거야 어리광을 받아주는 것도 여기까지다. 어서 이름이나 말해 어디서 감히 스타크래프트 립버전 1.16.1다운 지르나 천한

"""

 

이런식으로 의도적으로 키워드를 때려박은 문서가 있다면?

이건 우리가 원하는 검색결과물이 아니지.

 

그래서 이런 쓰레기랑 진짜 가치있는 페이지랑 어떻게하면 구분할 수 있을까를 스탠포드 다니던 레리페이지라는 학생과 세르게이 브린이라는 학생 둘이 아이디어를 내게 돼 (이후 구글 설립자가 됨)

 

가치있는 페이지라면 그걸 인용한 사람들이 많을거니까 같은 키워드가 들어있다면 인용이 많이 된 페이지가 좋은 페이지 아닐까? 라는 아이디에서 착안해서 Page-rank algorithm이라는 방법을 개발하게 돼.

 

페이지 랭크 알고리즘은 다음의 순서로 계산돼

먼저 웹 페이지간 서로 연결관계를 파악해

 

아래 사진에서

a.PNG

페이지 a를 인용하는 문서는 b,c,d이고

페이지 b를 인용하는 문서는 a,d이고

주루룩 쓸수 있겠지

 

이를 인용관계가 있으면 1을 채우고 없으면 0을 채우는 방법으로 행렬을 만들면 다음과 같이 돼

b.PNG

 

a->a로 가는 길은 없으니 A(1,1)=0, a->b로 가는 경로는 있으니 A(1,2)는 1 이런식으로 행렬이 만들어진거야.

근데 행렬은 신기한게, 이 행렬을 곱연산을 한 A*A의 1행 2열 성분은 A에서 어딘가를 거쳐 B로 간 경로를 의미하게 돼.

마찬가지로 A*A*A의 1행 2열 성분은 A에서 어딘가를 거치고 어딘가를 거쳐서 B로 갈 애들을 의미하게 돼.

 

그러면 이걸 n번 연산하면 대충 n번 이후에 각 페이지에 애가 위치할 애들의 숫자가 되겠지? 

근데 저 행렬을 바로 쓰기에는 문제가 하나 있어. 5열이 0이라서 한번 페이지E에 도달한 애들은 다음번엔 사라져버리는 문제가 생기게 돼.

 

그래서 이를 해결하고자 몇가지 조작을 하고 수학적인 수렴조건을 맞춰서 행렬을 새로 만들게 돼.

그게 바로 구글행렬이야.

 

저 연결관계를 바탕으로 구글행렬을 만들면 요렇게 돼 사실 아이디어는 같은데 수학적인 조작만 좀 가한거야 더 디테일한 내용이 궁금하면 교수님의 자료를 한번 확인해봐 (http://matrix.skku.ac.kr/2012-e-Books/KMS-News-LA-Google-SGLee.pdf)

 

c.PNG

 

이제 정상적으로 수렴하고 정보가 사라지지 않게 행렬도 바꿨겠다 한번 n번 연산해서 어떤 결과가 나오는지 확인해보자.

 

아래 그림은 20번 연산을 한 그 결과물이야 (matlab m 파일도 첨부하니 궁금하면 돌려봐도 좋아)

g=[0.03, 22/25, 91/200, 47/150, 1/5;
    91/200, 3/100, 3/100, 47/150, 1/5;
    3/100, 3/100, 3/100, 47/150, 1/5;
    91/200, 3/100, 3/100, 3/100, 1/5;
    3/100, 3/100, 91/200, 3/100, 1/5];

init_cond = [0.2;0.2;0.2;0.2;0.2];
History = [];

for i=1:1:20;
    g_mul = g^(i);
    prob = g_mul*init_cond;
    History = [History, prob];
end
plot(History')
legend('a','b','c','d','e')

 

d.PNG

 

이말대로면 a>b>d>c>e순으로 중요하다는 결과를 얻게 돼.

왜 이런 결과가 나왔는지 한번 알아보면

 

a는 누가봐도 중요해 그치? 왜냐면 엄청나게 많은애들이 얘를 참조하고 있으니까.

그리고 b보다는 d가 더 중요한게 d는 a라는 강력한애가 얘를 참조해주고 있고

e가 약한 이유는 e를 서포트해주는건 d 뿐이라 약하게 나온거야.

 

그래서 이런 방식을 사용하면 더 많은 사람들이 가치있다고 생각한 페이지를 정량화하여 알수 있게되기에 이를 바탕으로 구글의 검색엔진을 설계했어.

 

그렇다면 이런 방식이 가지는 문제점은 뭘까?

문제점은 만약 여기서 강력한 a가 누군가를 참조하면, 그게 사실 가치없는 정보더라도 가치있는것 처럼 계산이 된다는거야.

그래서 예전에 스탠포드 페이지가 강력한 a였는데 돈받고 몰래 하꼬 사이트 링크해주는 방법으로 뒷돈을 받았다는 썰도 있어ㅋㅋ.

 

이걸 그럼 어디다 쓸수 있느냐, 그래프 형태로 구성된 관계에서 어떤게 더 중요한건지 정량화 하는데 사용할 수 있어.

 

예를들어서 싸이월드 1촌관계도, 페북 친구관계가 있으면 이중 누가 진짜 인싸고 누가 아싸인지 정량적으로 구분이 된다는거지

14개의 댓글

2022.04.21

m파일은 안보이는데

0
2022.04.21
@멍청이

중간에 이써ㅋㅋㅋ카피 페이스트 하면 도ㅑ

0
2022.04.21

굳이 따지면 kernel이라고 봐야하나? NL에는 문외한이라..

0

Q: 선형대수학을 어디에 쓰나요?

A: 전산수치해석 ㄱㄱ

 

ㅠㅠ...

0
2022.04.22

그리고 b보다는 d가 더 중요한게 d는 a라는 강력한애가 얘를 참조해주고 있고

=> 그리고 c보다는 d가 더 중요한게 d는 a라는 강력한애가 얘를 참조해주고 있고

가 맞는거 아니야? 오타맞지?

0

페이지랭크 더이상 안 쓴지 오래됨

 

조금만 운영하는 입장에서 생각해보면 알텐데

웹이 작아서 뭔가 약간이라도 관련된 걸 싹싹 긁어모아서 보여줘야 할 때는

이런 알고리즘이 순조롭게 돌아가겠지만

 

지금처럼 웹의 스케일이 폭발하고 검색이 쓸데없는걸 잘 쳐내고

고품질의 최상단 결과를 뽑아내는게 중요해진 시점에선

직접적으로 쿼리랑 문서의 연관성을 파악하는게 훨씬 중요함

 

클릭 어뷰징에도 취약하고

0
2022.04.22
@갈매기까마귀비둘기

그럼 지금은 어떤 방식을 기초로 해??

이런 연결관계는 아예 안봐?

0
@착한말착한말

정확히 어떻게 하는지 그걸 공개해놨을 리가 없지 ㅋㅋ 기업비밀인데

단지 딥러닝 연구 성과들 가지고 TPU에 올린 봇들이 웹문서를 열심히 읽고 있을거라곤 사람들이 추측함

그렇게 모은 피쳐가 검색 자체의 품질이나 가끔씩 아예 내용을 뽑아다가 요약하는 신기능 만드는데 쓰였을거고

페이지랭크 안 쓴다는건 전 직원들 입에서 옛날부터 나온 얘긴데 기자가 인터뷰에서 공식답변 받은건 얼마 안됨

0
@착한말착한말

커다란 스케일에서 인접성을 처리한다는게 얼마나 낭비일지 상상을 해보셈 ㅋㅋ

 

옛날엔 Development가 부동산 개발인지 소프트웨어 개발인지

텍스트만 가지고 알 수가 없으니 저런 인접성까지 따져야 했겠지만

 

지금은 그냥 봇이 읽은 다음에 여기서 말하는게 무슨 Development인지 알 수 있으니

아예 색인할 때 그 정보를 이용해서 서로다른 검색 볼륨으로 분리시켜 버릴거임

0
2022.04.22
@갈매기까마귀비둘기

비전공자가 그게 상상이 되겠냐고!!!!!!ㅂㄷㅂㄷ

0

하여튼 그럼 초창기의 접근법은 페이지 랭크 알고리즘으로 시작이 되었다 이말인가?

0
@족가튼거보면우는고양이

그전엔 사람이 수작업으로 분류했음

0
2022.04.24

나도 이거 쓰려고 했는데 제목 어떻게 하면 더 눈길 끌까 싶다가 못해서 접음

나는 “1조 달러를 만들어낸 단 11쪽짜리 논문”으로 지을까 싶었음

제목력 높였으면 사람들이 더 관심 가졌을 듯

0

중간에 행렬 나와서 문득 든 생각인데... 예전에 선형대수학하고 공업수학 배우면서 이거 어디에 써먹나 하는 고민을 했었거든(결국 나중이 써먹긴 써먹더라) 이렇게 실제로 사용된다는거 미리 알았으면 그때 배우는게 지겹진 않았을거같았다는 생각이 들더라. 좋은 글 감사 !

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
563 [과학] 경계선 지능이 700만 있다는 기사들에 대해 34 LinkedList 12 18 일 전
562 [과학] 번역)새들은 왜 알을 많이 낳는가? - 후투티의 형제살해 습성... 7 리보솜 3 2024.03.23
561 [과학] 학계와 AI, 그리고 Bitter Lesson (쓰라린 교훈) 26 elomn 35 2024.02.17
560 [과학] 지구의 속삭임, 골든 레코드의 우주 9 Archaea 10 2024.02.16
559 [과학] 잔혹한 과학실험 이야기 <1> 절망의 구덩이 19 개드립하면안됨 37 2024.02.15
558 [과학] 스트레스를 받으면 술이 땡기는 이유 12 동식 16 2024.02.10
557 [과학] 지능은 모계유전이 아니다. 40 울릉특별자치도 35 2024.01.26
556 [과학] 진화를 생각할 때 고려할 것들 23 날씨가나쁘잖아 12 2024.01.17
555 [과학] 학문적(과학적) 접근과 유사 진화심리"학" 26 날씨가나쁘잖아 19 2024.01.15
554 [과학] 호모 사피엔스의 야릇한 은폐된 배란에 대한 남녀 학자의 다... 14 개드립하면안됨 15 2023.12.29
553 [과학] 김영하의 작별인사를 읽고 느낀 점 (스포있음) 21 장문주의 2 2023.11.28
552 [과학] 제4회 포스텍 SF 어워드 공모전 ( SF 단편소설 / SF 미니픽션 ) 2 따스땅 1 2023.11.25
551 [과학] 펌) CRISPR 유전자 가위 치료제 "최초" 승인 12 리보솜 7 2023.11.25
550 [과학] 러시아는 기술산업을 어떻게 파괴시켰는가(펌) 9 세기노비는역사비... 15 2023.11.18
549 [과학] 고양이에 의한 섬생태계 교란과 생물 종의 절멸 (펌) 2 힘들힘들고 6 2023.11.16
548 [과학] 번역) 알츠하이머병 유전자는 어떻게 살아남았는가? 12 리보솜 10 2023.11.15
547 [과학] 『우영우』의 자폐 스펙트럼 장애 개념이 왜곡인 이유 (펌) 47 힘들힘들고 10 2023.11.12
546 [과학] 흑수저 문과충 출신 구글 취직하는 파이썬 특강 -1 14 지방흡입기 11 2023.09.27
545 [과학] 국가별 당뇨 유병율 이거 뭐가 바뀐건지 아는사람? 8 LAMBDA 1 2023.09.27
544 [과학] 물샤워 ㅇㅈㄹ 하는 놈들 봐라 171 철동이 48 2023.09.23