← 문제 목록/2-Layer MLP Forward/Backward [medium]
문제 해설

2-Layer MLP Forward/Backward [medium]

역전파 · medium

preview

2-Layer MLP Forward/Backward [medium]

v1 Linear backward 는 단일 층. 실제 신경망은 여러 층 + 활성함수. 2-layer MLP forward/backward 를 한 함수에서 계산하는 것이 이번 문제.

구조

h &= X W_1 + b_1 \\ a &= \text{ReLU}(h) \\ \hat y &= a W_2 + b_2 \\ L &= \frac{1}{N} \|\hat y - y\|_F^2 \end{aligned}$$ ## Backward (chain rule) MSE gradient: $$\frac{\partial L}{\partial \hat y} = \frac{2}{N} (\hat y - y)$$ Linear (layer 2): $$dW_2 = a^\top \cdot \frac{\partial L}{\partial \hat y}, \quad db_2 = \sum_n \frac{\partial L}{\partial \hat y_n}, \quad \frac{\partial L}{\partial a} = \frac{\partial L}{\partial \hat y} \cdot W_2^\top$$ ReLU backward: $$\frac{\partial L}{\partial h} = \frac{\partial L}{\partial a} \cdot \mathbb{1}[h > 0]$$ Linear (layer 1): $$dW_1 = X^\top \cdot \frac{\partial L}{\partial h}, \quad db_1 = \sum_n \frac{\partial L}{\partial h_n}$$ ## 과제 함수 `mlp_forward_backward(X, W1, b1, W2, b2, y)` 를 완성하세요. - `X` shape `(N, D_in)`, `W1` `(D_in, H)`, `b1` `(H,)`, `W2` `(H, D_out)`, `b2` `(D_out,)`, `y` `(N, D_out)`. - 반환: `(loss, dW1, db1, dW2, db2)` — loss Python `float`, grads 같은 shape. ## 테스트 케이스 | # | 이름 | 검증 | |---|---|---| | 1 | 반환 5-tuple (loss, dW1, db1, dW2, db2) | | | 2 | loss 정확 (MSE) | 수식 검증 | | 3 | gradient shape: 각 파라미터와 일치 | | | 4 | 수치 미분 일치 (dW1) | | | 5 | 수치 미분 일치 (dW2) | | | 6 | 수치 미분 일치 (db1, db2) | | | 7 | SGD 한 step 후 loss 감소 | |
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.