공부방

LLM 과 임베딩

lala9663 2024. 8. 26. 22:47

회사에서 LLM과 관련하여 임베딩에 대한 주제가 나와 대화하는데 정확하게 알지 못해서 어려웠던 경험이 있다.
그래서 임베딩에 대해 조금 알아보려고 한다.

임베딩(Embedding)은 자연어 처리(NLP) 및 머신러닝 분야에서 중요한 개념으로, 텍스트 데이터를 수치 벡터로 변환하는 기술이다.
우선 간단하게 임베딩의 개념, 종류부터 찾아보았다.

1. 임베딩이란?

임베딩은 텍슽트, 이미지, 음성 등 다양한 컴퓨터가 데이터를 고차원의 공간에서 저차원의 벡터로 변환하는 과정이라고 한다.
이를 통해 컴퓨터가 데이터를 보다 효율적으로 처리하고, 유사성을 계산하거나 예측 모델에 입력할 수 있게 된다.
임베딩의 주요 목적은 의미적으로 유사한 데이터를 벡터 공간에서도 가깝게 배치하는 것이다.
예를 들어, "고양이"와 "개"라는 단어는 의미적으로 유사하므로 임베딩 공간에서도 이 두 단어가 가깝게 배치된다.

2. 임베딩의 종류

2.1 Word2Vec

Word2Vec은 구글에서 개발한 단어 임베딩 기법으로, 단어를 저차원 벡터로 표현하는 방법이다.
Word2Vec은 크게 두가지 접근 방식으로 나뉜다.

  • CBOW(Continuous Bag of Words): 주변 단어들을 기반으로 중심 단어를 예측하는 방식
  • Skip-gram: 중심 단어를 기반으로 주변 단어들을 예측하는 방식

2.2 GloVe(Global Vectors for Word Representation)

GloVe는 Word2Vec과 유사하지만, 전역적인 통계 정보를 사용하여 단어 벡터를 학습한다.
Glove는 특정 단어가 문서 전체에서 얼마나 자주 등장하는지와 그 단어가 다른 단어들과 얼마나 자주 함께 등장하는지를 고려한다.

2.3 FastText

FastText는 페이스북 AI 연구팀에서 개발한 임베딩 기법으로, 단어를 n-그램으로 분해하여 각 n-그램의 임베딩을 합산하여 단어 임베딩
을 생성한다. 이를 통해 철자 기반의 유사성을 고려할 수 있어 새로운 단어에 대한 임베딩을 생성할 수 있는 장점이 있다.

2.4 BERT(Bidirectional Encoder Representations from Transformers)

BERT는 트랜스포머 모델을 기반으로 한 양방향 임베딩 기법이다. BERT는 단어의 좌우 문맥을 동시에 고려하여 임베딩을 생성한다. 이는 문장의 전체적인 의미를 이해하는데 매우 효과적이다. BERT는 사전 학습된 모델을 통해 다양한 자연어 처리 작업에 쉽게 적용할 수 있다.

3. 임베딩 대표적인 사용

3.1 자연어 처리

임베딩은 자연어 처리(NLP)에서 단어의 의미를 벡터로 표현하는 데 사용한다. 예를 들어, 텍스트 분류, 감성 분석, 기계 번역 등 다양한 NLP 작업에서 임베딩이 중요한 역할을 한다.

3.2 추천 시스템

사용자의 행동 데이터를 임베딩으로 변환하여 유사한 사용자 또는 아이템을 추천하는 데 사용된다. 예를 들면, 사용자의 검색 기록을 바탕으로 관심 있는 상품을 추천하거나, 음악 스트리밍 서비스에서 유사한 음악을 추천 하는 경우가 있다.

3.3 컴퓨터 비전

이미지 임베딩을 통해 이미지의 시작걱 특성을 벡터로 표현하여 이미지 검색, 객체 인식, 이미지 캡션 생성 등 다양한 컴퓨터 비전 작업에 활용된다.

4. 임베딩과 LLM

LLM은 자연어 이해와 생성 작업에서 뛰어난 성능을 발휘하며, 임베딩 기법을 통하여 언어의 의미적 구조를 효과적으로 학습할 수 있다.
LLM과 할루시네이션 등등 은 나중에 다른 글에서 자세하게 정리해보겠다.

4.1 임베딩과 LLM의 관계

LLM은 방대한 양의 텍스트 데이터를 학습하여 언어의 패넡과 구조를 이해하는 모델이다.
임베딩은 이러한 학습 과정에서 중요한 역할을 한다. 임베딩은 텍스트의 각 단어를 고차원의 실수 벡터로 변환하여, 단어 간의 유사성을 벡터 공간에서 표현할 수 있게 한다. 이를 통해 LLM은 문장의 의미를 보다 정확하게 파악하고, 유사한 의미를 가진 단어를 유사한 벡터로 매핑할 수 있다.

임베딩은 LLM의 입력 및 내부 표현 방식에서 중요한 부분을 차지한다. 예를 들어, LLM은 입력된 문장을 입베딩 벡터로 변환하여 모델의 입력으로 사용하고, 모델의 내부에서 다양한 계층을 거치며 임베딩 벡터를 조정하고 변환하여 최종적인 예측을 수행한다.

4.2 LLM에서 임베딩의 역할

  1. 초기 임베딩
    LLM은 학습 과정에서 문장을 토큰화(tokenization)하고, 각 토큰을 임베딩 벡터로 변환한다. 이 초기 임베딩은 모델이 학습 데이터를 처리하고, 패턴을 학습하며, 추론을 수행할 수 있는 기초가 됩니다. 일반적으로 이 임베딩은 랜덤하게 초기화된 후, 학습 과정을 통해 최적화된다.

  2. 문맥 임베딩(Contextual Embedding)
    초기의 정적 임베딩(static embedding)과 달리, LLM은 문맥에 따라 단어의 의미가 달라지는 것을 반영하는 문맥 임베딩(contextual embedding)을 사용한다. 예를 들어, "bank"라는 단어는 문맥에 따라 "강둑"을 의미할 수도 있고, "은행"을 의미할 수도 있다. BERT와 같은 모델은 양방향 트랜스포머 구조를 사용하여, 단어의 양쪽 문맥을 고려해 각 단어의 임베딩을 생성한다. 이를 통해 문맥에 따라 단어의 의미가 다르게 표현될 수 있다.

  3. 임베딩을 통한 전이 학습(Transfer Learning)
    LLM은 일반적으로 대규모 데이터셋으로 사전 학습(pre-training)을 거친 후, 특정 작업에 맞게 미세 조정(fine-tuning)된다. 이 과정에서 임베딩 층은 중요한 역할을 한다. 사전 학습된 임베딩은 모델이 새로운 작업에서도 높은 성능을 발휘할 수 있게 해준다. 예를 들어, LLM이 문서 분류 작업에 미세 조정될 때, 사전 학습된 임베딩은 이미 많은 언어적 지식을 포함하고 있어, 적은 양의 추가 데이터로도 효과적인 학습이 가능하다.

RPA와의 결합

현재 내가 주 업무를 담당하고 있는 RPA 운영, 개발에서의 조합 및 방향성에 대해 생각해보았다.
현재 RPA는 간단한 업무, 메일 처리 같은 부분만 RPA로 만들어 사용중에 있다.

LLM과 임베딩을 결합하면 단순한 규칙 기반 자동화를 넘어서 훨씬 더 지능적이고 복잡한 자동화 작업을 수행할 수 있을 거라 생각된다.
이 결합은 RPA가 처리할 수 있는 작업의 범위를 매우 크게 확장 시키고, 보다 정교하게 사용 가능할 것이라 예상된다.