메뉴 건너뛰기


Computer Science > Algorithm
오늘부터 하나씩 정리하고자 하는 것은 수학 공식입니다.
전산과 상관없다고 생각하시는 분은 뭐 스킵하셔도 좋습니다.
하지만 전산관련 논문들을 보면 앞으로 이야기할 공식들이 자주 나타나게 됩니다.
제가 수학자가 아니라서 설명을 잘 할 지 모르겠지만...
수학적인 설명보다는 제가 이해하는대로 혹은 사용했던 또는 활용 예들로 설명하도록 하겠습니다.
 
인공지능에 자주나오는 수학 1 - 유클리디안 거리(Euclidean Distance)
 
제일 먼저 알아볼 공식은 "유클리디안 거리(Euclidean distance)"라는 것입니다.
"유클리드"라는 수학자가 생각해댄 공식인데...
아시다 시피 "유클리드"는 최대공약수를 계산해내는 "유클리드 호제법"으로 유명한 분이죠.
"유클리디안 거리" 공식은 n차원의 공간에서 두 점간의 거리를 알아내는 공식입니다.
참고로 "유클리안 거리" 계산 법을 "L2 Distance"라고도 합니다.
 
우리는 쉽게 x축과 y축으로 구성된 2차원에 두점이 있고 그 두점 사이의 거리를 측정하는 것은 피타고라스 정의를 이용해 쉽게 할 수 있습니다. (학교 졸업한지 좀 지나신 분들은 아닐 수도 있지만... 뭐 정 안되면 직접 그려서 자로 재면 되니깐.. ㅋㅋ) 하지만 다차원 좌표에서의 두점의 거리를 재는 것은 쉽게 할 수 없습니다. 이럴 때 이 "유클리디안 거리"공식을 사용하면 됩니다.
 
"유클리디안 거리" 공식은 다음과 같이 정의됩니다.
(아래아 한글로 직접 수식을 편집했더니 글자가 좀 크고 안 예쁘네요. ^^; )
 
euclidean_distance_copy4.png
 
뭐 그리 어렵지는 않은 수식이지요?
 
추가적으로 이 거리 공식으로 계산을 하면 거리의 최대값이라는 게 없어서 뭔가를 비교하기가 쫌 어렵습니다. 그래서 이를 0~1사이의 값을 갖도록 하기 위해 다음과 같이 계산하여 사용하기도 합니다.
 
유클리디안 거리 공식에 의해 계산된 값을 Ed라고 한다면
20080830_153328.png
 
이렇게 되면 거리가 가장 가까운 경우 1이되고 멀 수로 0에 가까워 지겠죠?
 
 
 
사용예 
 
"유클리디안 거리"공식은 실제 거리를 잴때도 사용하는 공식이긴 하지만... 인공지능 분야에서는 두가지 개체의 속성값들이 여러개 일 경우 이들 속성값들에 의한 두 개체 사이의 유사도를 구할 때 자주 사용합니다.
 
예를 들어 세개의 문서가 있고 각 문서는 a, b, c, d라는 단어로만 구성되어 있다고 합시다.
1번 문서는 a가 3번 b가 2번 c가 0번 d가 2번 출현했다고 하고
2번 문서는 a가 1번 b가 2번 c가 3번 d가 0번 출현했다고 하고
3번 문서는 a가 2번 b가 2번 c가 2번 d가 2번 출현했다고 하면
각 단어의 출현빈도를 속성으로 갖는 문서 D1을 정의하면 다음과 같이 정의할 수 있습니다.
 
D1 = { 3, 2, 0, 2 }
D2 = { 1, 2, 3, 0 }
D3 = { 2, 2, 2, 2 }
 
이는 a, b, c, d라는 4차원의 공간에 D1, D2, D3를 지정된 좌표로 배치하는 것과 같습니다.
참고로 위와 같이 정의하는 것을 보고 단어들의 출현빈도(Term Frequency)를 가중치(Weight)로 하여 문서를 논리적으로 정의했다고 합니다.
 
이제 누군가 "a가 1번 b 5번 나온 문서와 가장 가까운(유사한) 문서는?"이라는 질의을 했을 경우 이의 답을 구하기 위해 유클리디안 거리 공식을 사용할 수 있습니다.
 
방법은 누군가가 질의한 내용도 위에서 이야기한 문서들 처럼
 
Q = {1, 5, 0 , 0}
 
라고 정의하고 4차원 공간에 배치시킵니다. 그리고 Q와 D1, Q와 D2, Q와 D3의 거리를 각각 구해서 거리가 가장 가까운 문서가 답이되겠죠.
위의 문제를 실제로 계산해 보면 다음과 같습니다. 
euclidean_distance_2.png
 
즉, 문서 1이 주어진 질의와 가장 유사하다고 할 수 있습니다. (인공지능이라는 분야가 모두 그렇듯이 답이 나와도 딱 이게 답이라고 할 수 없습니다. 사람의 판단이 가장 중요한 것이니깐요. - 사람이 판단해도 답이 아닌 경우도 있긴 합니다. - 하지만 뭐 이렇게 공식에 의해 계산할 수 있다는 것은 알고리즘화 할 수 있다는 것이고 알고리즘화 할 수 있다는 것은 컴퓨터가 어떤 근거를 갖고 문제를 해결할 수 있다는 것입니다.)
 
 
 
여기까지 "인공지능에 자주 나오는 수학"이라는 주제로 쓴 첫번째 강좌를 마치겠습니다.
다시 한번 말씀드리지만 저는 수학자가 아닙니다.
그러므로 설명한 글에 오류가 있다면 너그러운 마음으로 비판은 하지 마시고 지적만 부탁드립니다. (참고로 제가 좀 소심함... ^^;)
질문도 괜찮지만 답을 드릴 수 있다는 보장은 없습니다. ㅠㅠ
아울러 위에서 설명한 예보다 더 좋은 예나 여러분의 분야에서 위의 공식을 사용한 예가 있다면 그 예를 적어주시면 모두에게 도움이 될 듯 합니다.
 
Creative Commons License
Creative Commons License이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Copyright 조희창(Nicholas Jo). Some rights reserved. http://bbs.nicklib.com