강좌 강좌
범주형 항목의 원-핫 표현과 임베딩 표현: 임베딩 입문
이 강좌의 목표는 범주형 항목의 원-핫 표현과 임베딩 표현이 의미 관계와 입력 부담을 다루는 방식의 차이를 이해하는 것입니다. 머신러닝 모델을 학습시키려면 음식 이름 같은 범주형 항목의 초기 수치 표현을 정해야 합니다. 가장 단순한 방법인 원-핫 인코딩의 크기 부담과 의미 관계 표현의 한계를 살펴보고, 임베딩 표현이 이 두 문제를 어떻게 다루는지 배웁니다. 텍스트를 임베딩 벡터로 바꾸는 구체적 절차나 벡터 유사도를 계산하는 방법은 이 강좌의 입력 자료가 다루지 않으므로 범위 밖입니다.
이 강좌에서 배우는 것
- 인코딩이 모델 학습에 쓸 데이터의 초기 수치 표현을 선택하는 과정임을 설명할 수 있다.
- 원-핫 표현과 임베딩 표현이 항목 사이의 의미적 관계를 다루는 방식의 차이를 비교해 설명할 수 있다.
- 임베딩의 낮은 차원 표현이 가중치·데이터·연산·메모리 부담과 어떤 관련이 있는지 설명할 수 있다.
이 강좌는 위 세 가지, 곧 범주형 항목의 두 가지 표현 방식이 의미 관계와 입력 부담을 다루는 차이에 집중합니다. 텍스트를 임베딩 벡터로 변환하는 구체적 절차와 두 벡터의 유사도를 계산·비교하는 방법은 입력 자료에서 확인할 수 없어 다루지 않습니다.
먼저 알아둘 것
출처 자료는 머신러닝 입문, 선형 회귀, 범주형 데이터, 신경망 개념에 대한 사전 이해를 전제합니다. 이 개념들이 낯설다면 먼저 해당 기초를 공부한 뒤 돌아오는 것이 좋습니다.
핵심 개념
인코딩(encoding) 은 모델 학습에 사용할 데이터의 초기 수치 표현을 선택하는 과정입니다. 즉, 학습을 위해 항목의 초기 수치 표현을 정하는 일입니다.
원-핫 인코딩(one-hot encoding) 은 항목마다 하나의 자리를 갖는 벡터(항목을 나타내는 숫자들의 묶음)를 만들어, 해당 항목의 자리만 활성화하는 방법입니다. 출처는 원-핫 인코딩처럼 만들어진 데이터를 희소(sparse) 데이터라고 부릅니다.
임베딩(embedding) 은 희소 데이터를 더 낮은 차원(벡터에 들어가는 숫자의 개수)으로 나타내어 큰 입력 벡터의 부담을 줄이는 표현입니다. 임베딩의 밀집(dense) 벡터 표현, 곧 희소 데이터를 낮은 차원으로 담아낸 표현은 항목 사이의 의미적 관계(항목들이 서로 얼마나 관련 있는지에 관한 정보)를 담을 수 있습니다.
어떻게 작동하나
- 데이터에 등장하는 항목 목록을 정한다. 출처는 음식 이름들을 예로 든다.
- 원-핫 인코딩을 쓰면 항목 수만큼 긴 벡터가 만들어지고, 이 벡터가 신경망의 입력이 된다.
- 첫 신경망 층에 들어오는 입력 벡터의 항목 수(길이)가 M이고 노드가 N개라면, 그 층에서 학습할 가중치(입력과 출력을 연결하는, 학습으로 조정되는 숫자)는 M×N개가 된다. 입력 벡터가 길수록 M이 커져 가중치 수가 늘어난다.
- 가중치가 많아지면 효과적으로 학습하는 데 필요한 데이터, 계산량, 메모리 요구가 함께 커진다.
- 임베딩을 쓰면 같은 항목을 더 낮은 차원으로 표현해 입력 벡터의 길이 M이 줄어들고, 그만큼 첫 층의 가중치 수와 관련 부담이 줄어든다. 또한 항목 사이의 의미적 관계도 담을 수 있다.
원-핫 인코딩에는 크기 부담 외에 또 다른 약점이 있습니다. 원-핫 벡터는 항목 사이의 의미 있는 유사 관계를 표현하지 못합니다. 어떤 항목인지 표시할 뿐, 어떤 항목끼리 더 비슷한지는 벡터에 담기지 않습니다. 반면 임베딩의 밀집 벡터 표현은 항목 사이의 의미적 관계를 담을 수 있습니다.
구체적인 예시
출처 자료는 항목이 5,000개인 음식 데이터를 예로 듭니다. 이 경우 원-핫 인코딩으로는 음식 하나가 길이 5,000짜리 벡터가 되고, 그중 한 자리만 활성화됩니다. 이렇게 긴 입력은 첫 신경망 층의 가중치 수를 크게 늘리고(M×N에서 입력 벡터 길이 M이 5,000), 그만큼 학습 데이터·계산량·메모리 요구도 커집니다. 임베딩은 같은 음식들을 더 낮은 차원으로 표현해 이 부담을 줄이면서, 음식 사이의 의미적 관계까지 담을 수 있게 합니다.
자주 하는 오해와 한계
오해: 항목을 숫자로 바꾸기만 하면 의미도 전달된다 원-핫 인코딩도 항목을 숫자로 바꾸지만, 항목 사이의 의미 있는 관계는 표현하지 못합니다. 숫자로 변환하는 것과 의미를 표현하는 것은 다른 문제입니다.
한계 1: 원-핫 인코딩은 규모가 커질수록 부담이 커진다 항목 수가 늘어날수록 벡터가 길어지고 가중치가 많아져, 필요한 데이터·계산량·메모리가 함께 늘어납니다.
한계 2: 기기 내 실행에서는 가중치 수 줄이기가 특히 중요하다 기기에서 직접 실행하는 머신러닝에서는 모델 크기를 줄이기 위해 가중치 수를 낮추는 일이 중요합니다. 따라서 긴 희소 벡터의 부담이 더 크게 다가옵니다.
적용 범위: 출처가 확인하는 임베딩의 역할은 큰 희소 입력의 부담과 의미 관계 부재라는 두 문제를 다루는 데 한정됩니다. 임베딩이 모든 상황에서 효율이나 성능을 높인다고 일반화할 수는 없습니다. 또한 텍스트를 임베딩 벡터로 변환하는 구체적 절차와 벡터 사이의 유사도를 실제로 계산·비교하는 방법은 입력 자료에서 확인되지 않아 이 강좌의 범위 밖입니다.
스스로 확인하기
문제 1. 인코딩에 대한 설명으로 올바른 것은 무엇입니까?
① 모델 학습에 사용할 데이터의 초기 수치 표현을 선택하는 과정이다 ② 숫자를 다시 문자로 되돌리는 과정이다 ③ 학습이 끝난 모델을 저장하는 과정이다
정답: ① — 인코딩은 모델 학습에 쓸 데이터의 초기 수치 표현을 선택하는 과정입니다. 임베딩은 이와 별도로, 희소 데이터를 더 낮은 차원으로 나타내어 큰 입력 벡터의 부담을 줄이는 표현입니다.
문제 2. 원-핫 표현과 임베딩 표현이 항목 사이의 의미적 관계를 다루는 방식의 차이로 올바른 것은 무엇입니까?
① 둘 다 의미적 관계를 똑같이 담는다 ② 원-핫 벡터는 의미 있는 유사 관계를 표현하지 못하지만, 임베딩의 밀집 벡터 표현은 의미적 관계를 담을 수 있다 ③ 원-핫 벡터만 의미적 관계를 담을 수 있다
정답: ② — 원-핫 벡터는 어떤 항목인지 자리로 표시할 뿐 항목 사이의 의미 있는 유사 관계를 표현하지 못합니다. 반면 임베딩의 밀집 벡터 표현은 항목 사이의 의미적 관계를 담을 수 있습니다.
문제 3. 첫 신경망 층에 들어오는 입력 벡터의 항목 수(길이)가 M이고 노드가 N개일 때, 가중치 수와 입력 벡터 길이의 관계는?
① 가중치 수는 M×N개이므로, 입력 벡터 길이 M이 줄면 가중치 수도 줄어든다 ② 가중치 수는 입력 벡터 길이와 무관하다 ③ 입력 벡터 길이가 줄면 가중치 수는 오히려 늘어난다
정답: ① — 첫 층의 가중치 수는 M×N개입니다. 임베딩으로 입력을 더 낮은 차원으로 표현하면 입력 벡터 길이 M이 작아져 가중치 수가 줄고, 그에 따라 필요한 데이터·계산량·메모리 부담도 줄어듭니다.
다음 학습
- 출처 모듈 이어서 읽기: 입력 자료인 머신러닝 단기집중과정의 임베딩 모듈에서 임베딩이 실제로 어떻게 다뤄지는지 더 살펴봅니다. 텍스트를 벡터로 변환하는 절차나 유사도 비교 방법을 배우고 싶다면 이를 직접 다루는 추가 자료가 필요합니다.
- 선행 개념 다지기: 출처가 전제하는 머신러닝 입문, 선형 회귀, 범주형 데이터, 신경망 기초를 복습하면 임베딩 학습이 한결 수월해집니다.