연쇄법칙(chain rule)은 합성함수(composite function)의 도함수를 구할 때 유용하게 사용되는 법칙이다. 합성함수란 두개 이상의 함수를 연결하여 하나의 함수로 만드는 연산을 말한다. 연쇄법칙은 신경망을 학습시킬 때 사용되는 역전파(backpropagation) 알고리즘의 근간을 이룬다.
벡터 \(\mathbf{y}=[y_1 \ \ y_2 ]^T\)를 변수로 하는 다변수 스칼라 함수 \(f(\mathbf{y})\)의 미분 \(df\)는 다음과 같이 계산된다.
\[ df= \frac{\partial f}{\partial y_1} dy_1 + \frac{\partial f}{\partial y_2} dy_2 \tag{1} \]
한편 \(y_1, \ y_2\)도 각각 \(\mathbf{x}=[x_1 \ \ x_2 \ \ x_3 ]^T\)의 함수일 때 \(y_1 (\mathbf{x}), \ y_2 (\mathbf{x})\)의 미분 \(dy_1, \ dy_2\)는 다음과 같이 계산된다.
\[ \begin{align} & dy_1= \frac{\partial y_1}{\partial x_1} dx_1 + \frac{\partial y_1}{\partial x_2} dx_2 + \frac{\partial y_1}{\partial x_3} dx_3 \tag{2} \\ \\ & dy_2= \frac{\partial y_2}{\partial x_1} dx_1 + \frac{\partial y_2}{\partial x_2} dx_2 + \frac{\partial y_2}{\partial x_3} dx_3 \end{align} \]
식 (2)를 식 (1)에 대입하면 다음과 같다.
\[ \begin{align} df &= \frac{\partial f}{\partial y_1} \left( \frac{\partial y_1}{\partial x_1} dx_1 + \frac{\partial y_1}{\partial x_2} dx_2 + \frac{\partial y_1}{\partial x_3} dx_3 \right) \tag{3} \\ \\ & \ \ + \frac{\partial f}{\partial y_2} \left( \frac{\partial y_2}{\partial x_1} dx_1 + \frac{\partial y_2}{\partial x_2} dx_2 + \frac{\partial y_2}{\partial x_3} dx_3 \right) \end{align} \]
한편 \(f\)는 결국 \(\mathbf{x}\)의 함수이므로 미분 \(df\)는 다음과 같이 표현할 수 있다.
\[ df= \frac{\partial f}{\partial x_1} dx_1 + \frac{\partial f}{\partial x_2} dx_2 + \frac{\partial f}{\partial x_3} dx_3 \tag{4} \]
식 (1)과 (3)은 같아야 하므로 다음 관계가 성립한다.
\[ \begin{align} & \frac{\partial f}{\partial x_1} = \frac{\partial f}{\partial y_1} \frac{\partial y_1}{\partial x_1} + \frac{\partial f}{\partial y_2} \frac{\partial y_2}{\partial x_1} \tag{5} \\ \\ & \frac{\partial f}{\partial x_2} = \frac{\partial f}{\partial y_1} \frac{\partial y_1}{\partial x_2} + \frac{\partial f}{\partial y_2} \frac{\partial y_2}{\partial x_2} \\ \\ & \frac{\partial f}{\partial x_3} = \frac{\partial f}{\partial y_1} \frac{\partial y_1}{\partial x_3} + \frac{\partial f}{\partial y_2} \frac{\partial y_2}{\partial x_3} \end{align} \]
이 식을 벡터와 행렬 형식으로 표현하면 다음과 같다.
\[ \begin{bmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\ \frac{\partial f}{\partial x_3} \end{bmatrix} = \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \frac{\partial y_2}{\partial x_1} \\ \frac{\partial y_1}{\partial x_2} & \frac{\partial y_2}{\partial x_2} \\ \frac{\partial y_1}{\partial x_3} & \frac{\partial y_2}{\partial x_3} \end{bmatrix} \begin{bmatrix} \frac{\partial f}{\partial y_1} \\ \frac{\partial f}{\partial y_2} \end{bmatrix} \tag{6} \]
또는
\[ \frac{df}{d \mathbf{x}} = \frac{d \mathbf{y}}{d \mathbf{x}} \frac{df}{d \mathbf{y}} \tag{7} \]
여기서 \(\frac{df}{d\mathbf{x}}\)와 \(\frac{df}{d\mathbf{y}}\)는 그래디언트(gradient)로서 각각 다음과 같이 정의되고,
\[ \frac{df}{d \mathbf{x}} = \begin{bmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\ \frac{\partial f}{\partial x_3} \end{bmatrix} , \ \ \ \frac{df}{d\mathbf{y}} = \begin{bmatrix} \frac{\partial f}{\partial y_1} \\ \frac{\partial f}{\partial y_2} \end{bmatrix} \]
\(\frac{d\mathbf{y}}{d\mathbf{x}}\)는 자코비안(Jacobian)으로서 다음과 같이 정의된다.
\[ \frac{d\mathbf{y}}{d\mathbf{x}} = \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \frac{\partial y_2}{\partial x_1} \\ \frac{\partial y_1}{\partial x_2} & \frac{\partial y_2}{\partial x_2} \\ \frac{\partial y_1}{\partial x_3} & \frac{\partial y_2}{\partial x_3} \end{bmatrix} \]
식 (7)은 임의의 차원의 벡터일 때도 적용된다. 예를 들어 \(\mathbf{x} \in \mathbb{R}^n, \ \ \mathbf{y} \in \mathbb{R}^m\)일 때 그래디언트와 자코비안의 차원은 각각 \(\frac{df}{d\mathbf{x}} \in \mathbb{R}^n\), \( \frac{df}{d\mathbf{y}} \in \mathbb{R}^m \), \( \frac{d\mathbf{y}}{d\mathbf{x}} \in \mathbb{R}^{n \times m} \)이 된다.
식 (7)을 다변수 합성함수의 연쇄법칙(chain rule)이라고 한다. 연쇄법칙은 복합함수를 구성하는 개별함수의 도함수를 이용해서 복합함수의 도함수를 계산해주는 법칙이다.
연쇄법칙은 복합함수의 구성함수가 2개 이상일 때도 작용할 수 있다. 그림과 같이 연쇄적으로자코비안을 계산해주면 된다.
'AI 수학 > 최적화' 카테고리의 다른 글
역전파 (Backpropagation) 계산 (0) | 2021.03.31 |
---|---|
벡터 함수를 행렬로 미분하기 (0) | 2021.03.27 |
[KKT 조건 - 3] 프라이멀 문제와 듀얼 문제 (0) | 2021.02.17 |
[KKT 조건 - 2] KKT 조건과 적용 예제 (0) | 2021.01.18 |
[KKT 조건 - 1] 등식과 부등식 제약조건이 있는 최적화 문제 (0) | 2021.01.14 |
댓글