[AI-006][기초] Transformer와 대규모 언어모델의 작동 원리 > IT 기술 공유

본문 바로가기
사이트 내 전체검색

IT 기술 공유

[AI-006][기초] Transformer와 대규모 언어모델의 작동 원리

페이지 정보

profile_image
작성자 기술팀장
댓글 0건 조회 159회 작성일 26-09-02 03:32

본문

[이번 수업]
Transformer는 문장 속 여러 위치의 관계를 어텐션(attention: 필요한 정보에 가중치를 두는 계산)으로 처리하는 신경망 구조입니다. 대규모 언어모델(LLM)은 매개변수와 텍스트 데이터로 학습한 언어모델을 뜻합니다. 이번에는 토큰이 벡터가 되고, 자기어텐션을 거쳐 다음 토큰 확률로 이어지는 큰 흐름을 배웁니다.

[선수지식]
AI-005의 신경망·역전파, 벡터의 덧셈과 내적을 알면 좋습니다. Python 3 표준 라이브러리만 사용합니다.

[학습목표]
1. 토큰·임베딩·위치 정보의 역할을 설명한다.
2. Query·Key·Value로 자기어텐션 가중치를 계산한다.
3. Transformer와 자기회귀 언어모델의 관계와 한계를 구분한다.

[핵심개념]
문장은 먼저 토큰(token: 모델이 처리하는 텍스트 조각)으로 나뉩니다. 각 토큰 ID는 의미 특징을 담는 임베딩 벡터로 바뀝니다. 어텐션만으로는 순서를 알 수 없으므로 위치 인코딩이나 위치 임베딩을 더합니다.

자기어텐션에서 각 위치는 같은 입력으로부터 Query(Q), Key(K), Value(V)를 만듭니다. Q는 “무엇을 찾는가”, K는 “나는 어떤 정보인가”, V는 “선택되면 전달할 내용”으로 생각할 수 있습니다. Q와 K의 내적을 차원 크기의 제곱근으로 나누고 소프트맥스를 적용하면 합이 1인 가중치가 됩니다. 이 가중치로 V들을 섞어 문맥 벡터를 만듭니다. 여러 헤드는 서로 다른 관계를 동시에 살펴봅니다.

Transformer 블록은 어텐션뿐 아니라 위치별 피드포워드 신경망, 잔차 연결, 정규화로 구성됩니다. 원 구조는 인코더와 디코더를 함께 썼지만, 언어모델은 목적에 따라 인코더형·디코더형·인코더-디코더형으로 구성할 수 있습니다.

자기회귀 언어모델은 앞선 토큰을 조건으로 다음 토큰의 확률분포를 예측하도록 학습합니다. 생성할 때 한 토큰을 고르고 입력 뒤에 붙이는 과정을 반복합니다. “대규모”는 단순히 파일 크기만 뜻하지 않고 매개변수·학습 데이터·연산 규모가 큰 모델을 가리킵니다. 규모가 커져도 사실 데이터베이스처럼 정답을 조회하는 것은 아닙니다.

[따라하기]
아래를 `attention_demo.py`로 저장합니다.

```python
from math import exp, sqrt

query = [1.0, 0.0]
keys = [[1.0, 0.0], [0.0, 1.0], [1.0, 1.0]]
values = [10.0, 20.0, 30.0]

scores = [
    sum(q * k for q, k in zip(query, key)) / sqrt(len(query))
    for key in keys
]
shifted = [exp(score - max(scores)) for score in scores]
weights = [value / sum(shifted) for value in shifted]
context = sum(weight * value for weight, value in zip(weights, values))

print([round(weight, 3) for weight in weights])
print(round(context, 3))
```

macOS·Linux는 `python3 attention_demo.py`, Windows PowerShell은 `python attention_demo.py`로 실행합니다.

```text
[0.401, 0.198, 0.401]
20.0
```

첫째와 셋째 Key가 Query와 같은 내적 점수를 가져 같은 가중치를 받았습니다. 둘째는 더 낮습니다. 문맥값 20.0은 세 Value의 단순 선택이 아니라 가중합입니다. 실제 모델은 숫자 하나 대신 큰 V 벡터를 섞고, 학습된 행렬로 Q·K·V를 만듭니다.

[흔한 실수]
어텐션 가중치를 사람에게 완전한 설명이라고 단정하지 않습니다. 토큰 수와 글자 수를 같다고 보지 않습니다. 모델 크기가 크면 모든 사실이 정확하다고 믿거나, 입력 문맥에 제공한 정보가 곧 영구 학습됐다고 생각하지 않습니다. 생성 결과가 자연스러워도 근거 자료와 계산은 별도로 검증합니다.

[보안 주의]
외부 모델에 비밀번호·키·개인정보·비공개 문서를 입력하지 않습니다. 모델 출력의 링크와 코드는 신뢰하지 말고 격리 환경에서 검토·실행합니다. 모델이 도구를 호출한다면 허용 작업과 대상, 권한, 비용 한도를 좁히고 중요한 변경에는 사람의 승인을 둡니다. 이번 실습은 로컬 계산만 하며 네트워크나 파일을 변경하지 않습니다.

[직접 해볼 과제]
`query`를 `[0.0, 1.0]`으로 바꿔 가중치와 문맥값을 기록하세요. 어느 Key의 가중치가 변했는지 내적 계산과 연결해 세 문장으로 설명합니다.

[확인문제]
1. 토큰 임베딩에 위치 정보가 필요한 이유는 무엇인가요?
2. 자기어텐션에서 Q·K·V는 각각 어떤 역할을 하나요?
3. 다음 토큰 예측 모델의 출력이 사실을 보장하지 않는 이유는 무엇인가요?

[다음 학습]
AI-007에서는 프롬프트·토큰·컨텍스트 창을 이해하고 입력 길이와 지시를 안전하게 설계합니다.

[공식 참고 자료]
- Transformer 원 논문: https://proceedings.neurips.cc/paper_files/paper/2017/hash/3f5ee243547dee91fbd053c1c4a845aa-Abstract.html
- Scaled Dot Product Attention 문서: https://docs.pytorch.org/docs/stable/generated/torch.nn.functional.scaled_dot_product_attention.html
- Multi-Head Attention 문서: https://docs.pytorch.org/docs/stable/generated/torch.nn.MultiheadAttention.html
- 대규모 자기회귀 언어모델 연구: https://proceedings.neurips.cc/paper_files/paper/2020/hash/1457c0d6bfcb4967418bfb8ac142f64a-Abstract.html

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
5,093
어제
6,862
최대
16,772
전체
771,044
Copyright © 소유하신 도메인. All rights reserved.