Additional Neural Network Concepts + Back Propagation

YoungJae Kang·2025년 5월 11일
0

머신러닝 학습

목록 보기
9/14
post-thumbnail

1. 경사하강법과 한계

  • 경사하강법은 선형회귀, 로지스틱 회귀, 신경망의 기본 학습 알고리즘

  • 하지만 학습률(α\alpha) 조절이 어려움

    • 너무 작으면 느림
    • 너무 크면 발산하거나 진동
  • 한 단계 업데이트 수식:

wj:=wjαJwjw_j := w_j - \alpha \frac{\partial J}{\partial w_j}
  • 동일한 방향으로 반복 이동하는 경우: 학습률을 더 키우고 싶음
  • 진동하는 경우: 학습률을 줄여야 함

2. Adam 알고리즘의 개요

  • Adam: Adaptive Moment Estimation의 약자
  • 학습률(α\alpha)을 자동으로 조정
  • 각 파라미터별로 다른 학습률 α1,α2,...,αn\alpha_1, \alpha_2, ..., \alpha_n 사용
  • 경사하강법보다 더 빠르고 안정적인 수렴 유도

실무에서는 대부분 경사하강법(GD) 대신 Adam 사용

  • TensorFlow 구현:
optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)

3. Adam 알고리즘의 핵심 아이디어

  • 파라미터가 비슷한 방향으로 계속 움직임 → 학습률 증가
  • 파라미터가 진동 → 학습률 감소
  • 내부적으로는 1차/2차 모멘텀(평균/분산)을 추적하여 업데이트

4. 계산 그래프 (Computation Graph)

딥러닝의 핵심 개념. 순전파와 역전파 계산을 시각적, 단계적으로 표현함.

4-1. 순전파 예시 (단일 뉴런)

  • x=2x=-2, y=2y=2
  • w=2w=2, b=8b=8
  • 출력 a=wx+b=4+8=4a = wx + b = -4 + 8 = 4
  • 오차: d=ay=2d = a - y = 2
  • 비용 함수:
J=12(ay)2=12d2=2J = \frac{1}{2}(a - y)^2 = \frac{1}{2} d^2 = 2

4-2. 역전파 개요

  • 오른쪽에서 왼쪽으로 계산
  • Jd=2d=4\frac{\partial J}{\partial d} = 2d = 4
  • Ja=2\frac{\partial J}{\partial a} = 2
  • Jb=2\frac{\partial J}{\partial b} = 2
  • Jc=2\frac{\partial J}{\partial c} = 2
  • Jw=4\frac{\partial J}{\partial w} = -4

5. 도함수의 직관적 계산 예시

함수: J(w)=w2J(w) = w^2

  • w=3J=9w = 3 \Rightarrow J = 9
  • w=3.001J=9.006001w = 3.001 \Rightarrow J = 9.006001
  • 도함수: ΔJΔw6\frac{\Delta J}{\Delta w} \approx 6

공식적 계산

dJdw=2w\frac{dJ}{dw} = 2w
  • w=3dJdw=6w = 3 \Rightarrow \frac{dJ}{dw} = 6
  • w=2dJdw=4w = 2 \Rightarrow \frac{dJ}{dw} = 4
  • w=3dJdw=6w = -3 \Rightarrow \frac{dJ}{dw} = -6

6. SymPy로 도함수 계산 (파이썬 코드)

import sympy as sp
w = sp.symbols('w')
J = w**2
sp.diff(J, w)  # 결과: 2w

7. 계산 그래프와 역전파 효율성

  • 노드 수: nn, 파라미터 수: pp
  • 브루트포스 방식: O(np)O(n \cdot p)
  • 계산 그래프 역전파: O(n+p)O(n + p) → 효율적!

8. 대규모 신경망 예제 (ReLU 포함)

  • 입력: x=1x = 1, 정답: y=5y = 5

  • 네트워크 구조:

    • a1=max(0,w_1x+b_1)a_1 = \max(0, w\_1x + b\_1)
    • a2=max(0,w_2a_1+b_2)a_2 = \max(0, w\_2a\_1 + b\_2)
    • 비용 함수:
J=12(a2y)2J = \frac{1}{2}(a_2 - y)^2
  • 예시 값:

    • w1=2w_1=2, b1=0b_1=0, w2=3w_2=3, b2=1b_2=1
    • a1=2a_1 = 2, a2=7a_2 = 7
    • J=2J = 2

9. 자동 미분과 오토디프(Autodiff)

  • 프레임워크 (TensorFlow, PyTorch)는 자동 미분 기능 제공
  • 사용자는 forward 계산만 정의하면 됨
  • 내부적으로 계산 그래프 + 역전파로 도함수 자동 계산
  • 과거에는 직접 미분을 손으로 계산해야 했지만 이제는 필요 없음!
profile
Data_Analyst

0개의 댓글