機械学習の理論を取り扱うとき、しばしばベクトルや行列を巻き込んだ微分計算に遭遇する。そのようなときに困惑しないよう、考え方を整理しておく。
ベクトルのスカラー微分
y(x)∈Rn
とする。ベクトルのスカラー微分を次のように定義する。
i.e.∂x∂y(x)∂x∂y(x):=[∂x∂yi]i∈Rn:=∂x∂y1∂x∂y2⋮∂x∂yn
スカラーのベクトル微分
続いて、
x∈Rm
とする。スカラーのベクトル微分は次のように定義する。
i.e.∂x∂y(x)∂x∂y(x):=[∂xi∂y]i∈Rm:=∂x1∂y∂x2∂y⋮∂xm∂y
ベクトルのベクトル微分
xy∈Rm∈Rn
として、ベクトルのベクトル微分を次式で与える。
i.e.∂x∂y(x)∂x∂y(x):=[∂xi∂yj]ij∈Rm×n:=∂x1∂y1∂x2∂y1⋮∂xm∂y1∂x1∂y2∂x2∂y2⋮∂xm∂y2⋯⋯⋱⋯∂x1∂yn∂x2∂yn⋮∂xm∂yn
文献1.などでは上記の定義を転置したものが採用されているが、本サイトでは上記の定義を採用することにする。
なお、少々強引だが次のように解釈することも可能である。
∂x∂y(x):=∂x1∂∂x2∂⋮∂xm∂[y1y2⋯yn]
行列の微分
行列のスカラー微分、行列のベクトル微分、行列の行列微分なども同様に定義する。
xxXY∈R,∈Rm,∈Rm1×m2,∈Rn1×n2
とするとき、
∂x∂Y(x)∂x∂Y(x)∂X∂Y(X):=[∂x∂yij]ij∈Rn1×n2:=[∂xi∂yjk]ijk∈Rm×n1×n2:=[∂xij∂ykl]ijkl∈Rm1×m2×n1×n2
である。
ここで、Ra×b×c を「a×b×c 配列」と呼ぶことにする。また、テンソルの呼び方に倣って
RaRa×bRa×b×cRa×b×c×d⋮::::1階の配列2階の配列3階の配列4階の配列⋮(ベクトル)(行列)
と呼ぶことにする。
ごちゃごちゃと書いたが、とにかく「分子を分母の配列の各要素で微分し、それを並べる」と理解しておけばよい。
参考文献
-
Bishop, Christopher M. 2006. Pattern Recognition and Machine Learning. Springer.