인공지능

Embedding(12)

원담 2025. 5. 24. 10:54
728x90

Embedding이란?

  • 정의: 추상적 대상(단어, 범주 등)을 고차원 공간에서 낮은 차원의 숫자 벡터로 표현하는 것
  • 목적: 컴퓨터가 이해하고 처리할 수 있도록 의미를 담은 수치 표현으로 변환
  • 인공지능 신경망은 숫자 입력만 처리 가능 → 텍스트, 범주형 등 비정형 데이터를 숫자로 바꿔야 함
  • 예: 텍스트(감정 분석, 분류) → 신경망에 입력 전 벡터화 필요

벡터화의 기본: One-Hot Encoding

  • 각 단어/값을 고유한 위치에 1만 넣는 방식 (예: red → [1,0,0], blue → [0,1,0])
  • 한계점:
    • 희소(sparse)한 벡터 → 메모리 낭비
    • 의미 정보 없음 (red와 blue의 유사성 표현 불가)

Embedding의 강점

  • 의미 있는 수치 표현을 학습 (유사한 단어 → 유사한 벡터) → 유사성 계산, 분류, 예측 가능
  • 예: 고양이(cat) ≈ 새끼고양이(kitten), 남자(man) + 여왕(queen) ≈ 여자(woman) + 왕(king)

 

Word Embedding 단어를 의미 기반의 실수 벡터로 표현
Graph Embedding 그래프 구조를 벡터로 압축해 표현 (노드 유사성 등 판단 가능)
Category Embedding 범주형 변수(color, brand 등)의 의미 관계를 벡터로 학습
 

Word Embedding 기법 종류에는 단순변환(One hot vector), 데이터 분포 기반 특징 추출(Bag of Words, Word2Vec, GloVe, FastText) 가 있다.

 

  • 단순 변환
    • One-hot vector: 의미 정보 없음
  • 데이터 분포 기반 벡터화
    • Count Based (등장 횟수 기반)
      • Bag of Words
      • GloVe (전역 통계 기반)
    • Prediction Based (예측 기반)
      • Word2Vec
      • FastText

 

워드 임베딩 종류

단어 빈도 기반 벡터화

Bag of Words (BoW) 단순 출현 횟수 (빈도 기반)

  • 아이디어: 단어의 출현 횟수(Frequency)만 고려하여 문장을 숫자로 표현하는 방식.
  • 예시: 문장에 등장한 단어들의 ‘빈도 수’를 세어 벡터로 만든다.
  • 의미는 고려하지 않음. 단어 순서도 무시됨.
  •  예: 'Your time is limited, don’t waste it’ → ['your', 'time', 'is', 'limited', 'don’t', …] 라는 단어 집합 기준으로 벡터화.

TF-IDF (Term Frequency - Inverse Document Frequency) 출현 빈도 + 문서 간 분포까지 고려한 가중치 방식

  • 문서 간 중요 단어를 구별하기 위한 방법
  • TF: 특정 단어가 문서에서 얼마나 자주 등장했는가
  • IDF: 그 단어가 전체 문서 중 몇 개 문서에 나타나는가 → 자주 등장하면 중요도 낮음
  • "모든 문서에 흔히 등장하지 않고, 특정 문서에서만 자주 나오는 단어가 핵심이다!"

예측 기반 벡터화

Word2Vec

"유사한 단어는 유사한 문맥에서 등장한다."

중심 단어의 주변 단어들을 이용해 중심단어를 추론하는 방식으로 학습하여 단어가 가지는 의미 자체를 다차원 공간에 벡터화 하는 방법이다. 단어간의 유사도 측정이 가능하고, 단어간의 관계를 파악할 수 있는게 특징이다. 단어의 의미는 그 주변에 어떤 단어가 함께 나오는가로 정의된다. Word2Vec은 문맥 정보를 바탕으로 단어를 벡터로 바꿔줍니다.

  • 유사한 단어들은 벡터 공간에서 가까운 위치
  • 단어는 다양한 유사도 방향을 가질 수 있음

Word2Vec의 두 가지 모델

  • CBOW (Continuous Bag of Words)
    • 중심 단어를 예측하는 방식
    • 주변 단어들이 주어졌을 때, 중심 단어가 무엇일지를 맞추도록 학습
      예: 오늘 점심에 중국집에서 [자장면]을 먹었다 → [오늘, 점심, 중국집, 먹었다]로 [자장면] 예측
  • Skip-gram
    • 중심 단어로부터 주변 단어를 예측
      같은 문장에서 자장면을 입력으로 넣고 → [오늘, 점심, 중국집, 먹었다] 예측
      → 데이터가 적을 때 더 유리하고, 다양한 문맥을 학습하기에 좋다

두 방식 모두 학습이 끝나면, 각 단어는 의미를 담은 벡터로 변환된다.

Word2Vec은 단어가 벡터로 바뀌었기 때문에, 단어들 간의 의미 관계를 수학적 연산으로도 표현할 수 있다.

GloVe (Global Vectors for Word Representation)

단어의 의미를 함께 등장하는 확률(동시 등장 빈도)를 기반으로 표현함. 예를 들어, "ice"는 "solid"와 자주 같이 등장하고, "steam"은 "gas"와 자주 등장한다면 이를 수치화해서 벡터 간 의미 관계를 반영한다. 윈도우 내에 함께 출현한 단어들의 출현 빈도를 맞추도록 훈련한다.

FastText

Word2Vec은 낯선 단어(OOV, Out of Vocabulary)에 대한 대처가 어려웠기 때문에 탄생하게 되었다. 예를 들면 "Superduperness"라는 신조어가 등장하면 Word2Vec은 벡터를 아예 모르기 떄문에 FastTest 는 단어를 문자 단위로 쪼갠 후에 → 예: "Superduperness" → <superduper, ness> n-gram 단위 벡터를 평균 내어 단어 벡터를 만든다.

장점:

  • 철자 구조만 알면 처음 보는 단어도 벡터 생성 가능
  • 유연하고 일반화에 강함

요약

방법  벡터화  대상 방식  장점  단점
One-hot Encoding 단어 단어 하나만 1, 나머진 0 간단, 직관적 단어 의미 반영 못함, 차원 너무 큼, sparse
BoW (Bag of Words) 문서 각 단어의 등장 횟수를 벡터로 문서 특징 반영, 쉬움 단어 순서 무시, 의미 파악 불가
TF-IDF 문서 자주 나오지만 흔하지 않은 단어에 가중치 부여 핵심 단어 부각 여전히 순서, 의미 정보 없음
Word2Vec 단어 주변 단어 예측 기반 의미 벡터 학습 단어 의미 파악 가능, 유사도 계산 가능 드물게 나오는 단어 학습 어려움
GloVe 단어 전체 말뭉치 동시 등장 빈도로 벡터 생성 의미 + 전역 통계 반영 데이터 전체 스캔 필요
FastText 단어 단어를 n-gram(부분 단어) 단위로 쪼개서 표현 OOV(신조어 등)에 강함, 단어 내부 정보 활용 계산량 많음, 과적합 위험

Embedding Layer란?

텍스트를 인공지능 모델이 이해할 수 있는 숫자 벡터(Embedding Vector)로 바꿔주는 다리

인공지능 모델은 문자나 단어 그 자체는 이해하지 못하고, 모델은 오직 숫자만 다룰 수 있기 때문에, 텍스트 데이터를 숫자로 바꾸는 전처리 과정이 필요하다. 이때, 단어를 단순한 숫자 ID가 아니라 의미까지 반영된 벡터로 바꿔주는 게 바로 Embedding Layer 이다.

임베딩 레이어

즉, Embedding Layer는 딥러닝 모델에서 입력층과 은닉층 사이에 위치해, 단어를 의미 기반 벡터로 바꿔주는 역할을 한다.

미리 학습을 통해 얻어진 임베딩 벡터를 신경망에 넣어주는것이 아니라 학습을 통해서 임베딩 벡터를 획득한다.

  • Embedding Layer는 모델 내부에서 학습을 통해 임베딩 벡터를 만들어 간다.
  • 즉, 임베딩 벡터는 훈련 데이터에 따라 계속 업데이트되며, 문맥 속에서 어떤 단어가 어떤 의미인지를 학습해 간다.
구분 
설명  예시
임베딩 벡터 (Embedding Vector) 단어가 의미 기반으로 숫자로 표현된 결과 (숫자 벡터) king → [0.25, 0.74, -0.81, ...]
임베딩 레이어 (Embedding Layer) 단어를 임베딩 벡터로 바꿔주는 레이어, 즉 변환기 "king"을 넣으면 위 임베딩 벡터를 출력함

예시

주택 가격 예측

1. 입력: 단어들 (Words in real estate ad)

  • 부동산 광고 문장에서 추출된 단어들(예: "spacious", "garage", "near park" 등)
  • 처음에는 단어 ID로 표현됨 → 예: "spacious" = 42, "garage" = 77

2. Sparse Vector Encoding

  • 원핫 인코딩(One-hot vector)처럼 단어 하나당 하나의 위치에만 1이 있는 아주 희소한 벡터.
  • 예: "garage" → [0, 0, ..., 1, ..., 0]

3. Embedding Layer 적용

  • 이 희소한 벡터는 임베딩 레이어를 통과하면서 밀집된 벡터로 변환됨.
  • 예:원래 → [0, 0, ..., 1, ..., 0] => 임베딩 후 → [0.3, -0.1, 0.8] (예: 3차원)

4. 변환된 임베딩 벡터들을 조합

  • 여러 단어들의 임베딩 벡터를 평균/합치거나, 문장 단위 벡터로 만들어 다음 레이어로 전달

5. Fully Connected Layer (은닉층)

  • 그 다음, 은닉층(MLP)을 지나면서 패턴을 학습

6. 출력: Sale Price 예측

  • 최종 출력은 주택 가격(Sale Price) 예측
  • 이 과정에서 L2 Loss(= MSE 손실 함수)가 사용됨
728x90