Backpropagation for a Linear Layer
CS231n assignment1 의 two_layer_net.ipynb
해결에 필수적이었던, Matrix들에서의 Backpropagation (Chain Rule) 에 대하여 설명한다. 원문 파일은 아래와 같다.
Backpropagation for a Linear Layer
목표
, , 가 모두 행렬이고 이 스칼라량이라 하자.
를 알고 있을 때, 와 를 계산하는 것이 목표이다. 이것이 기본적인 Chain Rule을 이용한 Backpropagation이다.
조건
직접 Chain Rule을 이용하면, 나 와 같은 항들이 등장한다. 이 항들은 Jacobian Matrix 인데, 너무나 크기 때문에 이 Jacobian 항들을 쓰고 싶지 않다.
방법
위의 원문 파일에서는 one element at a time 방식을 이용한다. 행렬을 원소 단위로 나누어 생각하고 계산해 본다는 것인데, 작은 사이즈의 경우를 예시로 직접 계산한 뒤 이를 일반화하였다.
결론
참고
- 와 모두 결과값의 shape는 matrix의 shape와 같다!
- 원문에서 두 matrix의 dot product와 곱셈(multiplication)을 구분하는 듯 하였는데, 개인적으로 이 용법은 잘못되었다고 생각한다. Dot product는 두 matrix 사이에서 정의되지 않으며 조금 더 포괄적으로 생각하더라도 행렬들에 해당되는 dot product는 행렬의 곱셈이다. (그래서 필자와 같이 헷갈리는 사람을 만들어낸다 ㅜㅜ) 의미상 행렬의 dot product를 스칼라량이 output으로 나오는 inner product로 생각하면 깔끔하게 맞아 떨어진다. ()
Backpropagation for a Linear Layer
http://yxxshin.github.io/2022/08/05/2022-08-05-Backprop-for-a-Linear-Layer/