ベクトルの微分

機械学習の各アルゴリズムを理解する上で、線形代数の知識が欠かせない。機械学習のほとんどのアルゴリズムが、入力値と重みの内積を計算し、その内積を何らかの変換を行い、出力値を得ている。そして、ここで得られた出力値を教師ラベルを用いて損失関数を求め、損失関数を最小化するように重みを求める。この過程で損失関数を重みで偏微分したりする。このように、機械学習のアルゴリズムを勉強する上で、内積を求めたり、損失関数を重みで偏微分したりすることが頻繁にみられる。そして、これらの計算は一般的にベクトルで記述される。ベクトルで記述することで、記述が簡潔で見やすいだけでなく、プログラムとして書き下すときも効率よくコーディングできる。

ベクトルの計算

ベクトルは 1 行 n 列の行列、あるいは n 行 1 列の行列としてみることができる。1 行 n 列の行列のように記述するベクトルを、行ベクトル呼ぶ場合があり、一般的に以下のように記述する。

\[ \mathbf{a} = \begin{pmatrix} a_{1} & a_{2} & \cdots & a_{n} \end{pmatrix} \]

また、n 行 1 列の行列のように記述するベクトルを、列ベクトルと呼ぶ場合があり、一般的に次のように記述する。機械学習のアルゴリズムを記述するとき、多くの場合、列ベクトルを使う。

\[ \mathbf{b} = \begin{pmatrix} b_{1} \\ b_{2} \\ \cdots \\b_{n} \end{pmatrix} \]

行ベクトルを列ベクトルに転置することができ、また、その逆もできる。例えば、列ベクトル b を転置すると、次のように行ベクトルになる。

\[ \mathbf{b}^{T} = \begin{pmatrix} b_{1} & b_{2} & \cdots & b_{n} \end{pmatrix} \]

2 つのベクトル bc の足し算は次のように行われる。

\[ \mathbf{b} + \mathbf{c} = \begin{pmatrix} b_{1} + c_{1} \\ b_{2} + c_{2} \\ \cdots \\b_{n} +c_{n} \end{pmatrix} \]

また、2 つのベクトルの内積は次のように計算できる。ただし、bc の両方が列ベクトルの場合は、前者を転置する必要がある。

\[ \mathbf{b} ^{T} \mathbf{c} = b_{1}c_{1} + b_{2}c_{2} + \cdots + b_{n}c_{n} \]

ベクトルの微分

以下に、機械学習アルゴリズムを勉強する上で、よく見かけるベクトルの微分式を示してある。

\[ \frac{\partial}{\partial \mathbf{x}} \mathbf{x} = \mathbf{I} \] \[ \frac{\partial}{\partial \mathbf{x}} \mathbf{a}^{T}\mathbf{x} = \mathbf{a} \] \[ \frac{\partial}{\partial \mathbf{x}} \mathbf{x}^{T}\mathbf{a} = \mathbf{a} \] \[ \frac{\partial}{\partial \mathbf{x}} \mathbf{A}\mathbf{x} = \mathbf{A}^{T} \] \[ \frac{\partial}{\partial \mathbf{x}} \mathbf{x}^{T}\mathbf{A}\mathbf{x} = (\mathbf{A} + \mathbf{A}^{T})\mathbf{x} \] \[ \frac{\partial}{\partial \mathbf{x}} ||\mathbf{x}|| = \frac{\partial}{\partial \mathbf{x}}\mathbf{x}^{T}\mathbf{x} \cdot \frac{\partial}{\partial \mathbf{x}^{T}\mathbf{x}}\sqrt{\mathbf{x}^{T}\mathbf{x}} = 2\mathbf{x}\frac{1}{2\sqrt{\mathbf{x}^{T}\mathbf{x}}} = \frac{\mathbf{x}}{||\mathbf{x}||} \] \[ \frac{\partial}{\partial \mathbf{x}} ||\mathbf{x}||^{2} = \frac{\partial}{\partial \mathbf{x}}\mathbf{x}^{T}\mathbf{x} = 2\mathbf{x} \] \[ \frac{\partial}{\partial \mathbf{x}} ||\mathbf{x} - \mathbf{a}||^{2} = 2(\mathbf{x} - \mathbf{a}) \] \[ \frac{\partial}{\partial \mathbf{x}} ||\mathbf{A}\mathbf{x} - \mathbf{b}||^{2} = 2(\mathbf{A}^{T}\mathbf{A}\mathbf{x} - \mathbf{A}^{T}\mathbf{b}) = 2\mathbf{A}^{T}(\mathbf{A}\mathbf{x} - \mathbf{b}) \] \[ \frac{\partial}{\partial \mathbf{x}} (\mathbf{A}\mathbf{x} + \mathbf{c})(\mathbf{B}\mathbf{x} + \mathbf{d}) = 2\mathbf{A}^{T}\mathbf{B}\mathbf{x} + \mathbf{A}^{T}\mathbf{d} + \mathbf{B}^{T}\mathbf{c} \]