분자중심 표현법, 분모중심 표현법

seokj·2023년 2월 10일
0

참고자료:
https://en.wikipedia.org/wiki/Matrix_calculus#Layout_conventions
https://datascienceschool.net/... (분모중심 표기법)
https://darkpgmr.tistory.com/141 (분자중심 표기법)


두 변수를 미분할 때 벡터나 행렬이 있으면 계산결과가 벡터나 행렬이 될 수 있다. 이 때 계산 결과의 표기법에 두 가지 방법이 있다.

분자 중심 표기법

분자 중심 표기법은 분자를 그대로 둔 채 분모를 전치한 모양으로 미분 결과를 적는 방식이다.

y,x is scalary=[y1y2yn]xT=[x1x2xm]yx=[y1xy2xynx]yx=[yx1yx2yxm]yx=[y1x1y1x2y1xmy2x1y2x2y2xmynx1ynx2ynxm]\begin{aligned} &y, x \text{ is scalar} \\ &\text{y} = \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix} \quad \text{x}^T = \begin{bmatrix} x_1 & x_2 & \cdots & x_m \end{bmatrix} \\ &\frac{\partial \text{y}}{\partial x}= \begin{bmatrix} \frac{\partial y_1}{\partial x} \\ \frac{\partial y_2}{\partial x} \\ \vdots \\ \frac{\partial y_n}{\partial x} \end{bmatrix} \quad \frac{\partial y}{\partial \text{x}}= \begin{bmatrix} \frac{\partial y}{\partial x_1} & \frac{\partial y}{\partial x_2} & \cdots & \frac{\partial y}{\partial x_m} \end{bmatrix} \quad \frac{\partial \text{y}}{\partial \text{x}}= \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \frac{\partial y_1}{\partial x_2} & \cdots & \frac{\partial y_1}{\partial x_m} \\ \frac{\partial y_2}{\partial x_1} & \frac{\partial y_2}{\partial x_2} & \cdots & \frac{\partial y_2}{\partial x_m} \\ \vdots & \vdots & \ddots\\ \frac{\partial y_n}{\partial x_1} & \frac{\partial y_n}{\partial x_2} & & \frac{\partial y_n}{\partial x_m} \\ \end{bmatrix} \end{aligned}

행렬에 대해서도 똑같이 적용된다.

  • 행렬 Y\text{Y}의 크기가 n×mn\times m일 때 Yx\frac{\partial \text{Y}}{\partial x}의 크기는 n×mn\times m이다.
  • 행렬 X\text{X}의 크기가 p×qp\times q일 때 yX\frac{\partial y}{\partial \text{X}}의 크기는 q×pq\times p이다.

행렬-벡터, 벡터-행렬, 행렬-행렬 미분의 표기법은 정립되지 않았다.

분모 중심 표기법

분모 중심 표기법은 아까와 반대로 분모를 그대로 둔 채 분자를 전치한 모양으로 미분 결과를 적는 방식이다.

y,x is scalaryT=[y1y2yn]x=[x1x2xm]yx=[y1xy2xynx]yx=[yx1yx2yxm]yx=[y1x1y2x1ynx1y1x2y2x2ynx2y1xmy2xmynxm]\begin{aligned} &y, x \text{ is scalar} \\ &\text{y}^T = \begin{bmatrix} y_1 & y_2 & \cdots & y_n \end{bmatrix} \quad \text{x} = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_m \end{bmatrix} \\ &\frac{\partial \text{y}}{\partial x}= \begin{bmatrix} \frac{\partial y_1}{\partial x} & \frac{\partial y_2}{\partial x} & \cdots & \frac{\partial y_n}{\partial x} \end{bmatrix} \quad \frac{\partial y}{\partial \text{x}}= \begin{bmatrix} \frac{\partial y}{\partial x_1} \\ \frac{\partial y}{\partial x_2} \\ \vdots \\ \frac{\partial y}{\partial x_m} \end{bmatrix} \quad \frac{\partial \text{y}}{\partial \text{x}}= \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \frac{\partial y_2}{\partial x_1} & \cdots & \frac{\partial y_n}{\partial x_1} \\ \frac{\partial y_1}{\partial x_2} & \frac{\partial y_2}{\partial x_2} & \cdots & \frac{\partial y_n}{\partial x_2} \\ \vdots & \vdots & \ddots\\ \frac{\partial y_1}{\partial x_m} & \frac{\partial y_2}{\partial x_m} & & \frac{\partial y_n}{\partial x_m} \\ \end{bmatrix} \end{aligned}

행렬에 대해서도 똑같이 적용된다.

  • 행렬 Y\text{Y}의 크기가 n×mn\times m일 때 Yx\frac{\partial \text{Y}}{\partial x}의 크기는 m×nm\times n이다.
  • 행렬 X\text{X}의 크기가 p×qp\times q일 때 yX\frac{\partial y}{\partial \text{X}}의 크기는 p×qp\times q이다.

단, 분모 중심 표기법에서는 Yx\frac{\partial \text{Y}}{\partial x}가 매우 매우 드물게 나타난다. (아예 안 쓴다고 봐도 무방하다.) 그 이유는 행렬을 스칼라로 미분하면 전치가 되는 것처럼 보이기 때문이다. 그래서 아래와 같이 주로 사용한다.

  • Yx\frac{\partial \text{Y}}{\partial x}yX\frac{\partial y}{\partial \text{X}}를 분자 중심 표기법으로 통일해서 표시
  • Yx\frac{\partial \text{Y}}{\partial x}는 분자 중심 표기법, yX\frac{\partial y}{\partial \text{X}}는 분모 중심 표기법으로 표시

행렬-벡터, 벡터-행렬, 행렬-행렬 미분의 표기법은 분자 중심 표기법에서와 같이 정립되지 않았다.


어느 표기법이 더 좋은가?

교과서나 논문 등 다양한 분야에서 볼 때 일관된 하나의 방법만을 사용하지는 않는다. 분모 중심 표기법 끝부분에서 살펴본 바와 같이 두 표기법을 섞어 쓰는 경우도 있다. 같은 저자가 쓰거나 같은 글 안에서도 혼용해서 쓰이기도 하기 때문에 문맥을 살펴봐야 한다. (예를 들어, 스칼라를 벡터로 미분하는 그래디언트를 구할 땐 분모 중심 표기법을 써서 열벡터로 표기해놓고는 벡터를 벡터로 미분할 땐 분자 중심 표기법을 사용하는 경우가 있다.)

개인적인 생각으로는 분자 중심 표기법으로 통일해서 쓰는게 좋아보인다. 왜냐하면 각 변수마다 어떤 변수에게 얼마나 영향을 받는지를 정리해서 볼 때가 많았던 것 같다. (예를 들어, 딥러닝 모델의 loss값이 각 파라미터 θ1,θ2,...\theta_1, \theta_2, ...에 받는 영향을 알고싶은 경우) 그래서 피미분 변수가 중심이 되는게 편할 것 같다.

profile
안녕하세요

0개의 댓글