LLM(Large Language Model)
방대한 텍스트 데이터를 학습하여 자연어를 이해하고 생성하는 인공지능 모델
ChatGPT가 LLM을 기반으로 동작하는 서비스이다.
ChatGPT가 사용하는 GPT-4 모델이 대표적인 LLM이다.
LLM의 주요 특징
- 대규모 데이터 학습: 십억 개의 단어, 문장을 포함한 방대한 데이터를 학습
- 자연어 처리(NLP) 능력 : 텍스트 분석, 번역, 감정 분석 등 다양한 자연어 작업이 가능
- 사람과 비슷한 언어 생성 : 마치 사람이 대화하는 것처럼 자연스러운 텍스트를 만들어낼 수 있음
LLM은 Transformer라는 딥러닝 아키텍처를 활용해서 작동
Transformer : 문맥 이해가 아닌 텍스트 내 단어 간의 관계를 계산하는 것
- 질문을 받으면 다음에 나올 가능성이 가장 높은 단어를 선택함.
Transformer 아키텍처는 2017년에 논문 “Attention is All You Need"에서 처음 등장한 아키텍처로 자연어 처리(NPL, Natural Language Processing) 개념에서 혁신을 가져온 구조이다.
- 기존 RNN/LSTM(딥러닝 모델)보다 병렬처리가 가능하고 자연어에 대한 이해와 생성 성능이 뛰어나다.

Transformer의 기본 구조
1. 입력 임베딩 (Input Embedding)
입력 문장을 토큰 단위로 쪼갠 뒤, 각 토큰을 고정된 차원의 벡터로 변환함.
토크나이징 방법 : 공백 기준 토크나이징, Subword 토크나이징, Character 단위 토크나이징
토큰으로 자른 텍스트에 고유한 ID를 부여하여 숫자(벡터로 변환해서 처리)
ex) 나는 학교를 간다 ⇒ 나는, 학교를, 간다 ⇒ 154, 983, 465
위치 정보를 위해 Positional Encoding을 추가함. (왜냐하면 Transformer는 순서를 모름)
Positional Encoding
Transformer는 입력을 한꺼번에 병렬처리하기 때문에 입력의 순서를 알 수 없음
때문에 위치 정보를 벡터에 인위적으로 추가하는 Positional Encoding 작업을 한다.
→ 같은 단어라도 문장에서의 위치에 따라 다른 벡터 값을 가지게 됨
- 단어위치Positional Encoding 벡터
| 나는 | 0 | [0.0, 1.0, 0.0, 1.0] |
| 학교에 | 1 | [0.8415, 0.5403, 0.0099998, 0.99995] |
| 간다 | 2 | [0.9093, -0.4161, 0.0199987, 0.99980] |
2. Self-Attention 메커니즘
문장 내의 각 단어가 자신과 다른 모든 단어의 관계를 학습함.
핵심 개념: 단어의 의미는 문맥(Context)에 따라 달라지므로, 다른 단어들과 얼마나 중요한 관계인지 계산함.
⇒ 문장 순서에 관계없이 병렬 연산가능
- 입력 토큰 → 임베딩 벡터
- 각 단어에서 세 개의 벡터 생성:
- Query (Q): 내가 찾고 싶은 것 (중심 단어)
- Key (K): 내가 어떤 기준에 부합한지 ex) 주어, 목적어, 동사
- Value (V): 실제 전달할 정보
- Q,K,V 예시 - “철수가 밥을 먹었다.” / “먹었다”를 기준으로 처리를 할 때
- Query(Q)
단어 Query (Q) 의미 먹었다 "누가 무엇을 먹었는지 알고 싶다" (중심 단어) - Key(K), Value(V)
단어 Key (K) 의미 Value (V) 의미 철수 "나는 사람이야" (주어 정보) "철수가 주어야" 밥 "나는 음식이야" (목적어 정보) "밥이 목적어야" 먹었다 "나는 동사야" "동작이 일어났음"
- Query(Q)
- Query · Keyᵗ → 유사도(주의 점수) 계산
- Softmax 적용(가중치 분포도) → 중요도 확률 분포로 만듦
| 나는 | 학교에 | 간다 | |
|---|---|---|---|
| 나는 | 0.222 | 0.098 | 0.679 |
| 학교에 | 0.269 | 0.150 | 0.581 |
| 간다 | 0.127 | 0.030 | 0.843 |
| - 이 가중치를 Value에 곱해서 합산 |
→ 문맥이 반영된 새 벡터가 됨
3. 멀티헤드 어텐션 (Multi-Head Attention)
Self-Attention을 여러 "머리(head)"로 동시에 수행해서,
각각 다른 방식으로 단어들 간의 관계를 파악하고, 그 결과를 합치는 방식.
⇒ 다양한 시각에서 문맥을 이해할 수 있다.
- 예시
| Head1 | Head2 | Head3 | ... |
|---|---|---|---|
| 주어-동사 집중 | 목적어-형용사 집중 | 시제 정보 집중 | ... |
⇒ 각 Head에서 Self-Attention을 수행하고 / 모든 Head의 출력을 Concat (연결) 한다.
⇒ 최종적으로 하나의 출력을 선형으로 변환하여 다음 Layer로 전달한다.
4. Feed Forward Network
각 토큰에 대해 독립적으로 작동하는 작은 신경망 (MLP)
⇒ 위치별 비선형 변환가 특징 추출을 한다.
⇒ 어텐션이 잡아낸 단어간 관계를 각 위치별로 독립적으로 더 복잡한 표현을 학습하는데 도움을 줌
어텐션이 주변 단어들과의 관계를 연결해줬다면, FFN은 그 연결된 정보를 더 깊게 해석하고 다듬어서 ‘단어 하나하나의 의미를 더 명확하게 만들어주는 작업을 함.
⇒ 어텐션이 찾아낸 관계를 받아서 각 단어의 정보를 더 똑똑하게 가공해주는 역할
5. 레이어 정규화 & 잔차 연결 (Residual + LayerNorm)
학습 안정성 향상, 깊은 네트워크에서도 정보 손실 없이 전달 가능
잔차 연결은 ‘입력을 그대로 더해줘서 정보 손실 막고 학습 쉽게’
레이어 정규화는 ‘출력 벡터 값을 일정하게 맞춰서 안정적인 학습’
정리하자면
- 입력 임베딩 (Input Embedding)을 통해 텍스트로 들어온 질문을 수치 벡터로 전환하고
- Self-Attention 메커니즘을 통해 각 단어들이 서로 어떻게 연관되는지 계산한다.
- 멀티헤드 어텐션 (Multi-Head Attention)을 통해 다양한 관점에서 Sefl-Attention을 진행한다.
- Feed Forward Network을 통해 각 단어의 정보를 더 깊게 가공하고
- 레이어 정규화 & 잔차 연결 (Residual + LayerNorm)를 통해 습을 안정화시키고 정보 손실을 줄인다.
- 문장의 병렬 처리가 가능 → 훈련 속도가 빠름
- 문맥을 훨씬 길게 반영 가능 → 긴 문장, 문서도 잘 이해함
- 이후의 모든 LLM (BERT, GPT, T5 등)의 기반이 됨
LLM을 특정 분야에 전문적으로 사용하기 위한 기술들
1. Fine-Tuning (미세 조정)
- 이미 사전 학습된 LLM을 가져와서, 특정 분야 데이터(예: 금융, 의료, 법률 등)로 추가 학습
- 모델이 그 분야 전문 용어, 문체, 지식을 더 잘 이해하도록 만듦
- 적은 양의 데이터로도 효과를 볼 수 있지만, 데이터 품질과 양이 중요
⇒ 퓨어한 데이터가 대량으로 필요하기 때문에 시간적, 자원적인 비용이 많이 필요하다.
2. Domain Adaptation (도메인 적응)
- Fine-Tuning과 비슷하지만, 기존 모델의 일부 파라미터만 조정하거나 도메인 특화된 토큰화도 적용
- 학습 효율을 높이고 과적합을 방지
3. Prompt Engineering (프롬프트 설계)
- 모델 자체를 바꾸지 않고, 입력 문장(프롬프트)을 잘 설계해서 원하는 답변을 유도
- 간단한 분야 맞춤형 사용법
4. LoRA / PEFT (Parameter-Efficient Fine-Tuning)
- 전체 모델을 다 학습하지 않고, 일부 파라미터만 조정해 빠르고 비용 적게 미세 조정
- 대형 모델을 효율적으로 분야 특화 가능
5. Retrieval-Augmented Generation (RAG)
- 외부 전문 지식 DB에서 필요한 정보를 찾아서 모델에 함께 제공해 답변 정확도 높임
- 도메인 지식 업데이트를 쉽게 할 수 있음
⇒ LLM에 질문을 할 때 질문과 함께 관련된 전문 데이터를 함께 제공하여
⇒ 마치 LLM에 전문적인 데이터를 학습시킨것과 같은 효과를 줄 수 있다.
'전공공부' 카테고리의 다른 글
| BFF (Backend For Frontend)와 MSA (5) | 2025.07.20 |
|---|---|
| 2025.06.15 this의 원리와 예시 (0) | 2025.06.15 |
| JavaScript의 클로저와 실행 컨텍스트 (0) | 2025.04.08 |
| JavaScript 엔진과 동작원리 (0) | 2025.03.31 |
| Command 패턴 (0) | 2025.03.29 |