본 글은 1D CNN에서 수식을 기반으로 한 backpropagation 과정을 간단한 예제를 포함합니다.
1. 간단한 1D CNN 모델
구성
- 입력: x=[x1,x2,x3] (1채널, 길이 3)
- 커널: w=[w1,w2], bias: b
- 출력: z=w1x1+w2x2+b
- 활성화 함수: ReLU
- 손실 함수: MSE (Mean Squared Error)
- 타겟: y
2. 순전파 (Forward pass)
Conv1D + Bias
입력:
x=[x1,x2],
가중치: w=[w1,w2],
바이어스: b
Convolution 결과 (합성곱):
z=w1x1+w2x2+b
ReLU
a=ReLU(z)=max(0,z)
출력층 (간단히 선형):
3. 손실 함수 (MSE)
L=21(y^−y)2
4. 역전파 (Backpropagation)
Step 1: 손실 w.r.t 출력
∂y^∂L=y^−y
Step 2: 출력 w.r.t ReLU
∂a∂y^=1⇒∂y^∂L⋅∂a∂y^=∂a∂L=y^−y
Step 3: ReLU w.r.t 합성곱 결과 z
∂z∂a={10if z>0otherwise⇒∂z∂L=(y^−y)⋅1z>0
Step 4: 합성곱 결과 w.r.t 가중치, 입력, 바이어스
- ∂w1∂z=x1
- ∂w2∂z=x2
- ∂b∂z=1
- ∂x1∂z=w1
- ∂x2∂z=w2
따라서:
- ∂w1∂L=∂z∂L⋅x1
- ∂w2∂L=∂z∂L⋅x2
- ∂b∂L=∂z∂L
5. 한 줄 정리
∂wi∂L=(y^−y)⋅1z>0⋅xi
∂b∂L=(y^−y)⋅1z>0
이렇게 **체인 룰(chain rule)**을 통해 각 단계별로 미분값을 곱하면서 손실에 대한 가중치의 그래디언트를 구하고, 그걸로 가중치를 업데이트합니다.