Ch.4 벡터와 행렬 — 의미를 수학으로
벡터란? — King - Man + Woman = Queen
단어에도 '방향'이 있다면 어떨까?
AI가 '왕'과 '여왕'이 비슷한 관계라는 것을 어떻게 알까요? 비밀은 단어를 숫자 벡터로 변환하는 것에 있습니다.
King - Man + Woman = Queen, 이 마법 같은 수식이 어떻게 성립할까?
벡터 — AI가 단어의 의미를 숫자로 표현하는 핵심 도구입니다. LLM 파이프라인의 첫 번째 관문이죠.
핵심 개념
벡터
크기와 방향을 가진 수의 배열, 의미를 숫자로 표현
임베딩
단어·문장을 고정 길이 벡터로 변환하는 것
핵심 내용
벡터는 크기와 방향을 가진 숫자들의 나열입니다
[3, 4]는 '오른쪽 3, 위로 4' 만큼의 이동입니다
AI에서는 수백~수천 차원의 벡터를 사용합니다
벡터(Vector), 차원(Dimension), 임베딩(Embedding)
벡터 = 숫자들의 순서 있는 나열 [v₁, v₂, ..., vₙ] 차원 = 벡터 안 숫자의 개수 (n) 임베딩 = 단어/문장을 벡터로 변환하는 것
AI는 단어를 고차원 공간의 점으로 배치합니다
비슷한 의미의 단어는 가까이, 다른 의미는 멀리 배치됩니다
'왕' ↔ '여왕' = 가까움, '왕' ↔ '바나나' = 멀리
Word2Vec, GloVe, FastText — 초기 임베딩 모델들 GPT/BERT — Transformer 기반 문맥 임베딩 핵심: 비슷한 문맥에서 등장하는 단어 → 비슷한 벡터
벡터 연산으로 단어의 관계를 포착할 수 있습니다
'왕'에서 '남성성'을 빼고 '여성성'을 더하면 '여왕'이 됩니다. 벡터 공간에서 성별 관계가 방향으로 인코딩되어 있기 때문입니다.
수도–나라 관계도 벡터 연산으로 포착됩니다. '파리'에서 '프랑스'를 빼고 '일본'을 더하면 '도쿄'에 근접합니다.
벡터 연산이 의미를 포착하는 이유: 동일한 관계 = 동일한 방향 벡터 King→Queen 방향 ≈ Man→Woman 방향 Paris→France 방향 ≈ Tokyo→Japan 방향
NumPy로 벡터를 만들고 연산해봅시다
import numpy as np
# 간단한 2차원 벡터 예시
king = np.array([0.8, 0.9])
man = np.array([0.7, 0.1])
woman = np.array([0.1, 0.8])
# 벡터 연산: King - Man + Woman
result = king - man + woman
print(f"King: {king}")
print(f"Man: {man}")
print(f"Woman: {woman}")
print(f"Result: {result}")
print(f"→ Queen과 비슷할까?")
queen = np.array([0.2, 1.6])
print(f"Queen: {queen}")
print(f"차이: {np.linalg.norm(result - queen):.4f}")리스트로 벡터 덧셈과 뺄셈을 구현하고 단어 관계가 어떻게 포착되는지 실험합니다
# 순수 Python으로 벡터 연산 구현
import math
def vec_add(a, b):
return [x + y for x, y in zip(a, b)]
def vec_sub(a, b):
return [x - y for x, y in zip(a, b)]
def vec_magnitude(v):
return math.sqrt(sum(x**2 for x in v))
# 간단한 2D 단어 임베딩 (가상)
words = {
"왕": [0.9, 0.8],
"여왕": [0.9, -0.8],
"남자": [0.1, 0.7],
"여자": [0.1, -0.7],
}
# King - Man + Woman = ?
result = vec_add(vec_sub(words["왕"], words["남자"]), words["여자"])
print(f"왕 - 남자 + 여자 = {[round(x, 2) for x in result]}")
print(f"여왕 벡터 = {words['여왕']}")
# 결과와 각 단어의 거리 비교
print("\n=== 결과와 각 단어의 거리 ===")
for name, vec in words.items():
dist = vec_magnitude(vec_sub(result, vec))
print(f" {name}: {dist:.3f}")단어 임베딩에서 '비슷한 의미'의 단어들은 벡터 공간에서 어떤 관계를 갖나요?
GPT, BERT 같은 Transformer 모델도 단어를 벡터로 변환하는 임베딩을 사용한다.
벡터 [1, 2, 3]의 차원(dimension)은 얼마인가요?
다음 코드의 빈칸을 채우세요. import numpy as np v = np.array([1, 2, 3]) print(v.___) # 출력: (3,)
v.___ → (3,)
Word2Vec에서 "King" - "Man" + "Woman"의 결과 벡터와 가장 가까운 단어는?
벡터와 임베딩
핵심 용어
벡터
크기와 방향을 가진 수의 배열, 의미를 숫자로 표현
임베딩
단어·문장을 고정 길이 벡터로 변환하는 것
정리 노트
벡터 · 차원 · 임베딩 핵심 정리
핵심 개념
- 벡터
- 숫자들의 순서 있는 나열 [v₁, v₂, ..., vₙ] — 크기와 방향을 가짐
- 차원
- 벡터 안 숫자의 개수 (n) — GPT는 수백~수천 차원 사용
- 임베딩
- 단어·문장을 고정 길이 벡터로 변환하는 것
벡터 연산과 의미
- King−Man+Woman≈Queen
- 동일한 관계는 벡터 공간에서 동일한 방향으로 인코딩
- 의미적 유사성
- 비슷한 문맥의 단어 → 가까운 벡터 위치
- NumPy
- np.array()로 벡터 생성, +, -, @ 연산자로 벡터 연산
임베딩은 LLM 파이프라인의 첫 번째 단계! 토큰 → 벡터 변환 없이는 AI가 언어를 이해할 수 없습니다.
시각 자료
핵심 정리
- 1벡터 = 크기와 방향을 가진 숫자 나열
- 2임베딩 = 단어를 벡터로 변환하는 것
- 3King - Man + Woman ≈ Queen — 벡터 연산으로 의미 관계 포착
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작