본문 바로가기
프로그래밍/AI 머신러닝,LLM

LLM 기초

by -현's- 2025. 4. 23.
반응형

●LLM (Large Language Model) 

LLM은 대량의 텍스트 데이터를 학습한 딥러닝 모델로,주어진 입력에 대해 사람처럼 텍스트를 생성하거나 이해할 수 있습니다.

실무에서는 LLM모델을 직접 만들기보다는 GPT, LLaMA, Gemini같은 사전학습된 모델을 다운받아 특정 주제를 추가학습(파인튜닝)하여 사용합니다.

ㅇ주요 개념 정리
-Pre-training (사전 학습) : 대규모 데이터셋에서 언어 패턴을 학습
-Fine-tuning (미세 조정) :  특정 도메인(예: 의료, 법률)에 맞게 추가 학습
-Prompt Engineering :  LLM이 원하는 답을 하도록 입력을 조정
-Self-Attention :  입력 문장에서 중요한 단어에 더 집중하는 메커니즘
-Tokenization :  문장을 작은 단위(토큰)로 변환하는 과정

ㅇ대표적인 LLM 모델들
-BERT (2018) 문맥을 양방향으로 이해하는 모델 (Google)
-GPT-3 (2020) 생성 능력이 뛰어난 모델 (OpenAI)
-GPT-4 (2023) 대규모 언어 모델 중 가장 강력한 성능
-LLaMA (2023) Meta가 개발한 오픈소스 모델
-Gemini (2024) Google DeepMind에서 개발한 최신 모델

반응형

●Transformer 이란?

Transformer는 LLM의 핵심 구조로, 2017년 논문 'Attention Is All You Need'에서 처음 소개된 딥러닝 모델입니다.

이전의 RNN, LSTM 등의 단점을 보완하고 자연어 처리(NLP)에서 혁신적인 성능을 보인 모델입니다.

현재 많이 쓰이는 사전학습된 LLM모델 대부분 Transformer를 기반으로 하고 있습니다.

 

●LLM에서 토큰(token)이란?

 토큰(은 모델이 입력과 출력을 처리할 때 사용하는 최소 단위입니다.

자연어 처리(NLP)에서 토큰은 단어, 부분 단어, 또는 문자일 수 있습니다.

많은 AI관련 서비스에서는 토큰단위로 과금을 하고 있습니다. 토큰이 중요한 이유는 LLM이 한번에 처리 할 수 있는 최대 토큰이 정해져 있고, 토큰수에 따라 속도가 달라질 수 있기 때문입니다.

 

●파운데이션 모델

대규모 데이터로 사전 학습된 모델로, 다양한 다운스트림 작업(예: 텍스트 생성, 번역, 이미지 생성 등)에 맞춰 추가 학습(Fine-tuning)하거나 바로 사용할 수 있는 범용 모델을 의미합니다.

대표적인 파운데이션 모델로는 OpenAI의 GPT 시리즈, Meta의 Llama, Google DeepMind의 Gemini, Stability AI의 Stable Diffusion 등이 있습니다.

 

●임베딩

단어와 문장 등을 컴퓨터가 알수 있는 말로 변환하는 과정을 말합니다.

LLM은 텍스트를 직접 이해하지 못하고, 숫자로 표현된 벡터만을 이해할수 있습니다.

자연어를 수치벡터로 변환하는 과정을 임베딩이라고 합니다.

#구글 코랩에서 실행하려면 먼저 sentence-transformers를 설치
!pip install -q sentence-transformers


#임베딩 변환 코드
from sentence_transformers import SentenceTransformer

# 모델 로드 (MSMARCO 기반 다목적 임베딩 모델)
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')

# 샘플 문장
sentences = [
    "강아지는 사람의 가장 친한 친구입니다.",
    "고양이는 독립적인 성격을 가지고 있습니다.",
    "강아지와 고양이는 모두 애완동물입니다."
]

# 임베딩 변환
embeddings = model.encode(sentences)

# 결과 출력
for i, sentence in enumerate(sentences):
    print(f"문장 {i+1}: {sentence}")
    print(f"임베딩 벡터: {embeddings[i][:5]} ... (총 {len(embeddings[i])}차원)")
    print("-" * 50)

 

●청킹(Chunking)

긴 문서를 작은 조각(Chunk)로 나누는 과정입니다.

LLM이 한번에 처리 할 수 있는 문장의 길이가 제한되기 때문입니다.

#구글 코랩에서 실행하려면 필요한 라이브러리를 먼저 설치해야 합니다.

!pip install -q nltk langchain


# 기본적인 청킹 예제 (nltk 활용)
# 먼저, nltk를 사용하여 긴 문장을 일정 길이로 나누는 예제를 만들어 보겠습니다.
# NLTK(Natural Language Toolkit) 패키지

import nltk
nltk.download('punkt')  # 토큰화 모듈 다운로드
nltk.download('punkt_tab')
from nltk.tokenize import sent_tokenize

# 긴 텍스트 예제
text = """GPT 모델은 자연어 처리를 위한 딥러닝 모델입니다. 
이 모델은 대량의 데이터를 학습하여 문장을 이해하고 생성하는 능력을 갖추고 있습니다. 
GPT-4는 이전 버전보다 더 발전된 성능을 제공합니다. 
또한, AI 기반의 챗봇에도 사용됩니다."""

chunks = sent_tokenize(text)

# 결과 출력
for i, chunk in enumerate(chunks):
    print(f"청크 {i+1}: {chunk}")

 

 

반응형

'프로그래밍 > AI 머신러닝,LLM' 카테고리의 다른 글

RAG(Retrieval-Augmented Generation)  (0) 2025.04.26
심층신경망, cnn, rnn  (0) 2025.04.20
딥러닝, 신경망, 활성화 함수  (0) 2025.04.16
결정트리,군집화,차원축소  (0) 2025.04.12
파이썬 numpy, pandas  (0) 2025.04.07

댓글