연구 주제: 벡터의 내적을 활용한 데이터 유사도 측정
기하 교과에서 다루는 벡터의 내적이 현대 데이터 과학, 특히 자연어 처리(NLP)와 추천 시스템에서 어떻게 활용되는지 탐구했습니다.
추상적인 수학 공식이 실제 인공지능이 "두 문장이 얼마나 비슷한가?"를 판단하는 핵심 논리인 코사인 유사도로 연결되는 과정을 시뮬레이션을 통해 직접 확인해봅니다.
이론 코사인 유사도의 유도
두 벡터 $\vec{A}$와 $\vec{B}$의 내적 정의에서 출발합니다. 내적은 두 벡터의 크기와 사잇각의 코사인 값의 곱으로 표현됩니다.
* $\theta$: 두 벡터 사이의 각도
의미 해석:
- 1 (0°): 두 벡터의 방향이 완전히 일치함 (완전 유사)
- 0 (90°): 두 벡터가 직교함 (상관관계 없음)
- -1 (180°): 두 벡터가 반대 방향임 (완전 반대)
왜 '거리' 대신 '각도'인가?
데이터 과학, 특히 텍스트 분석에서 유클리드 거리는 문서의 길이(단어 수)에 큰 영향을 받습니다.
예시 상황:
문서 A: "사과 좋아"
문서 B: "사과 좋아 사과 좋아 사과 좋아"
문서 C: "바나나 싫어"
문서 A와 B는 내용은 같지만 길이는 다릅니다. 유클리드 거리는 멀게 나오지만, 코사인 유사도(각도)는 1(일치)이 나옵니다. 즉, 데이터의 크기보다 방향을 중시할 때 코사인 유사도를 사용합니다.
실험 1: 2차원 공간에서의 시각화
두 벡터의 좌표를 조절하여 사잇각과 코사인 유사도의 관계를 직관적으로 확인합니다.
벡터 좌표 입력
계산 결과
원점(0,0)에서 시작하는 두 벡터의 방향 차이를 확인하세요.
실험 2: 텍스트 유사도 검색 엔진
문장을 벡터화하여 실제 검색 엔진처럼 유사도를 계산해봅니다.
방법: Bag of Words 모델 & TF(Term Frequency) 벡터 사용
1. 문서 데이터베이스 (Corpus)
비교 대상이 될 미리 저장된 문장들입니다.
- 1. "artificial intelligence uses data"
- 2. "data science uses math and statistics"
- 3. "i love eating sweet apple"
- 4. "apple iphone is a smart phone"
2. 검색어 입력 (Query Vector)
* 영문 단어 기준으로 공백 분리하여 벡터를 생성합니다. (대소문자 무시)
3. 유사도 분석 결과
입력한 문장과 데이터베이스 문장 간의 코사인 유사도 순위입니다.
실생활 활용 사례
추천 시스템
넷플릭스나 유튜브는 사용자를 하나의 거대한 '벡터'로 봅니다. 사용자 A의 시청 기록 벡터와 사용자 B의 벡터 간 코사인 유사도가 높다면(각도가 작다면), 취향이 비슷하다고 판단하여 B가 본 영상을 A에게 추천합니다.
이미지 유사도 검색
이미지를 픽셀 단위가 아닌 '특징 벡터'로 변환합니다. 구글 이미지 검색은 업로드된 이미지 벡터와 가장 코사인 유사도가 높은(가장 각도가 좁은) 이미지 벡터를 찾아 결과를 보여줍니다.