통계, IT, AI

scalar를 matrix로 미분하기 본문

잡지식

scalar를 matrix로 미분하기

Harold_Finch 2017. 10. 5. 13:05

1. 개요

    CNN(Convolutional Neural Network)를 아무런 기초없이 구현하려고 하다보니 여러가지 어려움이 있었다. 그러던 중 <밑바닥부터 시작하는 딥러닝>이라는 책에서 좋은 레퍼런스를 발견하여 그것을 공부하고 있다. 그런데 Backpropagation을 그래프로 해석하는 과정에서 스칼라(scalar)를 매트릭스(matrix)로 미분하는 부분[각주:1]이 쉽게 이해가 가지 않아 따로 정리한다.

    어떤 매트릭스 Cp×kAp×qBq×k로 표현할 수 있고, 매트릭스를 스칼라로 보내는 함수 f가 있어 s=f(C)일 때, s에 대한 A, B의 미분이 각각 다음과 같다.

sA=lCBT,sB=ATsC

2. 증명

    sA의 원소 aij로 미분한 값이 다음과 같다. 단, ci,bjCB의 행 벡터이며 ci,bjci,bj의 내적이다.

saij=kscikcikaij=kscikbjk cik=jaijbjk=sci,bj

    따라서 sA로 미분하면 다음을 얻는다. 그리고 s/B=ATs/C도 같은 방법으로 유도할 수 있다.

sA=[saij]=[sci,bj]=[sc1,b1sc1,b2sc2,b1scp,bq]=[sc1sc2scp][b1b2bq]=sCBT

  1. 4쇄, 172페이지, 식 5.13 [본문으로]
Comments