MATLAB,Python,Scilab,Julia比較 第3章 その66【アフィン変換⑩】

MATLAB,Python,Scilab,Julia比較 第3章 その66【アフィン変換⑩】 数値計算
MATLAB,Python,Scilab,Julia比較 第3章 その66【アフィン変換⑩】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia3-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

余談

太郎くん
太郎くん

前回はいきなり余談になって、
ニューロンの数式として見せられたな・・・。

フクさん
フクさん

今回は、このニューロンを複数にした場合だ。
以下の図で表現できる。
尚、入力側の\(x\)の要素数、出力側の\(y\)の要素数は異なっていてOK。

ニューロン複数、x_1、x_n、y_1、y_m、A
太郎くん
太郎くん

まぁ、これも良く見かけるね。

フクさん
フクさん

そしてこれを数式で表現する。

太郎くん
太郎くん

え゛

\(
\begin{bmatrix}
y_1 \\
\vdots \\
y_m \\
1
\end{bmatrix}=
A\Bigg(
\begin{bmatrix}
a_{11} & \dots & a_{1n} & b_1 \\
\vdots & \ddots & \vdots & \vdots \\
a_{m1} & \dots & a_{mn} & b_m \\
0 & \dots & 0 & 1
\end{bmatrix}
\begin{bmatrix}
x_1 \\
\vdots \\
x_n \\
1
\end{bmatrix}
\Bigg)
\)

太郎くん
太郎くん

なんかやべぇことになってるが、
まぁ、数式で表現できるってことなのか・・・。

アフィン変換との関係性

フクさん
フクさん

ここでアフィン変換の同次座標系の式を持ってくる。

\(
\begin{bmatrix}
x\prime\\
y\prime\\
1
\end{bmatrix}=
\begin{bmatrix}
a & b & T_x\\
c & d & T_y\\
0 & 0 & 1
\end{bmatrix}
\begin{bmatrix}
x\\
y\\
1
\end{bmatrix}
\)

太郎くん
太郎くん

ん?
次元数は全然違うけど、雰囲気的に似てるな??

フクさん
フクさん

そう。
これが全結合層とアフィン変換の関係性だ。

太郎くん
太郎くん

つまり、全結合層はアフィン変換をしている??

フクさん
フクさん

残念ながらそういうわけでは無い。
条件によってはアフィン変換のような座標変換として学習する層があってもおかしくはないが、
機能として別モノと思っておいた方が良いだろう。

太郎くん
太郎くん

結局同じなのか別物なのかがわからん。

フクさん
フクさん

行列による一括変換という意味では同じだな。
それに、全結合層は別名でアフィン層と言ったりする。

太郎くん
太郎くん

別名があるのか?!

フクさん
フクさん

このアフィン層の由来は恐らくは、アフィン変換の同次座標系との類似から来ていると思われる。

太郎くん
太郎くん

それで、前回と今回で畳み込みニューラルネットワークとの兼ね合いを説明していたのか。

フクさん
フクさん

そうそう。
あくまで余談であり、知らなくても問題の無い知識ではあるが、せっかくなので説明しておいた。

まとめ

フクさん
フクさん

まとめだよ。

  • ニューロンを複数並べたときの数式を書きだした。
  • それとアフィン変換の同次座標系の数式を比較。
  • 全結合層は別名でアフィン層。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました