バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia3-backnumber/
はじめに
アフィン変換の続き。
だが、ちょっと余談にそれる。
畳み込みニューラルネットワークとアフィン変換の関係性について。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
余談
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
前回はいきなり余談になって、
ニューロンの数式として見せられたな・・・。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
今回は、このニューロンを複数にした場合だ。
以下の図で表現できる。
尚、入力側の\(x\)の要素数、出力側の\(y\)の要素数は異なっていてOK。
![ニューロン複数、x_1、x_n、y_1、y_m、A](https://www.simulationroom999.com/blog/wp-content/uploads/2023/09/02_ニューロン複数.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
まぁ、これも良く見かけるね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そしてこれを数式で表現する。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
え゛
\(
\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)
\)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
なんかやべぇことになってるが、
まぁ、数式で表現できるってことなのか・・・。
アフィン変換との関係性
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
ここでアフィン変換の同次座標系の式を持ってくる。
\(
\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}
\)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
ん?
次元数は全然違うけど、雰囲気的に似てるな??
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そう。
これが全結合層とアフィン変換の関係性だ。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
つまり、全結合層はアフィン変換をしている??
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
残念ながらそういうわけでは無い。
条件によってはアフィン変換のような座標変換として学習する層があってもおかしくはないが、
機能として別モノと思っておいた方が良いだろう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
結局同じなのか別物なのかがわからん。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
行列による一括変換という意味では同じだな。
それに、全結合層は別名でアフィン層と言ったりする。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
別名があるのか?!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
このアフィン層の由来は恐らくは、アフィン変換の同次座標系との類似から来ていると思われる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
それで、前回と今回で畳み込みニューラルネットワークとの兼ね合いを説明していたのか。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうそう。
あくまで余談であり、知らなくても問題の無い知識ではあるが、せっかくなので説明しておいた。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- ニューロンを複数並べたときの数式を書きだした。
- それとアフィン変換の同次座標系の数式を比較。
- 全結合層は別名でアフィン層。
バックナンバーはこちら。
コメント