変換と行列の関係:線形変換とアフィン変換の関係

線形代数における線形変換とは何か?

行列(マトリックス)を扱う線形代数は抽象度が高いうえ、3次元以上の可視化ができないため、海外の学生も理解に苦労していました。

ワカメさん

この記事は、変換と行列の関係に注目して「線形変換とアフィン変換」をまとめます。

この記事がカバーする内容
  • 線形変換とは何か
  • アフィン変換とは何か
  • 線形変換とアフィン変換はどんな関係か
スポンサーリンク

線形変換と行列の関係

ヒトデちゃん

まず、線形変換とは何でしょう?

線形(線型)変換(Linear transformation)は、線形性を持つ\(f\)がインプットされた値を、別の値にアウトプットすることです。

本質的には、変換\(f\)は、関数(function)、写像(Map)の同義語です。

線形代数においては、入力ベクトルと出力ベクトルの変換を考えます。

\(A\)を\(m\times n\)行列、\(\boldsymbol{x}\)を\(n\)-ベクトルとします。

すると、この行列とベクトルの積は

$$f(\boldsymbol{x})=A\boldsymbol{x}$$

とおけます。 

つまり、行列\(A\)が変換\(f\)の役割を担います。

線形変換は、変換\(f\)が線形性を持つ必要があります。

ワカメさん

「関数」ではなく、「変換(transformation)」を使っている理由は、入力ベクトルが出力ベクトルに”動く”というニュアンスがあるからだそうです。詳しくは「3Blue1Brown」の動画でご確認ください。

出典: 3Blue1Brown, 線形変換と行列 | 線形代数の本質 第3章

線形変換の性質

ヒトデちゃん

線形性を持つ変換ってどういう意味ですか?

変換\(f\)が線形変換であるためには2つ条件があります。

それは、\(f\)が(1)ベクトルの加法、(2)スカラーの乗算、を満たすことです。

  1. \(f(v_1+v_2)=f(v_1)+f(v_2)\)
  2. \(f(\alpha v_1) = \alpha f(v_1)\)

このとき、

$$\begin{eqnarray}
f(\alpha v_1 + \beta v_2) &=& A(\alpha v_1 + \beta v_2)\\
&=& A(\alpha v_1) + A(\beta v_2)\\
&=& \alpha(Av_1) + \beta(Av_2)\\
&=& \alpha f(v_1) + \beta f(v_2)
\end{eqnarray}$$

が成り立ちます。

下図は線形変換の動きを示します。

変換\(f\)によって、ベクトル\(a\)はベクトル\(f(a)\)に変換されます。

ベクトル\(a+b\)も同様に、ベクトル\(f(a+b)\)に変換されます。

また、ベクトル\(f(a+b)\)はベクトル\(f(a)\)とベクトル\(f(b)\)の和であることが分かります。

線形変換は、(1)直線を維持したまま(2)原点を固定した変換です。

ワカメさん

逆に、変換後に直線が非線形になる変換後に原点が動く変換後の直線の間隔が一致しない、とそれは線形変換ではないといえます。

アフィン変換と行列の関係

ヒトデちゃん

では、アフィン変換とはなんでしょか?

アフィン変換(Affine transformation)は、線形変換\(f\)と平行移動\(g\)を合成した変換\(g \circ f\)です。

\(A\)を\(m\times n\)行列、\(\boldsymbol{x}\)、\(\boldsymbol{b}\)をそれぞれ\(n\)-ベクトルとします。

アフィン変換において、行列とベクトルの関係は

$$f(\boldsymbol{x})=A\boldsymbol{x}+\boldsymbol{b}$$

とおけます。

アフィン変換の行列\(\hat{A}\)は、

$$\begin{eqnarray}g \circ f &=& \hat{A}\\
&=&\begin{bmatrix}A & \boldsymbol{b}\\
0 \cdots 0 & 1\end{bmatrix}
\end{eqnarray}$$

となります。

さらに

$$\boldsymbol{\hat{x}}=\begin{bmatrix}\boldsymbol{x}\\1\end{bmatrix}$$

とおき、行列 \(\hat{A}\)を使うことで、アフィン変換は

$$f(\boldsymbol{\hat{x}})=\hat{A}\boldsymbol{\hat{x}}$$

と表せます。

ヒトデちゃん

アフィン変換はどういう時に使うのですか?

アフィン変換は、あらゆるベクトルに対して

  • 平行移動
  • 反転
  • 拡大・縮小
  • 回転
  • 剪断

出典: Wikipedia, “Affine transformation”

を扱います。

反転、拡大・縮小、回転、剪断は、線形変換でも扱えますが、平行移動はアフィン変換なければいけません。

平行移動は原点が移動するため、線形変換の条件を満たさないからです。

ワカメさん

アフィン変換は、身近なところでは、スマホやコンピュータグラフィックスの画像処理に利用されています。

線形変換とアフィン変換の関係

線形変換とアフィン変換の間には、「全ての線形変換はアフィン変換であるが、アフィン変換の一部は線形変換ではない」という関係があります。

つまり、線形変換はアフィン変換の一部です。ベン図で表すとこうなります。

\(f: (x, y) \mapsto (-x+y, x+2y) \)の線形変換を例に考えてみます。

\(\boldsymbol{b}=0\)のとき、アフィン変換は線形変換と同じ\(f(\boldsymbol{x})=A\boldsymbol{x}\)です。

$$\begin{eqnarray} f((x_1, y_1)+(x_2,y_2)) &=& (-(x_1+x_2)+(y_1+y_2), (x_1+x_2)+2(y_1+y_2))\\ &=& (-x_1+y_1, x_1+2y_1)+(-x_2+y_2, x_2+2y_2)\\ &=& f(x_1,y_1)+f(x_2, y_2) \end{eqnarray}$$

となり、\(\boldsymbol{b}=0\)のときの\(f\)は、線形変換だと分かります。

したがって、線形変換は\(\boldsymbol{b}=0\)のときのアフィン変換です。

しかし、\(\boldsymbol{b} \neq 0\)のとき、アフィン変換は\(f(0,0)\neq (0,0)\)です。一方、線形変換は\(f(0,0)= (0,0)\)です。

\(\boldsymbol{b} \neq 0\)のアフィン変換は、変換後に原点を固定できていないため、これは線形変換ではありません。

ワカメさん

線形変換はアフィン変換の一部と分かります。

まとめ

線形変換とアフィン変換
  • 線形代数において、入力ベクトルと出力ベクトルの変換を考える
  • 行列\(A\)が変換\(f\)の役割を担う
  • 線形変換は、(1)直線を維持したまま、(2)原点を固定して変換する変換\(f\)
  • アフィン変換は、線形変換\(f\)と平行移動\(g\)を合成した変換
  • アフィン変換は反転、拡大・縮小、回転、剪断、平行移動にも利用
  • すべての線形変換は\(\boldsymbol{b}=0\)のときのアフィン変換

この記事は以上です。

最後まで読んでいただきありがとうございました。

参考資料

(1): 3Blue1Brown, 線形変換と行列 | 線形代数の本質 第3章

(2):  Boyd, S., & Vandenberghe, L. (2018). Introduction to applied linear algebra: vectors, matrices, and least squares. Cambridge university press.

(3): Wikipedia, “Linear Map” (7/16/2021アクセス)

(4): Wikipedia, “Affine transformation” (7/17/2021アクセス)

スポンサーリンク

この記事が気にいったらシェアしてね!

ABOUT US

ワカメ
海外のデータサイエンスコースに留学する社会人大学院生. 専門: M.Eng. in Mat.Sci. & MSDS. このブログは以下2点を目的に運営しています.
1. 学び・体験の復習機会
2. 海外留学を目指す方の参考情報
*ブログ・SNSは所属組織と無関係の個人発信.