SW 전공

SW 전공 이론 학습

이론 목록으로 돌아가기

신경망과 Transformer 기본 원리

퍼셉트론·다층신경망·활성화·손실·역전파의 개념과 CNN·RNN·Attention·Transformer 구조를 학습한다.

예상 읽기 8

1. 인공뉴런

인공뉴런은 입력의 가중합에 활성화함수를 적용한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
x1 ─w1─┐
x2 ─w2─┼─► z = Σ(wixi) + b ─► activation(z) ─► output
x3 ─w3─┘
  • 입력 x
  • 가중치 w
  • 편향 b
  • 활성화함수
  • 출력

가중치와 편향은 학습으로 조정된다.

2. 퍼셉트론과 다층신경망

단층 퍼셉트론은 선형 결정경계를 학습한다. XOR처럼 선형으로 분리되지 않는 문제는 은닉층과 비선형 활성화가 필요하다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
입력층       은닉층       출력층
x1 ○ ─┐    ○ h1 ─┐
       ├──►       ├──► ○ y
x2 ○ ─┘    ○ h2 ─┘

층이 깊어질수록 복잡한 표현을 학습할 수 있지만 데이터·연산·안정화·해석 비용도 증가한다.

3. 활성화함수

함수특징
Sigmoid0~1, 확률 출력에 사용 가능, 깊은 층에서 기울기 감소 가능
Tanh-1~1, 중심이 0
ReLUmax(0,z), 단순하고 널리 사용
Softmax여러 클래스 점수를 확률합 1로 변환
CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
ReLU
y
▲       /
│      /
│_____/
└────────► z

출력층 활성화는 문제 유형과 손실함수에 맞게 선택한다.

4. 손실함수

손실함수는 예측과 정답의 차이를 수치화한다.

  • 회귀: MSE·MAE
  • 이진 분류: Binary Cross Entropy
  • 다중 분류: Cross Entropy
CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
예측 → 손실 계산 → 파라미터 수정 → 더 나은 예측

정확도처럼 보고용 지표와 학습에 사용하는 미분 가능한 손실함수는 다를 수 있다.

5. 경사하강법

손실을 줄이는 방향으로 파라미터를 조금씩 이동한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
w_new = w_old - learning_rate × gradient
CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
손실
 ▲       • 시작
 │      /
 │    •
 │  •
 │• 최솟값 부근
 └──────────► 파라미터

학습률이 너무 크면 발산·진동할 수 있고 너무 작으면 학습이 느리다. SGD, Momentum, Adam 같은 최적화 방법이 있다.

6. 역전파

순전파로 예측과 손실을 계산한 뒤, 연쇄법칙을 이용해 출력에서 입력 방향으로 각 파라미터의 기울기를 전달한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
순전파:
입력 → 층1 → 층2 → 출력 → 손실

역전파:
손실 기울기 ← 층2 ← 층1
                   ↓
            가중치 업데이트

역전파는 학습 알고리즘이고 추론 때마다 수행하는 과정은 아니다.

7. 배치·에포크

  • 배치: 한 번의 파라미터 업데이트에 사용하는 샘플 묶음
  • 에포크: 전체 학습 데이터를 한 번 사용
  • 이터레이션: 배치 한 번의 업데이트
  • 학습률: 한 번의 이동 크기
CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
데이터 1,000건, 배치 100
1에포크 = 10이터레이션

8. 과적합 완화

  • Dropout
  • 가중치 정규화
  • Batch Normalization
  • 데이터 증강
  • 조기종료
  • 모델 축소
  • 더 많은 대표 데이터

Batch Normalization과 Dropout의 구체 동작은 학습·추론 모드에서 다를 수 있다.

9. CNN과 RNN 개요

CNN

이미지·격자 데이터의 국소 패턴을 합성곱 필터로 추출한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
이미지 → Convolution → 활성화 → Pooling → 분류

같은 필터를 위치마다 공유해 이동에 강한 특징을 학습한다.

RNN

순서 데이터에서 이전 상태를 다음 시점에 전달한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
x1 → h1 → h2 → h3
      ↑    ↑    ↑
     x1   x2   x3

긴 의존관계에서 기울기 문제가 발생할 수 있어 LSTM·GRU 같은 구조가 개발되었다.

10. Attention

Attention은 현재 처리에서 입력의 어느 부분을 얼마나 참고할지 가중합으로 계산한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
Query: 지금 찾는 정보
Key  : 각 입력의 검색 표지
Value: 실제로 합산할 정보

Query와 Key 유사도
       ↓
   Attention Weight
       ↓
Value의 가중합

대표적으로는 다음과 같이 표현한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
Attention(Q,K,V)
= softmax(QKᵀ / √d) V

일반 필기에서는 Query·Key·Value의 역할과 가중합 흐름을 이해하면 충분하다.

11. Self-Attention

같은 문장이나 시퀀스 안의 토큰들이 서로를 참고한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
"은행은 대출을 승인했다"

'승인했다' 토큰
    ├─ 은행
    ├─ 대출
    └─ 조사·어미
각 토큰의 관련도를 계산해 문맥 표현 생성

순환구조 없이 토큰 사이의 전역 관계를 병렬적으로 계산할 수 있지만 길이가 길어질수록 기본 attention 계산량과 메모리 사용이 커진다.

12. Transformer 구조

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
토큰
  ↓
임베딩 + 위치정보
  ↓
┌─────────────────────┐
│ Multi-Head Attention│
│ Add & Norm          │
│ Feed Forward        │
│ Add & Norm          │
└─────────────────────┘ × 여러 층
  ↓
문맥 표현·다음 토큰 확률·분류 결과
  • Multi-Head Attention: 서로 다른 관계를 여러 관점에서 학습
  • Feed Forward: 각 토큰 표현을 비선형 변환
  • Residual Connection: 깊은 학습 안정화
  • Layer Normalization: 값의 규모 안정화
  • Positional Information: 순서 정보 제공

13. Encoder와 Decoder

  • Encoder 중심: 입력을 문맥 표현으로 변환, 분류·추출 등에 적합
  • Decoder 중심: 앞 토큰을 바탕으로 다음 토큰 생성
  • Encoder-Decoder: 입력 시퀀스를 받아 다른 시퀀스 생성

생성형 언어모델은 decoder 계열 구조를 널리 사용하지만 모델마다 구조는 다를 수 있다.

14. Causal Mask

다음 토큰 예측에서는 현재 위치가 미래 정답 토큰을 보지 못하도록 가린다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
      참고 가능 토큰
t1    t1
t2    t1 t2
t3    t1 t2 t3
t4    t1 t2 t3 t4

학습 중 전체 문장이 메모리에 있어도 causal mask로 미래 정보 접근을 차단한다.

15. 순전파·손실·가중치 갱신 계산

뉴런 출력은 z=w·x+b, a=f(z)로 계산한다. x=(2,3), w=(0.5,-1), b=1이면 z=1-3+1=-1, ReLU 출력은 0이다.

경사하강법 갱신은 다음과 같다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
w_new = w_old - learning_rate × gradient

가중치 2, 학습률 0.1, 기울기 3이면 새 가중치는 1.7이다. 분류의 cross entropy는 정답 클래스 확률이 커질수록 작아진다. 정답 확률이 0.8이면 손실은 -ln(0.8)≈0.223이다.

16. CNN·RNN의 형태 계산

1차원 크기에도 같은 원리를 적용할 수 있으며, 2차원 합성곱 출력 한 변의 크기는 보통 다음과 같다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
floor((입력 + 2×padding - kernel)/stride) + 1

입력 32, 커널 3, 패딩 1, stride 1이면 출력은 32이다. 합성곱 파라미터 수는 공간 크기와 무관하게 kernel_h×kernel_w×입력채널×출력채널 + 출력채널 bias이다.

RNN은 순서를 처리하지만 긴 시퀀스에서 기울기 소실·폭주가 발생할 수 있다. LSTM·GRU의 gate와 gradient clipping이 완화책이 될 수 있으나 모든 장기 의존성을 보장하지는 않는다.

17. Scaled Dot-Product Attention

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
Attention(Q,K,V) = softmax(QKᵀ / sqrt(dk))V

QKᵀ는 query와 key의 유사도를 만들고, sqrt(dk)로 나누어 차원이 커질 때 softmax가 지나치게 포화되는 것을 완화한다. mask를 적용한 위치는 softmax 전에 매우 작은 값으로 만들어 가중치가 0에 가깝게 된다.

Multi-head attention은 서로 다른 투영 공간에서 여러 관계를 학습한 뒤 head 결과를 이어 붙이고 다시 투영한다. Residual connection과 normalization은 깊은 네트워크 학습을 안정화한다.

18. Transformer 계산 복잡도와 추론

표준 self-attention의 점수행렬은 토큰 수 n에 대해 n×n이므로 시간·메모리의 핵심 항이 O(n²)이다. 토큰 수를 2배로 늘리면 이 부분은 약 4배가 된다.

자기회귀 생성에서는 이전 토큰의 key·value를 KV cache에 저장해 매 단계 전체 prefix를 다시 계산하는 비용을 줄인다. 다만 cache 메모리는 시퀀스 길이·층 수·head 차원에 따라 증가한다.

19. Causal LM의 학습 정렬

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
입력:  [나는, 학교에, 간다]
정답:  [학교에, 간다, <EOS>]

각 위치는 다음 토큰을 예측하고 causal mask로 미래 토큰을 보지 못한다. Softmax 계산에서는 모든 logit에서 최대값을 빼도 확률이 같으므로 수치 안정성을 위해 softmax(z-max(z))를 사용한다.

확인 문제

  1. x=(2,3), w=(.5,-1), b=1의 ReLU 출력은?
  2. 가중치 2, 학습률 .1, 기울기 3의 새 가중치는?
  3. self-attention에서 점수를 sqrt(dk)로 나누는 이유는?
  4. 토큰 수가 2배면 표준 attention 점수행렬 비용은 대략?
  5. 자기회귀 추론에서 이전 K·V를 저장하는 것은?