行列の計算とMLPの推論|高校数学の演習を通して理解するニューラルネットワーク #3

f:id:lib-arts:20181228181633p:plain
当連載は、高校数学の演習を通して機械学習アルゴリズムの一つであるニューラルネットワークを理解しようというものです。連載の経緯につきましては#1にまとめましたので下記をご覧ください。

 簡単な6題の例題をもとにニューラルネットワークの仕組みに現れる基礎的な数学についてフォーカスします。
#2では最小値問題と最適化について取り扱いました。

 #3では行列の計算とニューラルネットワークの昔馴染みの基本的な形であるMLP(Multi Layer Perceptron)の推論について取り扱います。
以下、目次になります。

1. 例題⑤ 行列の積
2. 例題⑥ 行列の積とMLPの推論
3. まとめ


1. 例題⑤ 行列の積*1

行列は少しとっつきにくいところもあるのですが、身につけることで数字や数式の処理を一括で行うことができる非常に強力なツールです。行列の加減乗除を考えるに当たっては、加減は通常の計算と同様なため深く考える必要はないのですが、積算と除算に関しては少々異なるので意識しておく必要があります。今回のテーマであるMLPの推論には積算を使用するので、ここでは行列の積算について演習を行います。

ex.05

\left(\begin{array}{rr}2 1\\0 1\\\end{array}\right)\left(\begin{array}{rr}1 2\\3 0\\\end{array}\right) (※)

上記の行列の積を計算せよ。

Answer.

 (※)= \left(\begin{array}{rr}2×1+1×3 2×2+1×0\\0×1+1×3 0×2+1×0\\\end{array}\right) = \left(\begin{array}{rr}5 4\\3 0\\\end{array}\right)

解説.

問題はAnswerのように解くことができます。行列の積算に関してはそのように取り決めをしたと考える方が良いので、これについては覚えるしかないです。今まで触れたことがなかった方は慣れるまで少々時間がかかると思うので、素早く計算できるまで演習を行うと良いかと思います。

ちなみに行列の除算に関してはここでは出てきていないですが、逆行列というものを定義し、通常の除算とはこちらも少々異なります。逆行列を用いることで連立方程式の解がスムーズに解けるなど色々と便利です。

 

2. 例題⑥ 行列の積とMLPの推論

 例題⑤の行列積はニューラルネットワークの推論の計算を理解していく上でベースの表現となります。例題⑥では先ほど例題⑤で演習した行列の積算をベースにニューラルネットワークのベーシックなバージョンであるMLPの推論について考えていきます。

ex.06

f:id:lib-arts:20190313181003p:plain

Answer.

\left(\begin{array}{rr}y_{1}\\y_{2}\\\end{array}\right) = \left(\begin{array}{rr}w11 w21 w31\\w12 w22 w32\\\end{array}\right)\left(\begin{array}{rr}x1\\x2\\x3\\\end{array}\right)

解説.

問題の画像におけるy1とy2の式を行列表記に直すとAnswerのようになります。ここでそれぞれの◯は数字でx1~x3は入力層、y1,y2は出力層を意味しています。またw11~w32は各入力にかかる重みを表しています。

これを見ただけではまだピンとこないかもしれませんが、ここで取り扱っている数式は回帰分析の拡張と捉えることができます。回帰分析の最も単純な例である単回帰問題では、y = ax + bのような数式がベースになっていますが、これの入力も出力も複数にしたバージョンが上の図で表すことができます。この時、行列の演算を用いることで、\boldsymbol{Y} = \boldsymbol{W}\boldsymbol{X} + \boldsymbol{b} のように表記することができます。\boldsymbol{Y}\boldsymbol{X}はそれぞれ行列やベクトルを表します。このことにより、各要素一つ一つの記述をわざわざ行わなくてよくなります。

また、上図の計算を入れ子にすることで多層の計算にすることができます。この際の数式も、\boldsymbol{Y} = \boldsymbol{W'}φ(\boldsymbol{W}\boldsymbol{X} + \boldsymbol{b}) + \boldsymbol{b'}と表すことができます。ここで途中のφは中間層での判断を表しており、これを非線形に設定することで中間層を機能させることができ関数の表現力を上げることができます。ここで設定する非線形関数のことをニューラルネットワークの文脈では活性化関数(activation)と呼んでおり、シグモイド関数がかつては用いられていましたが最近ではReLU系がよく用いられる傾向にあるようです。


3. まとめ

#1~#3までで6題の演習問題について取り扱えたので、#4ではこれらの内容を元に回帰分析の学習からニューラルネットワークの学習まで話をつなげていけたらと思います。

*1:最近では行列が高校範囲から消えたようなのですが、大学教養レベルとすると少々ハードルが上がるのでこの記事では高校の範囲に含めるものとします。