이번에 알아볼 것은
인코딩(Encoding)과 임베딩(Embedding)의 차이
에 대해서 알아보고자 합니다.
인코딩과 임베딩은 둘 다 데이터를 다른 형식으로 변환하는 과정이지만, 그 목적과 방식에 차이가 있습니다.
1. 인코딩(Encoding)
1) 인코딩(Encoding)
- 인코딩은 데이터를 특정 형식으로 변환하는 과정을 말합니다.
- 인코딩의 주요 목적은 데이터를 다른 시스템이나 저장 매체에서 처리할 수 있도록 변환하는 것입니다.
- 예를 들어, 텍스트 데이터를 숫자 형식으로 변환하거나, 이진 데이터를 특정 문자셋으로 변환하는 것을 의미합니다. 아래는 대표적인 인코딩의 예시입니다
a) 텍스트 인코딩(UTF-8)
* UTF-8 인코딩은 텍스트 데이터를 바이트 형식으로 변환하는 일반적인 방법을 말합니다.
* 이는 유니코드의 가변 길이 문자 인코딩 방식으로, 다양한 문자를 효율적으로 표현할 수 있습니다.
* 아래는 파이썬 코드를 활용해서 알아본 예시입니다.
* 문자열이 UTF-8의 형식으로 바꾼 것을 알 수 있습니다.
b) 카테고리 인코딩 / 원핫 인코딩(One-Hot Encoding)
* 카테고리 데이터(범주형 데이터)를 숫자 벡터로 변환하는 방법을 말합니다. 각 카테고리는 고유한 벡터로 변환되며, 해당 카테고리의 위치에만 1을 갖고 나머지 위치에는 0을 가지게 만드는 방법을 말합니다.
red는 [0,0,1]로, green은 [0,1,0]으로, blue는 [1,0,0]으로 변환된 것을 확인할 수 있습니다.
c) 마지막으로 해시 인코딩(Hash encoding)에 대해서 알아보겠습니다. 해시 함수를 활용해서 텍스트 데이터를 고정된 크기의 벡터를 변환하는 방법을 말합니다. 주로 대규모 텍스트 데이터를 인코딩할 때 사용됩니다.
위 3개의 단어가 다음과 같이 10차원의 벡터로 변환된 것을 확인할 수 있습니다.
(이때, 해시 인코딩은 다음에 알아볼 임베딩과의 차이점이 있습니다. 해시 인코딩은 해시 암수를 활용해서 데이터를 고정된 크기의 벡터로 변환한다는 것이 그 차이입니다)
2. 임베딩(Embedding)
- 임베딩은 고차원 데이터를 저차원 벡터 공간으로 변환하는 것을 의미합니다.
- 임베딩의 주 목적은 원본 데이터의 의미를 최대한 보존하면서 데이터의 차원을 줄여서 처리 성능을 향상시키는 것을 의미합니다.
- 주로 자연어 처리(NLP)에서 단어를 벡터로 변환하는데 사용됩니다.
* 예시로는, 단어를 고유한 벡터로 변환하여 의미적으로 유사한 단어들이 벡터 공간에서 가까이 위치하도록 하는 것입니다.
* 대표적으로 Word2Vec이 있는데 이를 활용한 예시를 통해 알아보겠습니다.
* gensim library에 내장된 Word2Vec을 활용하였습니다.
Word2Vec을 활용해서 주어진 setences를 의미 단위로 토큰화 한 뒤, 인코딩하고, 이를 의미적으로 가까운 것들이 서로 가까운 위치에 있도록 해줍니다.(의미적으로 가까운 것들을 가깝게 해주는 과정이, 위에서 알아본 단순 인코딩과 차이임을 알 수 있습니다)
이 과정은 Word2Vec의 사전에 학습된 파라미터를 활용했습니다.
그리고, 이렇게 고차원으로 임베딩된 벡터들을 2차원으로 시각화하기 위해 PCA라는 차원축소 기법을 활용해 2차원 평면상에 투영(Projection)하여 시각화한 예시입니다.
'딥러닝 with Python' 카테고리의 다른 글
[딥러닝 with Python] 이미지 리트리버(Image Retrieval) / CLIP 으로 구현 (0) | 2024.07.30 |
---|---|
[딥러닝 with Python] 파이썬 코드로 구현해보는 트랜스포머 (1) | 2024.07.29 |
[개념 정리] N-gram이란? N-gram 언어 모델이란? (0) | 2024.07.27 |
[개념 정리] 형태소 분석(Morphological Analysis) (0) | 2024.07.26 |
[개념정리] MLE(Maximum Likelihood Estimation)와 MAP(Maximum A Posteriori Estimation) (0) | 2024.07.25 |
댓글