[AI-005][기초] 신경망이 오차를 거꾸로 전하는 역전파 > IT 기술 공유

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

IT 기술 공유

[AI-005][기초] 신경망이 오차를 거꾸로 전하는 역전파

페이지 정보

profile_image
작성자 기술팀장
댓글 0건 조회 229회 작성일 26-09-01 08:33

본문

[이번 수업]

신경망이 입력으로 예측을 만들고, 틀린 정도를 각 가중치까지 거꾸로 전달해 학습하는 원리를 배웁니다. 외부 라이브러리 없이 뉴런 하나의 순전파·역전파·가중치 갱신을 직접 계산합니다.

[선수지식]

AI-001~004의 머신러닝, 특징·라벨, 지도학습, 학습·검증·테스트와 과적합 개념을 알고 있으면 좋습니다. Python의 변수와 함수를 실행할 수 있으면 충분합니다.

[학습목표]

1. 뉴런의 가중치·편향·활성화 함수 역할을 설명한다.
2. 순전파, 손실, 역전파, 경사 하강의 순서를 구분한다.
3. 연쇄법칙으로 단일 뉴런의 기울기를 계산하고 손실을 줄인다.

[핵심개념]

인공 뉴런은 입력마다 가중치(weight)를 곱해 더하고 편향(bias)을 보탠 뒤 활성화 함수에 통과시킵니다. 가중치는 입력의 영향력, 편향은 판단 기준을 옮기는 값입니다. 활성화 함수는 비선형성을 넣어 복잡한 관계를 표현하게 합니다.

신경망은 입력층, 은닉층, 출력층으로 뉴런을 연결합니다. 입력이 앞으로 이동해 예측을 만드는 계산이 순전파(forward propagation)입니다. 손실 함수(loss function)는 예측과 정답의 차이를 숫자로 나타내며 작을수록 예측이 가깝습니다.

기울기(gradient)는 가중치를 바꿀 때 손실이 어느 방향으로 변하는지를 나타냅니다. 역전파(backpropagation)는 출력 손실부터 계산을 뒤로 따라가며 각 매개변수의 기울기를 구합니다. 이는 연쇄법칙을 계산 그래프에 반복 적용하는 과정입니다.

역전파는 기울기를 계산하고 최적화 방법은 매개변수를 갱신합니다. 경사 하강은 `새 가중치 = 기존 가중치 - 학습률 × 기울기`입니다. 학습률이 너무 크면 최소점을 지나치고 너무 작으면 학습이 느립니다.

실제 학습은 미니배치로 순전파, 손실, 역전파, 갱신을 반복합니다. 깊은 신경망은 기울기가 너무 작거나 커질 수 있어 활성화 함수·초기값·정규화가 중요합니다. 자동 미분은 순전파 기록으로 계산 그래프를 만들고 미분을 자동화합니다.

[따라하기]

아래 내용을 backprop_demo.py로 저장합니다. 시그모이드 뉴런 하나가 입력 2.0을 정답 1.0에 가깝게 만드는 한 번의 학습입니다.

```python
from math import exp

x, target = 2.0, 1.0
weight, bias, rate = 0.2, 0.0, 0.1

def sigmoid(value):
    return 1 / (1 + exp(-value))

prediction = sigmoid(weight * x + bias)
loss = (prediction - target) ** 2

common = 2 * (prediction - target) * prediction * (1 - prediction)
gradient_w = common * x
gradient_b = common

weight -= rate * gradient_w
bias -= rate * gradient_b
new_loss = (sigmoid(weight * x + bias) - target) ** 2

print(f"before_loss={loss:.4f}")
print(f"weight_gradient={gradient_w:.4f}")
print(f"after_loss={new_loss:.4f}")
```

macOS·Linux는 `python3 backprop_demo.py`, Windows는 `py backprop_demo.py`를 실행합니다. py가 없다면 `python backprop_demo.py`를 사용하세요. 예상 결과는 다음과 같습니다.

```text
before_loss=0.1611
weight_gradient=-0.3857
after_loss=0.1432
```

음수 기울기를 빼면 가중치가 커지고, 한 번의 갱신 뒤 손실이 0.1611에서 0.1432로 줄어듭니다. 이것이 학습의 가장 작은 한 걸음입니다.

[흔한 실수]

- 역전파가 가중치를 직접 바꾼다고 생각합니다. 역전파는 기울기를 구하고 최적화 단계가 값을 바꿉니다.
- 손실이 한 번 줄었다고 학습이 끝났다고 판단합니다. 여러 샘플과 검증 데이터로 반복 확인해야 합니다.
- 학습률을 크게 하면 항상 빨리 학습한다고 생각합니다. 손실이 흔들리거나 커질 수 있습니다.
- 신경망의 뉴런을 생물학적 뉴런과 완전히 같은 것으로 해석합니다. 여기서는 수학 함수의 단위입니다.

[보안 주의]

학습 데이터에 비밀번호·개인정보·기밀 문서를 무단으로 넣지 마세요. 출처와 사용 권한을 기록하고 외부 모델 파일은 격리해 검증합니다. 역직렬화 중 코드가 실행될 수 있으므로 안전한 형식을 사용하세요. 학습은 본인 소유 환경에서 시간과 자원 한도를 정합니다.

[직접 해볼 과제]

1. 학습률 rate를 0.01과 1.0으로 바꿔 한 번 갱신한 뒤 손실을 비교하세요.
2. 같은 계산을 10번 반복하고 매 단계의 손실이 어떻게 변하는지 표로 기록하세요.

[확인문제]

1. 가중치, 편향, 활성화 함수는 각각 어떤 역할을 하나요?
2. 역전파와 경사 하강은 무엇을 담당하나요?
3. 연쇄법칙이 여러 층의 기울기를 계산하는 데 필요한 이유는 무엇인가요?

[다음 학습]

AI-006에서는 Transformer의 어텐션 구조와 대규모 언어모델이 토큰을 처리하는 원리를 배웁니다.

[공식 참고 자료]

- 역전파 원 논문: https://www.nature.com/articles/323533a0
- PyTorch 자동 미분 입문: https://docs.pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html
- PyTorch 역전파 공식 튜토리얼: https://docs.pytorch.org/tutorials/beginner/basics/autogradqs_tutorial.html
- Python math 모듈: https://docs.python.org/3/library/math.html

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

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

접속자집계

오늘
4,257
어제
6,862
최대
16,772
전체
770,208
Copyright © 소유하신 도메인. All rights reserved.