バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia2-backnumber/
はじめに
正規方程式を導出するまでの説明。
今回は二次形式の微分(勾配)について。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
ロードマップ【再掲】
ロードマップを再掲しておこう。
現在は、二次形式の微分のところになる。
前回は、\(\nabla\)とか意味不明なのが出てきたけど、
今回はそれを使うって感じか。
(意味不明って・・・。)
二次形式の微分(勾配)
二次形式の行列表現で、2変数あると想定すると、
行列Aは2×2の正方行列となる。
二次形式の行列表現ルールとしてはそんな感じだったね。
まずは、二次形式の行列表現から、多項式表現に変換して、
それに対して、\(\nabla\)による勾配関数を導出してみる。
魔境な波動を感じる・・・。
二次形式の行列表現から多項式表現へ
まずは行列表現から多項式表現に変換。
\(
\begin{eqnarray}
f(x_1,x_2)=x^T A x&=&
\begin{bmatrix}
x_1 \\ x_2\\
\end{bmatrix}^T
\begin{bmatrix}
a_1 & a_2 \\
a_2 & a_3
\end{bmatrix}
\begin{bmatrix}
x_1\\x_2
\end{bmatrix}
\\&=&
\begin{bmatrix}
a_1x_1+a_2x_2 \\ a_2x_1+a_3x_2\\
\end{bmatrix}^T
\begin{bmatrix}
x_1\\x_2
\end{bmatrix}\\
&=&a_1x_1^2+a_2x_1x_2+a_2x_1x_2+a_3x_2^2\\
&=&a_1x_1^2+2a_2x_1x_2+a_3x_2^2
\end{eqnarray}
\)
二次形式の勾配
そして、二次形式の勾配は\(\nabla f(x_1,x_2)\)と表現できるので、以下になる。
\(
\begin{eqnarray}
\nabla f(x_1,x_2)&=&
\begin{bmatrix}
\displaystyle\frac{\partial f(x_1,x_2)}{\partial x_1} \\
\displaystyle\frac{\partial f(x_1,x_2)}{\partial x_2}\\
\end{bmatrix}=
\begin{bmatrix}
2a_1x_1+2a_2x_2 \\
2a_2x_1+2a_3x_2 \\
\end{bmatrix}\\&=&
2
\begin{bmatrix}
a_1x_1 + a_2x_2 \\
a_2x_1 + a_3x_2 \\
\end{bmatrix}=
2
\begin{bmatrix}
a_1 & a_2 \\
a_2 & a_3 \\
\end{bmatrix}
\begin{bmatrix}
x_1 \\
x_2 \\
\end{bmatrix}\\&=&
2Ax
\end{eqnarray}
\)
よって、以下になる。
\(
\nabla x^T Ax=2Ax
\)
んー?
ベクトルの中の足し算が、行列に変わる???
ベクトル内の足し算が行列に変形される理由
もう少し丁寧に書くとこんな感じかな。
\(
\begin{eqnarray}
\begin{bmatrix}
a_1x_1 + a_2x_2 \\
a_2x_1 + a_3x_2 \\
\end{bmatrix}&=&
\begin{cases}
a_1x_1+a_2x_2\\
a_2x_1+a_3x_2
\end{cases}\\
\begin{bmatrix}
a_1 & a_2 \\
a_2 & a_3 \\
\end{bmatrix}
\begin{bmatrix}
x_1 \\
x_2 \\
\end{bmatrix}&=&
\begin{cases}
a_1x_1+a_2x_2\\
a_2x_1+a_3x_2
\end{cases}\\
\end{eqnarray}
\)
あ、そっか。
方程式として考えると同じになるのか。
これにより、二次形式の微分(勾配)が簡単に求められることがわかった。
まとめ
まとめだよ。
- ∇を使用して、二次形式の微分(勾配)を求める。
- 二次形式を多項式表現し、偏微分。
- 偏微分した結果を行列形式に戻す。
- 結果としてシンプルな偏導関数が求められる。
バックナンバーはこちら。
コメント