머신러닝에서 임베딩(embedding) 은 고차원·희소(sparse)한 데이터를 의미를 유지한 채 저차원·밀집(dense) 벡터로 변환한 표현 방식이다.
원래 데이터는 머신러닝 모델이 바로 이해하기 어려우니, 숫자 벡터로 바꿔서 의미를 담도록 표현한 것.
왜 임베딩을 쓰는가?
머신러닝 모델 대부분은 수치 벡터를 입력으로 받는다. 문자열, 카테고리, 단어, 이미지 패치 등은 바로 학습할 수 없다.
임베딩을 사용하면:
- 고차원 데이터 → 저차원 벡터
- 희소 벡터 → 밀집 벡터
- 의미적으로 비슷한 것끼리 → 비슷한 벡터로 위치
임베딩이 필요한 대표 상황
1. 범주형 변수 (Categorical Features)
예: 직업, 나이대, 지역, 상품 ID 등
One-hot encoding은 차원이 매우 커지며 의미를 담지 못한다. 그래서 Embedding Layer를 사용한다 (특히 추천 시스템에서).
User ID: 1234 → [0.12, -0.44, 1.02, …]
Item ID: 9981 → [0.88, 0.03, -0.55, …]
비슷한 유저/상품은 비슷한 벡터가 생성된다.
2. 자연어 처리 (NLP)
단어/문장을 벡터로 표현하는 기술:
- Word2Vec
- GloVe
- FastText
- BERT 임베딩
- GPT 임베딩
king → [0.5, 0.1, 0.7, …]
queen → [0.48, 0.12, 0.68, …]
king - man + woman ≈ queen
3. 추천 시스템 (Recommender System)
유저, 아이템을 임베딩 공간에 위치시키면 유사도(코사인 유사도 등)를 통해 추천 가능.
- 유저 임베딩: 사용자의 선호도 표현
- 아이템 임베딩: 콘텐츠 특성/장르 등 표현
4. 이미지/오디오 임베딩
CNN, Vision Transformer 등에서 이미지 → 벡터 변환
예: 이미지 검색, 얼굴 인식 → 비슷한 이미지끼리 가까운 벡터 위치
임베딩의 핵심 특징
| 특성 | 설명 |
|---|---|
| 밀집 벡터 | 대부분의 값이 0이 아닌 dense vector |
| 저차원 | 효율적 처리 (일반적으로 16~1024차원) |
| 의미 보존 | 유사 데이터는 가까운 벡터로 표현 |
| 학습 가능 | 네트워크가 end-to-end로 학습함 |
| 일반화 능력 | 보지 못한 데이터도 표현 가능 |
임베딩을 사용하는 이유
- 차원 축소 효과: CPU/GPU 메모리 절약 + 학습 속도 증가
- 높은 정보력: 희소한 원-핫 벡터보다 훨씬 정보력이 높음
- 의미적 유사성: 데이터 간 의미적 유사성을 수치로 표현
- End-to-end 학습: 딥러닝과 결합하여 end-to-end 학습 가능
코드 예시
embedding = Embedding(input_dim=10000, output_dim=64)
word_id = 123
vector = embedding(word_id)
# → shape (64,) 벡터
단어 ID 123 → 64차원 의미 벡터로 변환됨.
요약
임베딩 = 의미를 보존한 채 데이터를 저차원 벡터로 표현하는 기술. 머신러닝 모델이 ‘이해할 수 있는 형태’로 만드는 핵심 단계.