LLM 스터디 1주차) LLM Transformer
CloudNet@ 팀의 가시다님께서 Leading 하시는 LLM Study 1주차 스터디 내용 정리
1.1. LLM 개요

- 인공지능(AI): 사람 수준의 지능을 갖춘 시스템
- 머신러닝(ML): 데이터에서 자동으로 규칙을 학습하는 알고리즘
- 딥러닝: 많은 층으로 구성된 신경망을 활용하는 머신러닝
- 대규모언어모델(LLM): 사람의 텍스트를 해석하고 생성하는 심층 신경망
- 생성형AI(GenAI): 심층 신경망을 사용하여 텍스트, 이미지, 미디어같은 컨텐츠를 생성할 수 있는 인공지능
1.1.1. 텐서(Tensor)
LLM 과 딥러닝에서 모든 데이터를 표현하는 기본 단위
- 수학적 개념: 다차원 배열
- 0차원: 스칼라(Scalar)
- 1차원: 벡터(Vector)
- 2차원: 행렬(Matrix)
- 3차원이상: 텐서(Tensor)

1.1.2. 임베딩(Embedding)
LLM 과 딥러닝에서 텍스트를 숫자 벡터로 변환하는 과정
- 토큰화(Tokenization)
- 텍스트를 모델의 단어 사전(voca) 에 따라 작은 조각(토큰)으로 분해 - 토큰 임베딩(Token Embedding)
- 각 토큰을 모델 사전에 정의된 ID 로 변환하고, 해당 ID 에 해당하는 벡터를 임베딩 행렬에서 조회
- 예시- 오늘 → ID 1 → [1,1,1]
- 내일 → ID 10 → [1,20,2]
- 어제 → ID 12 → [1,23,4]
- 위치 인코딩 / 포지셔널 인코딩 (Positional Encoding)
- 토큰 임베딩값에 위치 벡터 추가
LLM 에서의 역할
- 입력 변환: 텍스트를 벡터로 변환하여 신경망이 처리 가능하도록 변경
- 의미 보존: 단어의 의미를 벡터에 보관
- 병렬 처리: 벡터 형태로 GPU 에서 빠르게 계산
1.2. 트랜스포머 핵심 구성 요소
트랜스포머(Transformer): LLM 을 구동하는 신경망 아키텍처
- ChatGPT, Claude 모두 트랜스포머 기반
- 현대 트랜스포머 아키텍처는 인코더 없이 디코더만 사용
1.2.1. 인코더(Encoder)
역할: 정보 읽기
- 입력된 텍스트를 분석하여 의미 파악
- 과정
- 임베딩된 단어들을 받음
- 해당 단어들 사이의 관계를 계산
- 문맥을 고려한 표현으로 변환
1.2.2. 디코더(Decoder)
역할: 답변 생성
- 인코더의 정보를 바탕으로 한 단어씩 생성
- 과정
- 이전에 생성한 단어들을 참고
- 다음에 올 단어의 확률 계산
- 가장 높은 확률의 단어 선택
1.3. 트랜스포머 구조
1.3.1. 전통적인 트랜스포머 구조(BERT) vs 현대적인 트랜스포머 구조(GPT, Claude)

1.3.2. 왜 인코더를 사용하지 않을까?
- 범용성: 디코더 하나로 대화, 요약, 번역, 코딩 등 거의 대부분의 작업 가능
- 구조 단순화: 인코더-디코더보다 학습과 확장이 용이
- 스케일링 법칙(Scaling Law): 디코더 전용에서 파라미터 향상에 따른 성능 향상이 우월하다는 것이 증명됨
1.4. 어텐션 (Attention)
트랜스포머의 핵심이자, LLM 이 문맥을 이해하는 방법
- 지금 이 단어를 이해하기 위해, 문장의 어느 부분을 얼마나 참고할까? 를 계산하는 메커니즘
- 단어 해석을 위해 문장 속 다른 단어들을 참고
- 각 단어와의 관련성(가중치)를 계산
- 가중치만큼 주변 단어의 정보를 섞어서, 해석할 단어의 표현을 문맥에 맞게 다시 조정
- 모델이 각 단어가 서로에게 얼마나 집중(Attention)하는 지 숫자로 계산하기 때문에 어텐션이라고 사용
1.4.1. 왜 어텐션이 필요한가?
- 같은 단어라도 문맥에 따라 의미가 다름
- 같은 단어는 같은 임베딩 벡터로 시작하지만 주변 단어와의 어텐션 계산을 통해 완전히 다른 의미로 해석

1.4.2. 어텐션 계산 과정
3가지 벡터와 가중치로 계산 (Query, Key, Value)

예시: 오늘은 눈이 많이 내렸다.
- Query(질문)
- 지금 해석하려는 단어가 무엇인 지 알려줄 단서가 있는가?
- 눈이 란 단어의 정체를 모르겠는데, 이것이 의미하는 게 뭐야? - Key(열쇠 벡터)
- 해석하려는 단어 속 문장에 이런 정보들이 있다. (신호/태그)- 오늘은: 시간 관련 정보가 있어, 가져가!
- 눈이: 나 자신에 대한 정보가 있어, 가져가!
- 많이: 정도 관련 정보가 있어, 가져가!
- 내렸다: 강수 현상 관련 정보가 있어, 가져가!
- Value(값 벡터)
- Key 단어에 포함된 실제 의미 정보- 오늘은: 시간이라는 의미 정보
- 눈이: 자기 자신의 의미 정보
- 많이: 정도라는 의미 정보
- 내렸다: 강수 현상이라는 의미 정보
- Weight(가중치)
- Query - Key 를 비교해서 나온 관련성 점수
- 0~1 사이로 측정되며 1 에 가까울수록 관련이 높음
- Key 에서 생성되지만 Value 와 계산되어 최종 표현 완성- 오늘은: 이 단어는 '눈이' 와 관련성 점수가 0.1 이야.
- 많이: 이 단어는 '눈이' 와 관련성 점수가 0.35 야.
- 내렸다: 이 단어는 '눈이' 와 관련성 점수가 0.55 야. → 가중치가 가장 높네? 이 단어가 의미하는 Value 가 신뢰성이 높겠다!
- 어텐션 계산
- 눈이 표현 = 0.1 * Value(오늘은) + 0.35 * Value(많이) + 0.55 * Value(내렸다)
- 내렸다의 의미(Value)가 가장 많이 반영되었으니 눈이 가 의미하는 뜻은 눈(雪) 일 확률이 가장 높음
1.4.3. 어텐션 메커니즘
- 셀프 어텐션(Self Attention)
- Query, Key, Value 가 모두 같은 문장에서 나오는 어텐션
- Query, Key, Value → 문장 A
- '오늘은 눈이 많이 내렸다' → 1개의 문장에서 어텐션 결정 - 크로스 어텐션(Cross Attention)
- Query 와 Key, Value 문장 출처가 다른 어텐션, 전통적인 트랜스포머 구조 (인코더 - 디코더)
- Query → 문장 A
- Key, Value → 문장 B - 멀티헤드 어텐션 (Multi-Head Attention)
- Query, Key, Value 계산을 한 번만 하지 않고 여러 세트(헤드)로 병렬로 동시 계산
- 1번의 셀프 어텐션으로는 단어와의 관계를 잘 포착하기 어려워 세트(헤드)마다 다른 관계에 주목하여 계산한 후 최종 결정 - 멀티헤드 셀프 어텐션 (Multi-Head Self Attention)
- 같은 문장(Self) 안에서라도 여러번(Multi-Head) 어텐션을 계산

- 마스크드 셀프 어텐션(Masked Self Attention)
- 미래에 나올 단어는 미리 보지 못하게 막아놓은(마스킹) 셀프 어텐션
- 현대 트랜스포머 구조에서 사용하는 것 - 마스크드 멀티헤드 셀프 어텐션
- 텍스트 생성 시에는 다음에 출력할 단어를 모르기 때문에 미래 단어는 마스킹된 것

1.5. MLP / FFN
멀티레이어 퍼셉트론(Multi-Layer Perceptron) / 피드포워드 네트워크(FFN)
- 어텐션 다음으로 나타나는 두 번째 핵심 레이어
- 트랜스포머 = 어텐션 + MLP
- 어텐션에서 나온 정보를 각 단어별로 더 정교하게 다듬는 역할
- 텐서 차원을 넓혔다가 다시 좁힘 (768 → 3072 → 768)
- 넓은 차원에서는 훨씬 더 복잡하고 다양한 패턴을 표현할 수 있음

1.5.1. 왜 MLP 가 필요한가?
- 어텐션 만으로는 추론될 수 있는 내용이 한정적(선형적)
- 어텐션은 입력된 벡터를 적당한 비율(가중치)로 계산한 결과일 뿐

- 선형 변환(차원 확장, 768 → 3072)만으로는 비선형적 답변을 얻어내기 어려움
- 이를 극복하기 위해 MLP 에서는 보다 더 창의적인 추론(비선형적 답변)을 하기위해 활성화 함수를 사용
- 활성화 함수 계산을 통해 비선형적 뒤틀림을 추가하여 삼각형 밖으로 내보냄
1.6. 트랜스포머 블록
1개의 트랜스포머 블록은 한 세트의 어텐션과 MLP 로 구성
- 여러 개의 트랜스포머 블록이 순차적으로 계산되어 최종 결과물 도출
- 각각의 트랜스포머 블록은 순서대로 계산(병렬X)
1.6.1. 블록쌓기
- 이전 트랜스포머 블록의 결과물이 다음 트랜스포머 블록으로 전달되어 다시 계산됨
- 동일한 단어여도 블록을 거치면서 내포하는 의미가 더 풍부해짐
- 의미가 풍부할수록 LLM 모델이 다음 단어를 정확하게 예측할 수 있음

1.7. 출력(Output)
1.7.1. Output Logit
트랜스포머 블록의 결과로 도출될만한 단어 후보군에 매긴 점수(원시 점수)
- 예시 - 어제는 맑았는데, 오늘은 눈이 ???
- 왔다: 8.2
- 맑아졌다: 7.2
- 바나나: -3.1
1.7.2. Softmax
- Output Logit 자체는 단순 숫자이며 확률이 아님
- Output Logit 의 확률의 합이 100%가 되게 변환하는 함수

1.7.3. 샘플링
- LLM 모델은 softmax 까지 계산하고 나온 확률을 정렬하고 그 중에서 단어를 선택
- 왜 가장 확률이 높은 걸 선택하지 않나??
- 그럴 경우 항상 동일한 답변을 하게 되어 뻔하고 기계적이게 됨
샘플링 실행: LLM 에 동일한 질문을 해도 매번 다른 응답을 하는 이유
- 샘플링 기법
1) Temperature
- 확률 분표 조절하여 답변을 다양하게 or 뻔하게 만듦
- 낮은 온도: 0에 가까울 수록 출력 답변 후보의 개수가 줄어듦, 보수적. 예측 가능한 답변
- 높은 온도: 0에서 멀어질 수록 답변 후보의 개수가 늘어남, 창의적, 할루시네이션 가능성 상승
2) Top-k
- 상위 k개만 답변 후보로 남기기
- 단어 후보를 확률 별로 나열한 후 상위 k 개만 남기고 나머지는 삭제
3) Top-p
- 누적 확률이 p%가 될때까지만 후보를 남기기
- 개수가 아닌 답변 후보들의 확률 합 기준

'AI' 카테고리의 다른 글
| Claude Code Workshop - Chapter 2 Subagents (0) | 2026.08.09 |
|---|---|
| LLM 스터디 1주차) 모델 서빙과 최적화 입문 (0) | 2026.08.08 |
| Claude Code Workshop - Chapter 1 Overview (0) | 2026.08.01 |