Skip to content

MatrixCalculus

Derivatives: vector by vector✔

벡터연산의 미분

벡터 \(w, x \in \R^n\), 성분별 연산 함수 \(f, g: \R^n \to \R^n\) 에 대하여 다음과 같이 정의된 성분별 벡터 이항연산 \(\bigcirc\) 을 두자.

\[ y = f(w) \bigcirc g(x) \iff \begin{bmatrix} y_{1}\\ y_{2}\\ \vdots\\ y_{n}\\ \end{bmatrix} = \begin{bmatrix} f_{1}(w)\bigcirc g_1(x)\\ f_{2}(w)\bigcirc g_2(x)\\ \vdots\\ f_{n}(w)\bigcirc g_n(x)\\ \end{bmatrix} \]

\(y\) 에 대한 \(w\) 의 미분과 \(x\) 의 미분은 각각 다음과 같은 야코비 행렬이다.

\[ J_w = \operatorname{diag} \left (\dfrac{\partial y_1}{\partial w_1}, \dfrac{\partial y_2}{\partial w_2}, \dots , \dfrac{\partial y_n}{\partial w_n} \right )\]
\[ J_x = \operatorname{diag} \left (\dfrac{\partial y_1}{\partial x_1}, \dfrac{\partial y_2}{\partial x_2}, \dots , \dfrac{\partial y_n}{\partial x_n} \right )\]
  • 일반적으로 \(y\) 에 대한 \(w\) 의 미분과 \(x\) 의 미분은 각각 다음과 같은 야코비 행렬이다.

    \[ J_w = \dfrac{\partial y}{\partial w} = \begin{bmatrix} \dfrac{\partial y_1}{\partial w_1}&\dfrac{\partial y_1}{\partial w_2}&\dots&\dfrac{\partial y_1}{\partial w_n}\\ \dfrac{\partial y_2}{\partial w_1}&\dfrac{\partial y_2}{\partial w_2}&\dots&\dfrac{\partial y_2}{\partial w_n}\\ \vdots& \vdots& \ddots& \vdots \\ \dfrac{\partial y_n}{\partial w_1}&\dfrac{\partial y_n}{\partial w_2}&\dots&\dfrac{\partial y_n}{\partial w_n}\\ \end{bmatrix} \begin{matrix} &\\ \end{matrix} \]
    \[ J_x = \dfrac{\partial y}{\partial x} = \begin{bmatrix} \dfrac{\partial y_1}{\partial x_1}&\dfrac{\partial y_1}{\partial x_2}&\dots&\dfrac{\partial y_1}{\partial x_n}\\ \dfrac{\partial y_2}{\partial x_1}&\dfrac{\partial y_2}{\partial x_2}&\dots&\dfrac{\partial y_2}{\partial x_n}\\ \vdots& \vdots& \ddots& \vdots \\ \dfrac{\partial y_n}{\partial x_1}&\dfrac{\partial y_n}{\partial x_2}&\dots&\dfrac{\partial y_n}{\partial x_n}\\ \end{bmatrix} \begin{matrix} &\\ \end{matrix} \]

    그러나 야코비 행렬은 많은 경우 대각행렬이된다. 야코비 행렬 \(J_w\) 가 대각행렬이 되는 조건은 \(f_i\) 와 \(g_i\) 가 \(w_j\) 에 대하여 상수인 것이다. 즉, \(\dfrac{\partial }{\partial w_j}f_i(w) = \dfrac{\partial }{\partial w_j}g_i(x) = 0\) 이면 \(J_w\) 는 대각행렬이다. 그런데 \(f, g\) 가 성분별 연산 함수이므로 \(f_i, g_i\) 는 순전히 \(w_i\) 에 대한 함수이다. 따라서 \(f_i, g_i\) 가 \(w_j\) 에 대하여 상수임이 보장된다. 가령 항등함수 \(f:\R^n \to \R^n\) 는 \(f_i(x) = x_i\) 이므로 \(f_i\) 가 순전히 \(x_i\) 에 대한 함수이다. 즉, \(f, g\) 가 성분별 연산 함수라는 조건은

    \[ y_i = f_i(w) \bigcirc g_i(x) = f_i(w_i)\bigcirc g_i(x_i)\]

    임을 말해준다. 그렇다면 야코비 행렬 \(J_w\) 는 결국 다음과 같이 대각행렬이 된다.

    \[ \begin{align}\begin{split} J_w &= \dfrac{\partial y}{\partial w} = \begin{bmatrix} \dfrac{\partial y_1}{\partial w_1}&0&\dots&0\\ 0&\dfrac{\partial y_2}{\partial w_2}&\dots&0\\ \vdots& \vdots& \ddots& \vdots \\ 0&0&\dots&\dfrac{\partial y_n}{\partial w_n}\\ \end{bmatrix} \begin{matrix} &\\ \end{matrix} \\ & = \operatorname{diag} \left (\dfrac{\partial y_1}{\partial w_1}, \dfrac{\partial y_2}{\partial w_2}, \dots , \dfrac{\partial y_n}{\partial w_n} \right )\\ \end{split}\end{align} \tag*{} \]

    \(J_x\) 도 마찬가지이다.

    \[ J_x = \operatorname{diag} \left (\dfrac{\partial y_1}{\partial x_1}, \dfrac{\partial y_2}{\partial x_2}, \dots , \dfrac{\partial y_n}{\partial x_n} \right )\]

벡터 사칙연산의 미분

벡터 \(w, x \in \R^n\) 의 성분별 덧셈 \(+\), 성분별 뺄셈 \(-\), 아다마르 곱 \(\odot\), 성분별 나눗셈 \(\oslash\) 의 \(w\) 에 대한 미분은 다음과 같다.

  • \(\dfrac{\partial (w + x)}{\partial w} = \operatorname{diag} \left (\dots \dfrac{\partial (w_i + x_i)}{\partial w_i} \dots \right ) = \operatorname{diag} \left (1 _{\R^n} \right ) = I_n\)

  • \(\dfrac{\partial (w - x)}{\partial w} = \operatorname{diag} \left (\dots \dfrac{\partial (w_i - x_i)}{\partial w_i} \dots \right ) = \operatorname{diag} \left (1 _{\R^n} \right ) = I_n\)

  • \(\dfrac{\partial (w \odot x)}{\partial w} = \operatorname{diag} \left (\dots \dfrac{\partial (w_i \times x_i)}{\partial w_i} \dots \right ) = \operatorname{diag} \left (x \right )\)

  • \(\dfrac{\partial (w \oslash x)}{\partial w} = \operatorname{diag} \left (\dots \dfrac{\partial (w_i / x_i)}{\partial w_i} \dots \right ) = \operatorname{diag} \left ( \dots \dfrac{1}{x_i}\dots \right )\)

\(x\) 에 대한 미분은 다음과 같다.

  • \(\dfrac{\partial (w + x)}{\partial x} = \operatorname{diag} \left (\dots \dfrac{\partial (w_i + x_i)}{\partial x_i} \dots \right ) = \operatorname{diag} \left (1 _{\R^n} \right ) = I_n\)

  • \(\dfrac{\partial (w - x)}{\partial x} = \operatorname{diag} \left (\dots \dfrac{\partial (w_i - x_i)}{\partial x_i} \dots \right ) = \operatorname{diag} \left (-1 _{\R^n} \right ) =- I_n\)

  • \(\dfrac{\partial (w \odot x)}{\partial x} = \operatorname{diag} \left (\dots \dfrac{\partial (w_i \times x_i)}{\partial x_i} \dots \right ) = \operatorname{diag} \left (x \right )\)

  • \(\dfrac{\partial (w \oslash x)}{\partial x} = \operatorname{diag} \left (\dots \dfrac{\partial (w_i / x_i)}{\partial x_i} \dots \right ) = \operatorname{diag} \left ( \dots -\dfrac{w_i}{x_i ^{2}}\dots \right )\)

  • 위 결과들을 보이는 것은 쉬운데, 가령 \(w, x \in \R^n\) 의 덧셈연산에 대하여

    \[ \dfrac{\partial }{\partial w_i}(w_i + x_i) = 1 + 0 = 1, \quad \dfrac{\partial }{\partial w_j}(w_i + x_i) = 0 \]
    \[ \dfrac{\partial }{\partial x_i}(w_i + x_i) = 0 + 1 = 1, \quad \dfrac{\partial }{\partial x_j}(w_i + x_i) = 0 \]

    이므로 다음이 성립한다.

    \[ \dfrac{\partial (w + x)}{\partial w} = \dfrac{\partial (w + x)}{\partial x} = I_n \]

Chain Rule✔

성분별 벡터 연산의 연쇄법칙

열린집합 \(X \subset \R^m, T \subset \R^n\) 에 대한 함수 \(f: X \subset \R^m \to \R^{p}\) 와 \(g: T \subset \R^n \to \R^m\) 에 대하여 \(g\) 가 \(g\) 가 각 점 \(t \in T\) 에서 미분가능하고 \(f\) 가 \(g(t) \in \R^m\) 에서 미분가능하다고 하자.

\(f, g\) 가 성분별 벡터 연산이면 다음이 성립한다.

\[ D(f \circ g)(t) = \dfrac{\partial }{\partial t}f(g(t)) = \operatorname{diag} \left (\dfrac{\partial f_i}{\partial g_i}\dfrac{\partial g_i}{\partial t_i} \right ) \]
  • 위에서 살펴보았듯이 성분별 벡터 연산의 미분을 취하면 대각 야코비 행렬을 얻는다. 이 경우 연쇄법칙이 아주 단순해진다. 성분별 벡터연산의 야코비 행렬은 대각행렬이므로 다음이 성립한다.

    \[ \dfrac{\partial f}{\partial g} = \operatorname{diag} \left (\dfrac{\partial f_i}{\partial g_i} \right ), \qquad \dfrac{\partial g}{\partial t} = \operatorname{diag} \left (\dfrac{\partial g_i}{\partial t_i} \right ) \]

    따라서 다음이 성립한다.

    \[ \dfrac{\partial }{\partial x}f(g(x)) = \operatorname{diag} \left (\dfrac{\partial f_i}{\partial g_i} \right )\operatorname{diag} \left (\dfrac{\partial g_i}{\partial t_i} \right ) = \operatorname{diag} \left (\dfrac{\partial f_i}{\partial g_i} \dfrac{\partial g_i}{\partial t_i}\right ) \]

Derivatives: vector by scalar✔

벡터와 스칼라 연산의 미분

벡터 \(x\) 와 스칼라 \(c\) 에 대하여 다음이 성립한다.

  • \(\dfrac{\partial (x + c) }{\partial x} = \operatorname{diag} \left (\overrightarrow{1} \right ) = I\)

  • \(\dfrac{\partial (x + c)}{\partial c} = \overrightarrow{1}\)

  • \(\dfrac{\partial cx}{\partial x} = \operatorname{diag} \left (\overrightarrow{1}c \right ) = cI\)

  • \(\dfrac{\partial cx}{\partial c} = x\)

  • 벡터에 스칼라를 연산하면 스칼라를 대상 벡터의 크기만큼 확장하여 연산하게 된다. 가령 벡터 \(x\) 와 스칼라 \(c\) 를 더한 결과 \(y = x + c\) 를 계산할 때 \(f(x) = x\) 와 \(g(c) = \overrightarrow{1}c\) 에 대하여 \(y = f(x) + g(c)\) 와 같이 계산한다. \(\overrightarrow{1}\) 은 항등 벡터를 뜻한다. 따라서 벡터에 대한 스칼라 연산 \(y = x \bigcirc c\) 의 미분은 다음과 같다.

    \[ \dfrac{\partial y}{\partial x} = \operatorname{diag} \left (\dots \dfrac{\partial }{\partial x_i}(f_i(x_i)\bigcirc g_i(c)) \dots \right ) \]

    벡터 \(x + c\) 을 벡터 \(x\) 에 대하여 미분하면 \(\dfrac{\partial (x_i + c) }{\partial x_i} = 1 + 0 = 1\) 이므로 다음과 같은 야코비 행렬을 얻는다.

    \[ \dfrac{\partial (x + c)}{\partial x} = \operatorname{diag} \left (\overrightarrow{1} \right ) = I \]

    벡터 \(x + c\) 를 스칼라 \(c\) 에 대하여 미분하면 \(\dfrac{\partial (x_i + c)}{\partial c} = 0 + 1 = 1\) 이므로 다음과 같은 벡터를 얻는다.

    \[ \dfrac{\partial (x + c)}{\partial c} = \overrightarrow{1} \]

    벡터 \(cx\) 를 벡터 \(x\) 에 대하여 미분하면 \(\dfrac{\partial cx_i}{\partial x_i} = c\) 이므로 다음과 같은 야코비 행렬을 얻는다.

    \[ \dfrac{\partial cx}{\partial x} = \operatorname{diag} \left (\overrightarrow{1}c \right ) = cI \]

    벡터 \(cx\) 를 스칼라 \(c\) 에 대하여 미분하면 \(\dfrac{\partial cx_i}{\partial c} = x_i\) 이므로 다음과 같은 벡터를 얻는다.

    \[ \dfrac{\partial cx}{\partial c} = x \]

Derivatives: scalar by vector✔

벡터 합의 미분

다변수벡터함수 \(f\) 와 벡터 \(x\) 에 대한 벡터합 \(y = \displaystyle \sum_{i=1}^{n}f_i(x)\) 의 \(x\) 에 대한 미분은 다음과 같다.

\[ \dfrac{\partial y}{\partial x} = \begin{pmatrix} \sum_{i}^{}\dfrac{\partial f_i(x)}{\partial x_1}& \sum_{i}^{}\dfrac{\partial f_i(x)}{\partial x_2}& \dots & \sum_{i}^{}\dfrac{\partial f_i(x)}{\partial x_n} \\ \end{pmatrix} \]

벡터 \(x\) 에 대한 벡터합 \(y = \operatorname{sum}(x) = \displaystyle \sum_{i=1}^{n}x_i\) 의 \(x\) 에 대한 미분은 다음과 같다.

\[ \nabla y = \dfrac{\partial }{\partial x}\operatorname{sum} (x) = \begin{pmatrix} 1&1&\dots &1\\ \end{pmatrix} = \overrightarrow{1}^{\top} \]
  • 다변수벡터함수 \(f\) 와 벡터 \(x\) 에 대한 벡터합 \(y = \displaystyle \sum_{i=1}^{n}f_i(x)\) 의 \(x\) 에 대한 미분은 다음과 같다.

    \[ \begin{align}\begin{split} \dfrac{\partial y}{\partial x} &=\begin{pmatrix} \dfrac{\partial y}{\partial x_1}& \dfrac{\partial y}{\partial x_2}& \dots & \dfrac{\partial y}{\partial x_n} \\ \end{pmatrix} \\ &=\begin{pmatrix} \dfrac{\partial }{\partial x_1}\sum_{i}^{}f_i(x)& \dfrac{\partial }{\partial x_2}\sum_{i}^{}f_i(x)& \dots & \dfrac{\partial }{\partial x_n}\sum_{i}^{}f_i(x) \\ \end{pmatrix} \\ &= \begin{pmatrix} \sum_{i}^{}\dfrac{\partial f_i(x)}{\partial x_1}& \sum_{i}^{}\dfrac{\partial f_i(x)}{\partial x_2}& \dots & \sum_{i}^{}\dfrac{\partial f_i(x)}{\partial x_n} \\ \end{pmatrix} \end{split}\end{align} \tag*{} \]

    여기에서 \(f\) 가 항등함수이면 벡터합 \(y = \displaystyle \sum_{i=1}^{n}x_i\) 의 미분이 도출된다.

    \[ \begin{align}\begin{split} \dfrac{\partial y}{\partial x} &= \begin{pmatrix} \sum_{i}^{}\dfrac{\partial f_i(x)}{\partial x_1}& \sum_{i}^{}\dfrac{\partial f_i(x)}{\partial x_2}& \dots & \sum_{i}^{}\dfrac{\partial f_i(x)}{\partial x_n} \\ \end{pmatrix} \\ &= \begin{pmatrix} \sum_{i}^{}\dfrac{\partial x_i}{\partial x_1}& \sum_{i}^{}\dfrac{\partial x_i}{\partial x_2}& \dots & \sum_{i}^{}\dfrac{\partial x_i}{\partial x_n} \\ \end{pmatrix} \\ &= \begin{pmatrix} \dfrac{\partial x_1}{\partial x_1}& \dfrac{\partial x_2}{\partial x_2}& \dots & \dfrac{\partial x_n}{\partial x_n} \\ \end{pmatrix} \\ &= \begin{pmatrix} 1& 1& \dots & 1 \\ \end{pmatrix} = \overrightarrow{1}^{\top}\\ \end{split}\end{align} \tag*{} \]
  • 미분 결과가 열벡터가 아니라 행벡터임을 주의하자. 다차원 공간에서 미분을 시행했을 때 결과 행렬의 형상을 잘 계산하지 않으면 정확한 결과가 나오지 않는다. 야코비 행렬의 정의를 주의하면서 미분 결과 행렬의 형상을 잘 계산할 수 있도록 하자.

  • 예시

    벡터 \(x\), 스칼라 \(c\) 에 대한 벡터합 \(y = \displaystyle \sum_{i}^{}x_ic\) 의 미분을 구해보자. \(x\) 에 대한 미분은 다음과 같다.

    \[ \begin{align}\begin{split} \dfrac{\partial y}{\partial x}&=\begin{pmatrix} \sum_{i}^{}\dfrac{\partial x_ic}{\partial x_1} & \sum_{i}^{}\dfrac{\partial x_ic}{\partial x_2} & \dots & \sum_{i}^{}\dfrac{\partial x_ic}{\partial x_n} \\ \end{pmatrix} \\ &=\begin{pmatrix} c & c & \dots & c \\ \end{pmatrix} \\ \end{split}\end{align} \tag*{} \]

    \(c\) 에 대한 미분은 다음과 같다.

    \[ \dfrac{\partial y}{\partial c} = \dfrac{\partial }{\partial c}\sum_{i}^{}x_ic = \sum_{i}^{}x_i \]

Identities✔

vector by vector✔

vector by vector

벡터 \(x\), 벡터 \(a\), 행렬 \(A\), 스칼라 함수 \(v = v(x)\), 벡터 함수 \(s = s(x)\) 와 \(t = t(x)\), 다변수 벡터 함수 \(f\) 와 \(g\) 에 대하여 다음이 성립한다.

Expression Numerator layout Denominator layout
1. \(\dfrac{\partial a}{\partial x} =\) \(0\) \(0\)
2. \(\dfrac{\partial x}{\partial x} =\) \(I\) \(I\)
3. \(\dfrac{\partial Ax}{\partial x} =\) \(A\) \(A ^{\top}\)
4. \(\dfrac{\partial x ^{\top} A}{\partial x} =\) \(A ^{\top}\) \(A\)
5. \(\dfrac{\partial as}{\partial x} =\) \(a \dfrac{\partial s}{\partial x}\) \(a \dfrac{\partial s}{\partial x}\)
6. \(\dfrac{\partial vs}{\partial x} =\) \(v \dfrac{\partial s}{\partial x} + s \dfrac{\partial v}{\partial x}\) \(v \dfrac{\partial s}{\partial x} + \dfrac{\partial v}{\partial x}s ^{\top}\)
7. \(\dfrac{\partial As}{\partial x} =\) \(A \dfrac{\partial s}{\partial x}\) \(\dfrac{\partial s}{\partial x}A ^{\top}\)
8. \(\dfrac{\partial (s + t)}{\partial x} =\) \(\dfrac{\partial s}{\partial x} + \dfrac{\partial t}{\partial x}\) \(\dfrac{\partial s}{\partial x} + \dfrac{\partial t}{\partial x}\)
9. \(\dfrac{\partial g(s)}{\partial x} =\) \(\dfrac{\partial g(s)}{\partial s}\dfrac{\partial s}{\partial x}\) \(\dfrac{\partial s}{\partial x}\dfrac{\partial g(s)}{\partial s}\)
10. \(\dfrac{\partial f(g(s))}{\partial x} =\) \(\dfrac{\partial f(g)}{\partial g}\dfrac{\partial g(s)}{\partial s}\dfrac{\partial s}{\partial x}\) \(\dfrac{\partial s}{\partial x}\dfrac{\partial g(s)}{\partial s}\dfrac{\partial f(g)}{\partial g}\)
  • \(a\) 는 \(x\) 에 대한 함수가 아닌 벡터, \(A\) 는 \(x\) 에 대한 함수가 아닌 행렬이다.

  • 증명

    3:

    \(A \in \R ^{n \times m}, x \in \R^{m \times 1}, Ax \in \R ^{n \times 1}\) 에 대하여 행렬곱의 정의에 의하여 다음이 성립한다.

    \[(Ax) _{i1} = \sum_{k}A _{ik}x_k\]
    \[\dfrac{\partial }{\partial x_j} \sum_{k}A _{ik}x_k = A _{ij} \tag*{■}\]

    4:

    \(A \in \R ^{n \times m}, x \in \R^{n \times 1}, x ^{\top} \in \R ^{1 \times n}, x ^{\top}A \in \R ^{1 \times m}\) 에 대하여 행렬곱의 정의에 의하여 다음이 성립한다.

    \[ (x ^{\top}A)_{1i} = \sum_{k}^{}x_kA _{ki} \]
    \[ \dfrac{\partial }{\partial x_j}\sum_{k}^{}x_k A _{ki} = A _{ji} \tag*{■} \]

    6:

    곱의 미분에 의하여 쉽게 증명된다. ■

scalar by vector, vector by scalar✔

scalar by matrix, matrix by scalar✔

Derivatives: Neural Network✔

ReLU 미분

스칼라 \(z\) 에 대한 ReLU 함수 \(\max (0, z) = \begin{cases} z & z > 0\\ 0 & z \leq 0\\ \end{cases}\) 의 미분은 다음과 같다.

\[ \dfrac{\partial }{\partial z}\max (0, z) = \begin{cases} \frac{dz}{dz} = 1 & z > 0\\ 0 & z \leq 0\\ \end{cases} \]

벡터 \(z\) 에 대한 ReLU 함수 \(\max (0, z) = \begin{bmatrix} \max (0, z_1)\\ \max (0, z_2)\\ \vdots\\ \max (0, z_n)\\ \end{bmatrix}\) 의 미분은 다음과 같다.

\[ \dfrac{\partial }{\partial z}\max (0, z) = \begin{bmatrix} \dfrac{\partial }{\partial x_1}\max (0, x_1)\\ \dfrac{\partial }{\partial x_2}\max (0, x_2)\\ \vdots\\ \dfrac{\partial }{\partial x_n}\max (0, x_n)\\ \end{bmatrix} \]
  • 즉, 벡터에 대한 ReLU 함수는 스칼라에 대한 ReLU 함수를 브로드캐스팅하여 정의된다.

  • 증명

    양수인 경우와 양이 아닌 경우에 따라 미분하면 된다. ■

점곱 미분

벡터 \(a, b\) 에 대한 점곱 \(a \cdot b\) 에 대한 미분은 다음과 같다.

\[ \dfrac{\partial }{\partial a}a \cdot b = b ^{\top}, \qquad \dfrac{\partial }{\partial b}a \cdot b = a ^{\top} \]
  • 증명

    점곱 \(a \cdot b\) 은 아다마르 곱의 합 \(\sum_{i}^{n}a_ib_i = \operatorname{sum} (a \odot b)\) 을 뜻한다. \(u = a \odot b, y = \operatorname{sum} (u)\) 로 두면 다음이 성립한다.

    \[ \dfrac{\partial y}{\partial a} = \dfrac{\partial y}{\partial u}\dfrac{\partial u}{\partial a} = \dfrac{\partial }{\partial u}\operatorname{sum} (u) \dfrac{\partial }{\partial a}(a \odot b) = \overrightarrow{1}^{\top}\operatorname{diag} \left (b \right ) = b ^{\top} \tag*{■} \]
  • 위 증명의 결과는 다음과 같이 정직하게 점곱 \(y = a \cdot b = \sum_{i}^{n}a_ib_i\) 을 바로 미분해도 얻을 수 있다.

    \[ \dfrac{\partial y}{\partial a_j} = \dfrac{\partial }{\partial a_j}\sum_{i}^{}a_ib_i = \sum_{i}^{}\dfrac{\partial }{\partial a_j}a_ib_i = \dfrac{\partial }{\partial a_j}a_jb_j = b_j \]
    \[\implies \dfrac{\partial y}{\partial a} = \begin{bmatrix} b_{1}&b_{2}&\dots&b_{n}\\ \end{bmatrix} = b ^{\top} \]

FC-ReLU 미분(fully connected - rectified linear unit activation)

입력벡터 \(x\), 가중치벡터 \(w\), 편향 벡터 \(b\) 에 대한 함수 \(\operatorname{activation}(x) = \max (0, w \cdot x + b)\) 의 미분은 다음과 같다.

\[ \dfrac{\partial \operatorname{activation} }{\partial w} = \begin{cases} \overrightarrow{0}^{\top} & w \cdot x + b \leq 0\\ x ^{\top} & w \cdot x + b > 0\\ \end{cases} \]
\[ \dfrac{\partial \operatorname{activation} }{\partial b} = \begin{cases} 0 & w \cdot x + b \leq 0\\ 1 & w \cdot x + b > 0\\ \end{cases} \]
  • 이 함수는 FC 층과 ReLU 활성화를 뜻한다.

  • 증명

    \(z = w \cdot x + b\) 으로 두면 다음이 성립한다.

    \[ \dfrac{\partial z}{\partial w} = \dfrac{\partial }{\partial w}w \cdot x + \dfrac{\partial }{\partial w}b = x ^{\top} + 0 = x ^{\top} \]
    \[ \dfrac{\partial z}{\partial b} = \dfrac{\partial }{\partial b}w \cdot x + \dfrac{\partial }{\partial b}b = 0 + 1 = 1 \]

    그러면 원하는 함수 \(\operatorname{activation} (z) = \max (0, z)\) 을 \(w\) 에 대하여 미분하면 다음을 얻는다.

    \[ \begin{align}\begin{split} \dfrac{\partial \operatorname{activation} }{\partial w} &= \dfrac{\partial \operatorname{activation} }{\partial z} \dfrac{\partial z}{\partial w} \\ &= \begin{cases} 0 \cdot x ^{\top} = \overrightarrow{0}^{\top} & z \leq 0\\ 1 \cdot x ^{\top} = x ^{\top} & z > 0\\ \end{cases} \\ \end{split}\end{align} \tag*{} \]

    \(b\) 에 대하여 미분하면 다음을 얻는다.

    \[ \dfrac{\partial \operatorname{activation} }{\partial b} = \begin{cases} 0 \cdot \dfrac{\partial z}{\partial b} = 0 & z \leq 0\\ 1 \cdot \dfrac{\partial z}{\partial b} = 1 & z > 0\\ \end{cases} \]

    ■

FC-ReLU-MSE 미분(fully connected - rectified linear unit activation - mean squared error)

입력벡터 \(x_1, x_2, \dots, x_n\) 에 대한 입력행렬 \(X = [x_1, x_2, \dots, x_n]\), 가중치벡터 \(w\), 편향 벡터 \(b\), 레이블 벡터 \(y\) 에 대한 비용함수

\[ \begin{align}\begin{split} c(w, b, X, y) &= \frac{1}{n}\sum_{i=1}^{n}(y_i - \operatorname{activation} (x_i))^{2} \\ &= \frac{1}{n} \sum_{i=1}^{n}(y_i - \max (0, w \cdot x_i + b)) ^{2} \\ \end{split}\end{align} \tag*{} \]

의 가중치 \(w\) 에 대한 미분은 에러항 \(e_i = w \cdot x_i + b - y_i\) 에 대하여 다음과 같다.

\[ \dfrac{\partial c}{\partial w} = \begin{cases} \overrightarrow{0}^{\top} &w \cdot x_i + b \leq 0\\ \displaystyle \frac{2}{n}\sum_{i=1}^{n}e_ix_i ^{\top} &w \cdot x_i + b > 0\\ \end{cases} \]
\[ \dfrac{\partial c}{\partial b}= \begin{cases} 0 & w \cdot x_i + b \leq 0\\ \displaystyle \frac{2}{n} \sum_{i=1}^{n}e_i & w \cdot x_i + b > 0\\ \end{cases} \]
  • 가령 입력벡터가 하나인 경우 기울기는 단순히 \(2e_1x_1 ^{\top}\) 가 된다. 에러가 \(0\) 이면 기울기도 \(0\) 이 되고 손실값이 최소화 되었다고 볼 수 있다. 에러가 양수이면 기울기는 벡터 \(x_1\) 방향을 향하는 벡터가 된다. 에러가 음수이면 \(x_1\) 반대 방향의 벡터가 된다.

    이제 입력벡터가 \(n\)개인 일반적인 경우를 생각하면 기울기 벡터 \(\dfrac{\partial c}{\partial w}\) 란 에러가 발생한 입력벡터 방향의 평균을 향하는 벡터임을 알 수 있다. 이때 가장 큰 에러가 발생한 입력벡터 방향이 많이 반영될 것이다. 이 기울기 벡터 \(\dfrac{\partial c}{\partial w}\) 의 각 성분들이 \(w\) 의 각 성분이 변할 때 손실값이 어떻게 변하는지 알려준다. 가령 \(\left( \dfrac{\partial c}{\partial w} \right)_i = 2\) 라면 \(w_i\) 가 \(1\) 변했을 때 손실값도 \(2\) 변한다. 일반적으로 \(\left( \dfrac{\partial c}{\partial w} \right)_i = a\) 라면 \(w_i\) 가 \(1\) 변했을 때 손실값이 \(a\) 만큼 변한다.

    따라서 손실값을 줄이고 싶다면 학습률을 뜻하는 양의 스칼라 \(\eta\) 에 대하여 다음과 같이 가중치를 업데이트해야 한다.

    \[ w _{t+1} = w_t - \eta \dfrac{\partial c}{\partial w} \]

    편향도 마찬가지로 다음과 같이 업데이트해야 손실값을 줄일 수 있다.

    \[ b _{t+1} = b _{t} - \eta \dfrac{\partial c}{\partial b} \]
  • 실제상황에서는 가중치벡터 \(w\) 와 편향벡터 \(b\) 를 하나로 묶어서 \(\hat{w} = [w ^{\top}, b ] ^{\top}\) 으로 통합하고 입력벡터 \(x\) 를 \(\hat{x} = [x ^{\top}, 1]\) 로 통합하여 한꺼번에 다룬다. 이렇게 하면 FC 연산 \(w \cdot x + b\) 가 \(\hat{w} \cdot \hat{x}\) 가 된다.

  • 증명

    먼저 다음과 같은 함수를 정의하자.

    \[ u(w, b, x) = \max (0, w \cdot x + b) \]
    \[ v(y, u) = y - u \]
    \[ c(v) = \frac{1}{n}\sum_{i=1}^{n}v ^{2} \]

    그러면 다음이 성립한다.

    \[ \dfrac{\partial u}{\partial w} = \begin{cases} \overrightarrow{0}^{\top} & w \cdot x + b \leq 0\\ x^{\top} & w \cdot x + b > 0\\ \end{cases} \]
    \[ \dfrac{\partial v}{\partial w} = \dfrac{\partial }{\partial w}(y - u) = \overrightarrow{0} - \dfrac{\partial u}{\partial w} = \begin{cases} \overrightarrow{0}^{\top} & w \cdot x + b \leq 0\\ -x^{\top} & w \cdot x + b > 0\\ \end{cases} \]

    그러므로 다음이 성립한다.

    \[ \begin{align}\begin{split} \dfrac{\partial c}{\partial w} &= \dfrac{\partial }{\partial w}\frac{1}{n}\sum_{i=1}^{n}v ^{2} = \frac{1}{n} \sum_{i=1}^{n} \dfrac{\partial }{\partial w}v ^{2}\\ &= \frac{1}{n} \sum_{i=1}^{n}\dfrac{\partial v^2}{\partial v}\dfrac{\partial v}{\partial w} = \frac{1}{n}\sum_{i=1}^{n}2v \dfrac{\partial v}{\partial w} \\ &= \frac{1}{n} \sum_{i=1}^{n} \begin{cases} \overrightarrow{0}^{\top} &w \cdot x_i + b \leq 0\\ -2vx_i ^{\top} &w \cdot x_i + b > 0\\ \end{cases} \\ &= \frac{1}{n} \sum_{i=1}^{n} \begin{cases} \overrightarrow{0}^{\top} &w \cdot x_i + b \leq 0\\ -2(y_i - u)x_i ^{\top} &w \cdot x_i + b > 0\\ \end{cases} \\ &= \frac{1}{n} \sum_{i=1}^{n} \begin{cases} \overrightarrow{0}^{\top} &w \cdot x_i + b \leq 0\\ -2(y_i - \max (0, w \cdot x_i + b))x_i ^{\top} &w \cdot x_i + b > 0\\ \end{cases} \\ &= \frac{1}{n} \sum_{i=1}^{n} \begin{cases} \overrightarrow{0}^{\top} &w \cdot x_i + b \leq 0\\ -2(y_i - (w \cdot x_i + b))x_i ^{\top} &w \cdot x_i + b > 0\\ \end{cases} \\ &= \begin{cases} \overrightarrow{0}^{\top} &w \cdot x_i + b \leq 0\\ \displaystyle \frac{2}{n}\sum_{i=1}^{n}(w \cdot x_i + b - y_i)x_i ^{\top} &w \cdot x_i + b > 0\\ \end{cases} \\ \end{split}\end{align} \tag*{} \]

    여기에서 보통 에러항 \(e_i = w \cdot x_i + b - y_i\) 을 정의하여 다음과 같이 결론을 내린다.

    \[ \dfrac{\partial c}{\partial w} = \frac{2}{n}\sum_{i=1}^{n}e_ix_i ^{\top} \]

    ▲

    편향 벡터 \(b\) 에 대한 미분을 구해보자. 먼저 다음이 성립한다.

    \[ \dfrac{\partial u }{\partial b} = \begin{cases} 0 & w \cdot x + b \leq 0\\ 1 & w \cdot x + b > 0\\ \end{cases} \]
    \[ \dfrac{\partial v }{\partial b} = \dfrac{\partial (y - u)}{\partial b} = 0 - \dfrac{\partial u}{\partial b}= \begin{cases} 0 & w \cdot x + b \leq 0\\ -1 & w \cdot x + b > 0\\ \end{cases} \]

    따라서 다음이 성립한다.

    \[ \begin{align}\begin{split} \dfrac{\partial c}{\partial b}&= \frac{1}{n} \sum_{i=1}^{n} 2v\dfrac{\partial v}{\partial b} \\ &= \frac{1}{n}\sum_{i=1}^{n}\begin{cases} 0 & w \cdot x_i + b \leq 0\\ -2v & w \cdot x_i + b > 0\\ \end{cases} \\ &= \begin{cases} 0 & w \cdot x_i + b \leq 0\\ \displaystyle \frac{2}{n} \sum_{i=1}^{n}e_i & w \cdot x_i + b > 0\\ \end{cases} \\ \end{split}\end{align} \tag*{} \]

Automatic Differentiation✔


https://www.math.uwaterloo.ca/~hwolkowi/matrixcookbook.pdf
The Matrix Calculus You Need For Deep Learning
https://en.wikipedia.org/wiki/Matrix_calculus