Ch.4 벡터와 행렬 — 의미를 수학으로

벡터란? — King - Man + Woman = Queen

벡터가 크기와 방향을 가진 수학적 도구임을 이해한다단어 임베딩(Word Embedding)의 직관을 설명한다NumPy 배열로 벡터 연산을 수행할 수 있다

단어에도 '방향'이 있다면 어떨까?

AI가 '왕'과 '여왕'이 비슷한 관계라는 것을 어떻게 알까요? 비밀은 단어를 숫자 벡터로 변환하는 것에 있습니다.

King - Man + Woman = Queen, 이 마법 같은 수식이 어떻게 성립할까?

벡터 — AI가 단어의 의미를 숫자로 표현하는 핵심 도구입니다. LLM 파이프라인의 첫 번째 관문이죠.

lightbulb

핵심 개념

벡터

크기와 방향을 가진 수의 배열, 의미를 숫자로 표현

임베딩

단어·문장을 고정 길이 벡터로 변환하는 것


article

핵심 내용

벡터는 크기와 방향을 가진 숫자들의 나열입니다

[3, 4]는 '오른쪽 3, 위로 4' 만큼의 이동입니다

AI에서는 수백~수천 차원의 벡터를 사용합니다

벡터(Vector), 차원(Dimension), 임베딩(Embedding)

벡터 = 숫자들의 순서 있는 나열 [v₁, v₂, ..., vₙ] 차원 = 벡터 안 숫자의 개수 (n) 임베딩 = 단어/문장을 벡터로 변환하는 것

AI는 단어를 고차원 공간의 점으로 배치합니다

비슷한 의미의 단어는 가까이, 다른 의미는 멀리 배치됩니다

'왕' ↔ '여왕' = 가까움, '왕' ↔ '바나나' = 멀리

Word2Vec, GloVe, FastText — 초기 임베딩 모델들 GPT/BERT — Transformer 기반 문맥 임베딩 핵심: 비슷한 문맥에서 등장하는 단어 → 비슷한 벡터

벡터 연산으로 단어의 관계를 포착할 수 있습니다

ecKing - ecMan + ecWoman approx ecQueen

'왕'에서 '남성성'을 빼고 '여성성'을 더하면 '여왕'이 됩니다. 벡터 공간에서 성별 관계가 방향으로 인코딩되어 있기 때문입니다.

ecParis - ecFrance + ecJapan approx ecTokyo

수도–나라 관계도 벡터 연산으로 포착됩니다. '파리'에서 '프랑스'를 빼고 '일본'을 더하면 '도쿄'에 근접합니다.

벡터 연산이 의미를 포착하는 이유: 동일한 관계 = 동일한 방향 벡터 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"의 결과 벡터와 가장 가까운 단어는?

벡터임베딩

key

핵심 용어

➡️

벡터

크기와 방향을 가진 수의 배열, 의미를 숫자로 표현

🎯

임베딩

단어·문장을 고정 길이 벡터로 변환하는 것

edit_note

정리 노트

벡터 · 차원 · 임베딩 핵심 정리

핵심 개념

벡터
숫자들의 순서 있는 나열 [v₁, v₂, ..., vₙ] — 크기와 방향을 가짐
차원
벡터 안 숫자의 개수 (n) — GPT는 수백~수천 차원 사용
임베딩
단어·문장을 고정 길이 벡터로 변환하는 것

벡터 연산과 의미

King−Man+Woman≈Queen
동일한 관계는 벡터 공간에서 동일한 방향으로 인코딩
의미적 유사성
비슷한 문맥의 단어 → 가까운 벡터 위치
NumPy
np.array()로 벡터 생성, +, -, @ 연산자로 벡터 연산

임베딩은 LLM 파이프라인의 첫 번째 단계! 토큰 → 벡터 변환 없이는 AI가 언어를 이해할 수 없습니다.

image

시각 자료

다이어그램: py-scene-vector
다이어그램: vector-space
check_circle

핵심 정리

  • 1벡터 = 크기와 방향을 가진 숫자 나열
  • 2임베딩 = 단어를 벡터로 변환하는 것
  • 3King - Man + Woman ≈ Queen — 벡터 연산으로 의미 관계 포착

퀴즈와 인터랙션으로 더 깊이 학습하세요

play_circle인터랙티브 레슨 시작