Mathematics for AI #9
거리를 통한 유사도 측정으로 딥러닝 따라잡기
*출제자의 한 마디*
저번 시간에는 머신러닝과 딥러닝 모형은 많은 변수를 가진 함수로 표현되며, 어떻게 하면 최적의 값을 찾을 수 있는지 간단하게 살펴보았습니다. 복잡한 알고리듬 모형에서 최솟값을 구하기 어려울 때, 함수의 기울기를 구하고 기울기가 낮은 쪽으로 조금씩 계속 이동하여 마침내 기울기가 0인 지점에 이를 때까지 반복하는 방법인 '경사하강법'을 사용한다는 것을 알 수 있었습니다. 경사하강법을 사용하면 복잡한 모형에서 정확한 값을 모르는 상황에서도 근삿값을 조금씩 조정하여 최적의 값을 찾을 수 있습니다.
이번 시간에는 데이터의 유사도를 측정하는 방법에 대하여 간단히 살펴봅시다.
--------------
거리로 데이터 분류하기
인공지능이 데이터를 바탕으로 수행하는 주요 업무는 ‘판단’과 ‘예측’입니다. 이미지를 인식해서 사진 속의 사람이 누구인지 판단하거나 바둑을 둘 때 다음 수의 위치에 따라 승률을 예측하는 작업이 대표적인 사례죠.
인공지능이 판단과 예측 업무를 잘 수행하려면 먼저 주어진 데이터의 특징을 파악한 뒤 유사한 데이터끼리 묶어주는 ‘분류’ 작업이 필요합니다. 이때 서로 다른 두 데이터가 얼마나 유사한지 어떻게 알 수 있을까요? 다양한 방법이 있지만, 이번 시간에는 두 데이터 사이의 거리를 계산해서 유사도를 측정하는 법을 알아봅시다.
데이터는 순서쌍 또는 벡터로 나타낼 수 있습니다. 예를 들어 A, B, C 세 학생의 키와
몸무게의 유사도를 측정하는 경우, 이를 순서쌍 A(,
), B(
), C(
) 또는 벡터
=(
,
),
=(
),
=(
)로 나타낼 수 있습니다. 순서쌍으로 나타낸 두 점 사이의 거리는 다음과 같이 구합니다.
dist(A, B) =
벡터로도 구해볼까요? 벡터 =(
,
)의 크기는 원점에서 점 A(
,
)에 이르는 거리와 같습니다. 이것을
의 ‘노름’ 이라고 하고, 다음과 같이 나타냅니다.
두 벡터를 이용해 계산한 노름 는 두 점 A(
,
)와 B(
) 사이의 거리와 같습니다.
dist(A, B) = =
이 정의는 3차원 데이터 =(
,
,
)와 같은 고차원 데이터에 대해서도 적용할 수 있습니다. 인공지능은 두 데이터의 거리가 가까우면 유사하다고 판단하고, 거리가 멀면 관계 없다고 판단합니다.
--------------
문제
세 개의 데이터 A(0,1), B(5,2), C(-2,0)에 대해 B는 A와 C 중 어느 데이터에 더 가까운지 판단해보자.
풀이에 필요한 SageMath 코딩 명령어
①
a = vector([0, 1])
b = vector([5, 2])
c = vector([-2, 0])
좌표로 표현된 데이터 A, B, C를 벡터의 형태로 입력한다.
②
distAB = (a - b).norm()
distBC = (b - c).norm()
데이터 A 와 B사이의 거리, 데이터 B와 C사이의 거리를 각각 계산한다.
③
show('A와 B 사이의 거리 = ',distAB,', B와 C 사이의 거리 = ',distBC)
show 명령어를 통해 결과를 출력한다.
-끝-