본문 바로가기
학습/AI

임베딩(Embedding) 이란?

by 황성안 2025. 11. 13.
728x90
반응형

🧩 임베딩(Embedding)이란?

임베딩

“단어 같은 이산적(discrete) 데이터를 연속적(continuous) 수치 벡터로 변환하는 과정” 입니다.

즉, 텍스트나 카테고리 데이터를 딥러닝 모델이 이해할 수 있는 숫자 형태(벡터)로 표현하는 기술이에요.


💡 왜 임베딩이 필요할까?

  • RNN이나 CNN은 숫자 벡터만 입력받을 수 있습니다.
  • 하지만 텍스트 데이터는 문자열이죠.
  • 따라서 단어를 숫자로 바꿔야 합니다.

단순히 “원-핫 인코딩(one-hot encoding)”을 쓰면?

단어 원-핫 인코딩 벡터
cat [1, 0, 0, 0]
dog [0, 1, 0, 0]
apple [0, 0, 1, 0]
car [0, 0, 0, 1]

이 방식의 문제점 👇

  1. 차원이 너무 커짐 (단어 수가 많을수록 벡터 길이 폭발)
  2. 단어 간 관계가 전혀 없음
    • “king”과 “queen”은 전혀 다른 벡터
    • “cat”과 “dog”의 유사성도 표현 불가

🧠 그래서 등장한 것이 “임베딩(Embedding)”

임베딩은 단어를 저차원 실수 벡터 공간에 매핑(mapping) 합니다. 이 공간에서는 의미가 비슷한 단어끼리 가까이 위치합니다.

예를 들어:

단어 임베딩 벡터 예시
king [0.8, 0.1, 0.9]
queen [0.7, 0.2, 0.8]
man [0.6, 0.3, 0.1]
woman [0.5, 0.4, 0.2]

📍 관계:

king - man ≈ queen - woman

➡️ 단어 간의 의미적 거리(semantic distance) 가 반영됨


🧮 Keras에서의 Embedding 층

from tensorflow.keras.layers import Embedding

Embedding(input_dim, output_dim, input_length)
매개변수 설명
input_dim 단어(토큰)의 개수 (예: 5000개 단어 사전)
output_dim 임베딩 벡터의 차원 (보통 50~300)
input_length 입력 시퀀스의 길이 (RNN에 들어갈 단어 수)

예시:

model = Sequential([
    Embedding(input_dim=5000, output_dim=100, input_length=20),
    SimpleRNN(64),
    Dense(1, activation='sigmoid')
])

➡️ Embedding 층이 “원-핫 벡터”를 “100차원 의미 벡터”로 변환해 RNN에 전달함.


🔍 정리

구분 원-핫 인코딩 임베딩
차원 단어 수만큼 큼 수십~수백 차원
학습 고정된 벡터 학습을 통해 갱신 가능
관계 표현 불가능 유사한 단어끼리 가까이 위치
메모리 효율 매우 낮음 매우 효율적
예시 [0,0,0,1,0,0] [0.45, -0.13, 0.72, ...]

✨ 한 줄 요약

임베딩(Embedding)은 “단어를 의미적으로 표현하는 실수 벡터로 변환하는 과정”으로, RNN이나 LSTM이 문맥과 의미를 이해하도록 돕는 핵심 기술이에요.


728x90
반응형