우리가 Loss function의 결과로 우리가 가중치를 업데이트 해줄 때 이 역전파를 이용하는 것이다!!
이 역전파를 통해 optimizer를 해서 최적화를 하는 것이다.
역전파는 loss를 weight파라미터에 대해서 미분하는 과정이다.
neural network에서 중요한 역할을한다!!

주어진 input parameter에 값을 넣어서 output까지 계산하는 과정이다.
아래의 그림에서 x와y가 f로 들어가서 z로 나오는 과정을 볼 수 있다.
예측값과 정답값의 차이가 각각의 단계에 있는 파라미터들로 미분을 했을 때 , 얼마만큼 변하는 지를 계산하는 과정이다.
아래의 그림을 보면 역전파는 3가지로 구분된다.
1) upstream gradient
Loss를 output으로 미분해준 값을 의미한다. 즉 로스가 output에 대해서 얼마나 변하는지 알 수 있다.
2) local gradient
output에 대해서 input으로 미분해주고 operation 안에서 생기는 것이다.
3) downstream gradient
upstream gradient과 local gradient의 곱으로 표현된다.(연쇄작용 적용)
역전파는 미적분의 연쇄작용을 이용하여 계산한다.
아래의 그림에서 원은 수학식을 계산할 때 operation을 넣는 곳이라고 생각하면 된다(ex 곱셈,뺄셈)

2) mul gate
곱셈일때는 미분하면 상대 쪽의 값이 나오기 때문에 downstream gradient값이 상대방의 변수값 * upstream gradient이다. 그래서 swap multiplier라고 한다.
3) copy gate
gradient가 더해져서 downstream gradient로 들어간다.
4) max gate
maximum인 쪽으로 downstream gradient이 흘러간다. 작은 쪽으로는 gradient로 흘러가지 않는다.

역전파가 나오고 전에는 컴퓨팅하여 자동으로 미분하는 테크니컬한 방법이 정립되어 있지 않았는데 역전파가 나오고 나서 gpu를 이용하여 계산할 수 있게 되면서 우리가 지금 쓰는 딥러닝이 된 것이다!!