Data/ML&DL

Text Mining(임베딩)

동동 2023. 6. 6. 22:52
728x90

1. 자연어 처리 중 임베딩이란?

임베딩(Embedding)은 자연어 처리(Natural Language Processing)에서 매우 중요한 개념입니다. 이는 텍스트 데이터를 수치형 벡터로 변환하는 기술로, 컴퓨터가 텍스트를 이해하고 처리할 수 있도록 도와줍니다.

일반적으로 자연어는 텍스트로 표현되기 때문에 컴퓨터가 이를 처리하기 위해서는 수치로 변환해야 합니다. 이때, 임베딩은 각 단어나 문장을 고정된 차원의 밀집 벡터(dense vector)로 표현하는 방법입니다. 이러한 임베딩 벡터는 단어의 의미, 문법적 특성, 문맥 등을 포착할 수 있습니다.

가장 일반적으로 사용되는 임베딩 방법은 단어 임베딩(word embedding)입니다. 단어 임베딩은 단어를 고정된 차원의 벡터로 매핑하는 기술입니다. 대표적으로 Word2Vec, GloVe, FastText 등이 있습니다. 이러한 단어 임베딩 모델들은 대규모의 텍스트 데이터를 학습하여 각 단어의 분산 표현(distributed representation)을 학습합니다. 분산 표현은 단어들 간의 의미적 유사성을 보존하며, 유사한 단어들은 비슷한 벡터 공간 상에서 가까이 위치하게 됩니다.


단어의 분산 표현 : "단어의 의미"를 정확하게 파악할 수 있는 벡터(밑바닥부터 시작하는 딥러닝2(2020), p87)

문장 임베딩(sentence embedding)은 단어 임베딩을 문장 수준으로 확장한 것입니다. 문장 임베딩은 문장의 의미나 문맥을 포착하기 위해 사용됩니다. 예를 들어, 문장 간의 유사도를 측정하거나 문장 분류, 개체명 인식 등의 자연어 처리 작업에서 활용됩니다. 대표적인 문장 임베딩 방법으로는 Universal Sentence Encoder, BERT, GPT 등이 있습니다.

이렇게 임베딩된 벡터들은 수치 형태로 표현되므로 다양한 머신러닝 알고리즘에 적용할 수 있습니다. 임베딩은 텍스트 데이터의 차원을 줄이고, 특징을 추출하여 기계학습 모델의 성능을 향상시키는 데 도움을 줍니다. 또한, 단어나 문장 간의 유사도 계산, 클러스터링, 시각화 등 다양한 자연어 처리 작업에서 유용하게 활용됩니다.

2. 임베딩을 하면 뭐가 좋은가?

임베딩의 장점 중 하나는 단어나 문장 간의 유사도(Similarity)를 측정하는 데에 있습니다. 임베딩은 단어나 문장을 고차원의 벡터로 표현하므로, 벡터 간의 거리나 유사성을 계산하여 유사한 의미를 가진 단어나 문장을 찾을 수 있습니다.

임베딩을 사용하여 유사도를 측정하는 가장 일반적인 방법은 벡터 간의 거리를 계산하는 것입니다. 일반적으로 유클리드 거리(Euclidean distance)나 코사인 유사도(Cosine similarity)를 사용하여 벡터 간의 유사도를 계산합니다. 벡터 간의 거리나 유사도가 작을수록 해당 단어나 문장은 의미적으로 유사한 것으로 간주됩니다.

예를 들어, Word2Vec이나 GloVe와 같은 단어 임베딩 모델을 사용하면, "king"과 "queen"이라는 단어가 의미적으로 유사한 관계를 가지는 것을 쉽게 파악할 수 있습니다. 벡터 간의 거리를 계산하면 "king"과 "queen"의 벡터 간 거리가 "man"과 "woman"의 벡터 간 거리보다 작은 것을 확인할 수 있습니다. 이를 통해 단어 간의 유사도를 추정하고, 유의미한 패턴을 파악할 수 있습니다.

또한, 문장 임베딩을 사용하여 문장 간의 유사도를 측정하는 경우도 많이 있습니다. 예를 들어, Universal Sentence Encoder, BERT, GPT와 같은 문장 임베딩 모델은 문장을 벡터로 변환하고, 이를 사용하여 문장 간의 유사도를 계산할 수 있습니다. 이를 활용하면 텍스트 분류, 질의 응답 시스템, 문서 요약 등에서 문장 간의 의미적 유사성을 파악하고 작업을 수행할 수 있습니다.

따라서, 임베딩을 사용하면 단어나 문장 간의 유사도를 측정하여 자연어 처리 작업에서 의미적인 관련성을 파악하는 데에 매우 유용합니다. 이는 검색 엔진, 챗봇, 정보 검색, 문서 유사도 측정 등 다양한 응용 분야에서 활용될 수 있습니다.

3. 임베딩 기법의 종류(통계 v.s. 딥러닝)

3-1. 통계기반의 잠재의미 분석(LSA)

LSA(잠재 의미 분석, Latent Semantic Analysis)는 텍스트 문서의 잠재적인 의미를 추출하기 위한 임베딩 기법 중 하나입니다. LSA는 정보 검색, 문서 분류, 질의 응답 시스템 등 다양한 자연어 처리 작업에 활용됩니다.

LSA는 특이값 분해(Singular Value Decomposition, SVD)라는 선형 대수 기법을 사용하여 문서의 단어-문서 행렬을 분해합니다. 이를 통해 문서와 단어를 저차원의 공간에 임베딩하는데, 임베딩된 벡터는 단어와 문서 간의 의미적 유사성을 포착합니다.

LSA의 핵심 아이디어는 "단어는 그 주변에서 등장하는 단어들과 유사하게 사용된다"는 분포 가설입니다. LSA는 이 분포 가설에 기반하여 단어의 동시 등장 행렬(co-occurrence matrix)을 만듭니다. 이 행렬은 각 문서에서 단어가 함께 등장한 횟수를 나타내며, 문서와 단어 간의 상호작용을 반영합니다.

이후, LSA는 특이값 분해를 사용하여 동시 등장 행렬을 저차원의 단어-문서 행렬로 분해합니다. 이 단어-문서 행렬은 문서와 단어의 잠재적인 의미를 반영하며, 각 문서와 단어는 저차원의 공간에 임베딩됩니다. 이 임베딩된 벡터는 단어와 문서 간의 의미적 유사성을 계산하는 데에 활용됩니다.

LSA의 장점은 다음과 같습니다:
1. 차원 축소: LSA는 대규모 텍스트 데이터의 차원을 축소하여 연산량을 줄이고 효율적인 처리를 가능하게 합니다.
2. 의미적 유사성 포착: LSA는 단어와 문서 간의 의미적 유사성을 잘 포착하는 특징이 있습니다.
3. 단어 임베딩과 문서 임베딩 통합: LSA는 단어와 문서를 동일한 공간에 임베딩하여 통합적인 의미 표현을 제공합니다.

하지만 LSA는 몇 가지 한계점도 가지고 있습니다:
1. 단어의 선형 구조: LSA는 단어의 의미를 주로 선형 구조로 파악하기 때문에, 단어 간의 복잡한 의미 관계를 잘 포착하지 못할 수 있습니다.
2. 단어의 다의성 처리: LSA는 단어의 다의성을 처리하는 데에 어려움이 있을 수 있습니다.
3. 희소성 문제: LSA는 희소한 행렬에 적용될 경우 성능이 저하될 수 있습니다.

종합적으로, LSA는 단어와 문서의 잠재적인 의미를 추출하기 위한 유용한 임베딩 기법이지만, 보다 최신의 임베딩 기법들과 비교했을 때 성능과 특징 면에서 제한적인 부분이 있을 수 있습니다.

3-2. 뉴럴 네트워크 기반

뉴럴 네트워크 기반의 임베딩은 딥러닝을 활용하여 단어나 문장을 벡터로 표현하는 임베딩 기법입니다. 이러한 임베딩은 주로 단어 임베딩과 문장 임베딩에 사용됩니다.

1. 단어 임베딩(동음이의어 분간 어려움)
   - Word2Vec: Word2Vec은 단어 임베딩을 학습하기 위한 뉴럴 네트워크 기반의 모델로, 주로 CBOW(Continuous Bag-of-Words)와 Skip-gram 두 가지 방법이 있습니다. Word2Vec은 주변 단어를 이용하여 특정 단어를 예측하거나, 특정 단어를 이용하여 주변 단어를 예측하는 방식으로 학습됩니다.
   - GloVe: GloVe(Global Vectors for Word Representation)는 단어의 동시 등장 행렬(co-occurrence matrix)을 기반으로 단어 임베딩을 학습하는 방법입니다. GloVe는 단어 간의 동시 등장 확률 비율을 학습하여 의미적 유사성을 임베딩 벡터에 반영합니다.
   - FastText: FastText는 Word2Vec과 유사하지만, 단어를 n-그램(subword)으로 분리하여 임베딩하는 점이 다릅니다. 이를 통해 단어 내의 다양한 구성 요소를 고려하여 단어의 임베딩을 더욱 세분화할 수 있습니다.

2. 문장 임베딩(전이학습 효과가 좋음)
   - Universal Sentence Encoder: Universal Sentence Encoder는 문장 임베딩을 학습하기 위해 Transformer 아키텍처를 사용한 모델입니다. 문장을 벡터로 변환하는데에는 다양한 방법을 사용하며, 주변 문맥이나 구문 정보를 포착하여 의미를 잘 반영합니다.
   - BERT: BERT(Bidirectional Encoder Representations from Transformers)는 Transformer 모델을 사용하여 문장 임베딩을 학습하는 모델입니다. BERT는 양방향 언어 모델로, 문장 내의 모든 단어를 동시에 고려하여 임베딩을 생성하므로 문맥을 잘 이해할 수 있습니다.
   - GPT: GPT(Generative Pre-trained Transformer)는 Transformer 디코더 모델을 사용하여 문장 임베딩을 학습하는 모델입니다. GPT는 특정 단어 이후에 나타날 다음 단어를 예측하는 방식으로 학습되며, 문장 내의 단어 순서와 문맥을 잘 이해할 수 있습니다.

4. 임베딩 기법의 역사

1. 룰 기반 접근법 (Rule-based Approaches) (1990년대)
   룰 기반 접근법은 초기에 사용되었던 임베딩 기법입니다. 이 방법은 사전에 정의된 규칙을 기반으로 단어나 문장을 특정한 벡터로 매핑하는 것을 의미합니다. 예를 들어, WordNet과 같은 어휘 데이터베이스를 사용하여 단어의 동의어나 유의어를 고려하여 단어의 의미를 표현하는 방식이 있습니다. 하지만 이 방법은 사전에 정의된 규칙에 의존하므로 확장성과 일반화 능력이 제한적일 수 있습니다.

2. 앤드 투 앤드(End-to-End) 학습 (2000년대 중반)
   앤드 투 앤드 학습은 임베딩을 위한 신경망 모델을 사용하는 방법으로, 입력으로부터 출력까지 전체적인 과정을 하나의 모델로 학습하는 방식입니다. 이 방법은 데이터로부터 특징(feature)을 직접 학습하여 임베딩을 생성합니다. 예를 들어, Word2Vec과 같은 모델은 단어의 주변 단어를 이용하여 임베딩을 학습하는 앤드 투 앤드 학습의 한 예입니다. 이 방법은 텍스트 자체에서 특징을 추출하기 때문에 일반화 능력이 높을 수 있습니다.

3. 프리트레이닝 및 파인튜닝 (Pretraining and Fine-tuning) (2018~)
   프리트레이닝과 파인튜닝은 최근의 임베딩 기법 중 하나로, 대량의 비지도 학습 데이터를 사용하여 사전 학습된 모델을 생성한 후, 특정 작업에 맞게 추가 학습하는 방식입니다. 예를 들어, BERT와 GPT는 프리트레이닝 및 파인튜닝 방식을 사용하여 임베딩을 생성합니다. 먼저 대량의 텍스트 데이터를 사용하여 언어 모델을 사전 학습한 후, 특정 작업에 맞게 추가 학습하여 해당 작업에 유용한 임베딩을 생성합니다. 이 방법은 대규모 데이터를 이용하므로 더욱 많은 언어적 특징과 문맥 정보를 반영할 수 있습니다.

5. 임베딩 접근방법의 분류


1. 행렬 분해 기반 (Matrix Factorization-based):
   행렬 분해 기반 임베딩 방법은 단어-문서 행렬을 분해하여 잠재 의미를 추출하는 방식입니다. 즉, 분해한 후 행렬을 하나만 쓰거나, 더하거나 이어붙이는 방식.
  대표적인 행렬 분해 기반 임베딩 기법은 LSA(잠재 의미 분석)입니다. LSA는 단어-문서 행렬을 저차원의 잠재 공간으로 압축하는데에 SVD(특이값 분해)를 사용합니다. 이를 통해 단어와 문서 간의 의미적 유사성을 계산할 수 있습니다. 행렬 분해 기반 임베딩은 전통적인 방법 중 하나이며, 단어의 동의어나 유의어를 고려하여 의미를 잘 표현할 수 있습니다.

2. 예측 기반 (Prediction-based):
   예측 기반 임베딩 방법은 주변 단어를 예측하는 과정에서 임베딩을 학습하는 방식입니다. 주변 단어를 입력으로 받아 해당 단어를 예측하는 신경망 모델을 훈련함으로써 단어의 임베딩을 생성합니다. 대표적인 예측 기반 임베딩 기법은 Word2Vec이며, CBOW(Continuous Bag-of-Words)와 Skip-gram 두 가지 방법이 있습니다. 예측 기반 임베딩은 주변 단어의 문맥을 고려하여 단어 간의 의미적 유사성을 잘 반영할 수 있습니다.

3. 토픽 기반 (Topic-based):
   토픽 기반 임베딩 방법은 단어와 문서의 잠재적인 토픽을 추출하여 임베딩하는 방식입니다. 이 방법은 토픽 모델링의 개념을 기반으로 합니다. 대표적인 토픽 기반 임베딩 기법은 Latent Dirichlet Allocation (LDA)입니다. LDA는 단어의 토픽 분포와 문서의 토픽 분포를 추정하여 단어와 문서를 토픽 공간에 임베딩합니다. 토픽 기반 임베딩은 단어의 의미를 토픽으로 표현하여 의미적 유사성을 이해하기 쉽게 합니다.


728x90