https://cs231n.github.io/optimization-2/
CS231n Deep Learning for Computer Vision
Table of Contents: Introduction Motivation. In this section we will develop expertise with an intuitive understanding of backpropagation, which is a way of computing gradients of expressions through recursive application of chain rule. Understanding of thi
cs231n.github.io
이번에는 위 내용을 한글로 정리해보겠습니다.
개요
이 섹션에서 해결하려는 주요 문제는 x가 입력 벡터인 함수 f(x)가 주어졌을 때
x에서의 함수 f(x)의 기울기를 구하는 것이다.
신경망의 특정 사례에서는 f는 손실함수 L에 해당되고 x는 훈련 데이터와 신경망 가중치로 구성되기 때문이다.
훈련 데이터는 고정되어있기 때문에 역전파를 사용해서 계산되는 기울기는 가중치와 바이어스에만 해당된다.
단순 표현 및 기울기 해석
함수에 따라 편미분과 기울기는 다음과 같다.
f(x,y)= x*y -> ∂f / ∂x = y , ∂f / ∂y = x -> ∇f = [y, x]
f(x,y)= x + y -> ∂f / ∂x = 1 , ∂f / ∂y = 1 -> ∇f = [1,1]
f(x,y) = max(x,y) -> ∂f / ∂x = 1 (x >= y), ∂f / ∂y = 1 (y >= x)
-> ∂f / ∂x = 0 (x < y), ∂f / ∂y = 0 (y < x)
합성 표현과 체인 룰
f(x,y,z) = (x+y)z 같이 더 복잡한 경우에는 어떻게 해야될 지 알아보자.
q = x + y 라고 할 경우 f = qz가 되고 ∂f / ∂q = z , ∂f / ∂z = q이다.
또한 ∂q / ∂x = 1, ∂q / ∂y = 1이다.
체인룰이란 ∂f / ∂x 를 구하려고 할 때 (∂f / ∂q) * (∂q / ∂x) 처럼 중간에 분자 분모를 곱하는 것이다.즉 ∂f / ∂x = z 이다.
역전파(Backpropagation) 직관
역전파는 매우 국소적인 프로세스이다. 인공신경망은 여러 층의 다수 게이트가 입력값을 받아
출력값을 도출해내는데 각 게이트는 출력값과 입력에 대한 출력의 국부적 기울기(local gradient)를 계산할 수 있다.
게이트는 전체 회로의 세부사항은 모르더라도 이러한 작업을 독립적으로 수행할 수 있으며
순전파 이후 역전파 과정에서 전체회로의 최종 출력에 대한 출력 값의 기울기를 학습하게 된다.
체인룰에 따르면 이 기울기를 모든 입력에 대해 일반적으로 계산하는 모든 기울기에 곱해야된다.
모듈화: 시그모이드 예시
시그모이드 함수 σ(x) = 1 / (1 + e^(-x)) 에 대하여 도함수를 계산하면
dσ(x) / dx = (1 - σ(x))* σ(x) 이다.
실전 역전파: 단계별 연산
f(x,y) = ( x + σ(y) ) / (σ(x) + (x + y)^2)
위 함수에 대해서 스테이지를 분리하면 다음과 같다.
sigy = 1 / (1 + e^(-y))
num = x + sigy
sigx = 1 / (1 + e^(-x))
xpy = x + y
xpysqr = xpy**2
den = sigx + xpysqr
invden = 1 / den
f = num * invden
역전파 과정을 나눠보면 다음과 같다.
dnum = invden
dinvden = num
dden = (-1 / den**2) * dinvden
dsigx = 1 * dden
dxpysqr = 1 * dden
dx = 1 * dxpy
dy = 1 * dxpy
dx += ((1 - sigx) *sigx) * dsigx
dx += 1 * dnum
dsigy = 1 * dnum
dy += ((1 - sigy) * sigy) * dsigy
중간에 나오는 값들은 필요없이 계산을 다시할 수 있으므로 캐시를 해두는 것이 좋고그래디언트가 +=로 누적되는 것을 확인하도록 한다.
역방향 흐름 패턴
각 게이트별 패턴은 다음과 같다.
- add 게이트: 출력 그래디언트를 모든 입력에 동일하게 분배
- max 게이트: 최댓값을 가진 입력으로만 그래디언트 전달
- mul 게이트: 입력값(스위치 후) × 상위 그래디언트
- 곱셈 게이트는 작은 입력에 큰 그래디언트를 할당할 수 있어 입력 스케일이 학습률에 영향을 미친다.
벡터화 연산 기울기
위 섹션들은 단일 변수의 경우를 고려했던 것이다. 하지만 모든 개념들은 행렬과 벡터 연산으로 확장할 수 있다.
D = WX 인 경우 dW = dD(X^T) dX = (W^T)dD 로 행렬 곱을 통해 구할 수 있다.
차원분석을 통해 작은 예시를 사용하면서 직접 기울기를 유도해보는 것을 추천한다.
'학습 > AI' 카테고리의 다른 글
Deep Learning for Computer Vision : Neural Networks 2 (0) | 2025.04.27 |
---|---|
Deep Learning for Computer Vision : Neural Networks 1 (0) | 2025.04.27 |
Deep Learning for Computer Vision : Optimization (0) | 2025.04.27 |
Deep Learning for Computer Vision : Linear Classification (0) | 2025.04.25 |
Deep Learning for Computer Vision : Image Classification (1) | 2025.04.23 |