728x90
반응형
SMALL
원-핫 인코딩이란 무엇인가요 ?
원-핫 인코딩은 단 하나의 값만 1(Hot) 이고 나머지는 모두 0(Cold)인 벡터로 단어를 표현하는 방식이다. 컴퓨터에게 "이 리스트에서 n번째 자리에 있는 단어가 바로 내가 말하는 단어야!"라고 가리키는 것과 같다.
예: 단어 사전에 [사과, 바나나, 포도]가 있다면?
- 사과: [1, 0, 0]
- 바나나: [0, 1, 0]
- 포도: [0, 0, 1]
-> 범주형 데이터를 "하나만 1이고 나머지는 0"인 벡터로 표현하는 방법
왜 사용하는가?
컴퓨터는 숫자만 이해한다.
고양이 = 0
강아지 = 1
새 = 2
이렇게 넣으면 문제 발생
-> 모델이 순서/크기 관계가 있다고 착각
그래서 !
[0,1,0] 같은 독립적인 벡터로 표현
-> 관계 없음
반응형
핵심 특징
- 서로 완전히 독립 (orthogonal)
- 거리 개념 없음
- 단순하고 직관적
원-핫 인코딩의 장점
- 구현이 매우 단순함 : 별도의 복잡한 학습 알고리즘 없이도 즉시 테스트를 숫자로 바꿀 수 있다.
- 명확한 구분 : 각 단어가 완전히 독립적인 축을 가지므로, 서로 다른 단어라는 것을 모델에게 확실히 각인시킨다.
치명적인 단점 (왜 임베딩으로 넘어갔을까?)
단순함 뒤에는 실무에서 쓰기 어려운 큰 문제점들이 숨어 있다.
- 의미적 유사성 결여 (No semantic Relationship)
원-핫 벡터들끼리른 서로 직교(orthogonal)한다. 즉, 수학적으로 '사과'와 '배'의 거리는 '사과'와 '자동차'의 거리와 똑같다. 컴퓨터는 이 방식만으로는 단어 사이의 관계나 의미를 전혀 이해할 수 없다. - 차원의 저주
단어 사전에 10만 개의 단어가 있다면, 단어 하나를 표현하기 위해 99,999개의 0과 단 하나의 1이 들어간 거대한 리스트가 필요하다. 이는 엄청난 메모리 낭비와 연산 효율 저하를 야기한다.
728x90
작동 프로세스
- 단어 사전 구축 : 데이터셋에 있는 모든 고유 단어를 모아 중복을 제거하고 리스트를 만든다.
- 고유 인덱스 부여 : 각 단어에 0번부터 순차적으로 번호를 매긴다.
- 벡터 변환 : 사전의 전체 크기만큼 0으로 채워진 벡터를 만들고, 해당 단어의 인덱스 위치만 1로 바꾼다.
코드
Python 예제
import numpy as np
labels = [0, 1, 2]
one_hot = np.eye(3)[labels]
print(one_hot)
PyTorch
import torch
labels = torch.tensor([0, 1, 2])
one_hot = torch.nn.functional.one_hot(labels, num_classes=3)
print(one_hot)
TensorFlow
import tensorflow as tf
labels = [0, 1, 2]
one_hot = tf.one_hot(labels, depth=3)
print(one_hot)
원-핫 인코딩의 한계를 해결하기 위해:
방법설명
| 방법 | 설명 |
| Word Embedding | 의미를 벡터로 표현 |
| Word2Vec | 단어 간 관계 학습 |
| GloVe | 통계 기반 |
| Transformer Embedding | 문맥 반영 |
요약 및 결론
원-핫 인코딩은 데이터가 적고 단어 간의 관계가 중요하지 않은 아주 기초적인 분류 작업에는 유용할 수 있다. 하지만, 우리가 배우는 LLM처럼 복잡한 문맥과 의미를 다뤄야 하는 분야에서는 임베딩을 사용한다.
원-핫 인코딩은 범주형 데이터를 서로 독립적인 벡터 공간으로 변환하여 모델이 잘못된 순서 관계를 학습하지 않도록 만드는 가장 기본적인 표현 방식이다.
단어 사전 크기만큼의 공간을 만들고 해당 단어 위치만 1로 표시. (의미 파악 불가, 공간 낭비 심함)
728x90
반응형
'LLM' 카테고리의 다른 글
| 11. CBOW (Continuous Bag of Words) (0) | 2026.04.23 |
|---|---|
| 10. Word2Vec (0) | 2026.04.22 |
| 8. 임베딩(Embedding) (0) | 2026.04.17 |
| 7. SentencePiece (0) | 2026.04.15 |
| 6. WordPiece (0) | 2026.04.14 |