그라디언트 구하기 학습 데이터 X가 레이어를 거쳐서 O가 되고, 손실 함수값 L이 되는 상황을 가정합시다. 역전파를 하면서 레이어 출력과 똑같은 shape의 그라디언트를 얻도록 합니다.
상위 레이어로 가는 그라디언트는 체인-룰을 따라 만들어 냅니다. 레이어 출력에 대한 입력 편미분 값은 영향을 준 변수들 각각의 미분 값의 합입니다.
따라서 아래와 같은 그라디언트 행렬의 곱을 생각할 수 있습니다. 이것은 numpy.matmul을 통해 간단하게 처리할 수 있습니다.
그런데 배치 처리를 하는 경우에는 어떻게 해야 합니까? 이제 데이터는 벡터가 아닌 행렬의 형태로 흐릅니다.
그라디언트 또한 확장되죠. 이럴 땐 아까와 같이 numpy.matmul을 사용할 수 없습니다.
이 계산을 처리하기 위해 numpy의 axis를 고려할 수 있습니다. numpy.newaxis는 차원 확장을 reshape보다 유용하게 수행할 수 있습니다. np.array([[1,2,3], [4,5,6]])[:, np.new...
#
딥러닝
#
레이어
#
오차역전파
원문 링크 : numpy로 딥러닝 직접 구현하기