Forward Pass

traininginferenceactivations

Forward pass는 입력을 모델의 layer들에 차례로 통과시켜 출력을 만드는 과정이다.

Input
Layer 1
Layer 2
Layer 3
Output

입력 벡터

layer 하나를 단순화하면 이렇게 볼 수 있다.

xl+1=fl(xl;Wl)x_{l+1} = f_l(x_l; W_l)

여기서:

x_l     = 현재 layer의 입력 activation
W_l     = 현재 layer의 parameter
f_l     = matmul, attention, MLP, normalization, activation function 등을 포함한 layer 계산
x_{l+1} = 다음 layer로 전달되는 activation

forward에서 만들어지는 중간값 x_1, x_2, ...는 다음 layer의 입력이다. 추론에서는 보통 다음 계산이 끝나면 오래 들고 있을 필요가 없다.

하지만 학습에서는 다르다. backward pass에서 각 layer의 gradient를 계산하려면 forward 때의 입력 activation이 다시 필요하다. 그래서 학습의 forward는 단순히 출력을 만드는 과정이 아니라, backward를 위한 중간값을 남기는 과정이기도 하다.

확인

  • forward pass의 입력과 출력은 무엇인가?
  • x_{l+1} = f_l(x_l; W_l)에서 x_lW_l은 각각 무엇인가?
  • 추론과 달리 학습 forward에서 activation을 저장해야 하는 이유는 무엇인가?