線形代数における線形変換とは何か?
行列(マトリックス)を扱う線形代数は抽象度が高いうえ、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」の動画でご確認ください。
線形変換の性質
線形性を持つ変換ってどういう意味ですか?
変換\(f\)が線形変換であるためには2つ条件があります。
それは、\(f\)が(1)ベクトルの加法、(2)スカラーの乗算、を満たすことです。
- \(f(v_1+v_2)=f(v_1)+f(v_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}\)です。
となり、\(\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章
(3): Wikipedia, “Linear Map” (7/16/2021アクセス)
(4): Wikipedia, “Affine transformation” (7/17/2021アクセス)
この記事は、変換と行列の関係に注目して「線形変換とアフィン変換」をまとめます。