手帳と試行

学んだことをアウトプットしていきます。 日々、ノートあるのみ。

ベクトル・行列の微分計算

機械学習の理論を取り扱うとき、しばしばベクトルや行列を巻き込んだ微分計算に遭遇する。そのようなときに困惑しないよう、考え方を整理しておく。

ベクトルのスカラー微分
y(x)Rn\begin{aligned} \bm y(x) \in \mathbb R^n \end{aligned}

とする。ベクトルのスカラー微分を次のように定義する。

y(x)x:=[yix]iRni.e.y(x)x:=[y1xy2xynx]\begin{aligned} && \frac{\partial \bm y(x)}{\partial x} &:= \left[\begin{darray}{} \dfrac{\partial y_i}{\partial x} \end{darray}\right]_{i} \in \mathbb R^n \\ & \text{i.e.} & \frac{\partial \bm y(x)}{\partial x} &:= \left[\begin{darray}{} \frac{\partial y_1}{\partial x} \\ \frac{\partial y_2}{\partial x} \\ \vdots \\ \frac{\partial y_n}{\partial x} \end{darray}\right] \end{aligned}
スカラーのベクトル微分

続いて、

xRm\begin{aligned} \bm x \in \mathbb R^m \end{aligned}

とする。スカラーのベクトル微分は次のように定義する。

y(x)x:=[yxi]iRmi.e.y(x)x:=[yx1yx2yxm]\begin{aligned} && \frac{\partial y(\bm x)}{\partial \bm x} &:= \left[\begin{darray}{} \dfrac{\partial y}{\partial x_i} \end{darray}\right]_{i} \in \mathbb R^m \\ & \text{i.e.} & \frac{\partial y(\bm x)}{\partial \bm x} &:= \left[\begin{darray}{} \frac{\partial y}{\partial x_1} \\ \frac{\partial y}{\partial x_2} \\ \vdots \\ \frac{\partial y}{\partial x_m} \end{darray}\right] \end{aligned}
ベクトルのベクトル微分
xRmyRn\begin{aligned} \bm x & \in \mathbb R^m \\ \bm y & \in \mathbb R^n \end{aligned}

として、ベクトルのベクトル微分を次式で与える。

y(x)x:=[yjxi]ijRm×ni.e.y(x)x:=[y1x1y2x1ynx1y1x2y2x2ynx2y1xmy2xmynxm]\begin{aligned} && \frac{\partial \bm y(\bm x)}{\partial \bm x} &:= \left[\begin{darray}{} \dfrac{\partial y_j}{\partial x_i} \end{darray}\right]_{ij} \in \mathbb R^{m \times n} \\ & \text{i.e.} & \frac{\partial \bm y(\bm x)}{\partial \bm x} &:= \left[\begin{darray}{} \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 & \vdots \\ \frac{\partial y_1}{\partial x_m} & \frac{\partial y_2}{\partial x_m} & \cdots & \frac{\partial y_n}{\partial x_m} \end{darray}\right] \end{aligned}

文献1.などでは上記の定義を転置したものが採用されているが、本サイトでは上記の定義を採用することにする。

なお、少々強引だが次のように解釈することも可能である。

y(x)x:=[x1x2xm][y1y2yn]\begin{aligned} \frac{\partial \bm y(\bm x)}{\partial \bm x} := \left[\begin{darray}{} \frac{\partial}{\partial x_1} \\ \frac{\partial}{\partial x_2} \\ \vdots \\ \frac{\partial}{\partial x_m} \end{darray}\right] \left[\begin{darray}{} y_1 & y_2 & \cdots & y_n \end{darray}\right] \end{aligned}
行列の微分

行列のスカラー微分、行列のベクトル微分、行列の行列微分なども同様に定義する。

xR,xRm,XRm1×m2,YRn1×n2\begin{aligned} x &\in \mathbb R, \\ \bm x &\in \mathbb R^{m}, \\ \bm X &\in \mathbb R^{m_1 \times m_2}, \\ \bm Y &\in \mathbb R^{n_1 \times n_2} \end{aligned}

とするとき、

Y(x)x:=[yijx]ijRn1×n2Y(x)x:=[yjkxi]ijkRm×n1×n2Y(X)X:=[yklxij]ijklRm1×m2×n1×n2\begin{aligned} \frac{\partial \bm Y(x)}{\partial x} &:= \left[\begin{darray}{} \dfrac{\partial y_{ij}}{\partial x} \end{darray}\right]_{ij} \in \mathbb R^{n_1 \times n_2} \\ \frac{\partial \bm Y(\bm x)}{\partial \bm x} &:= \left[\begin{darray}{} \dfrac{\partial y_{jk}}{\partial x_{i}} \end{darray}\right]_{ijk} \in \mathbb R^{m \times n_1 \times n_2} \\ \frac{\partial \bm Y(\bm X)}{\partial \bm X} &:= \left[\begin{darray}{} \dfrac{\partial y_{kl}}{\partial x_{ij}} \end{darray}\right]_{ijkl} \in \mathbb R^{m_1 \times m_2 \times n_1 \times n_2} \end{aligned}

である。

ここで、Ra×b×c\mathbb R^{a \times b \times c} を「a×b×ca \times b \times c 配列」と呼ぶことにする。また、テンソルの呼び方に倣って

Ra:1階の配列(ベクトル)Ra×b:2階の配列(行列)Ra×b×c:3階の配列Ra×b×c×d:4階の配列\begin{darray}{c} \mathbb R^{a} &:& \text{1階の配列} & \text{(ベクトル)} \\ \mathbb R^{a \times b} &:& \text{2階の配列} & \text{(行列)} \\ \mathbb R^{a \times b \times c} &:& \text{3階の配列} \\ \mathbb R^{a \times b \times c \times d} &:& \text{4階の配列} \\ \vdots && \vdots \end{darray}

と呼ぶことにする。

ごちゃごちゃと書いたが、とにかく「分子を分母の配列の各要素で微分し、それを並べる」と理解しておけばよい。

参考文献
  1. Bishop, Christopher M. 2006. Pattern Recognition and Machine Learning. Springer.