入力を二倍にすると出力も二倍になるなら、それは強力な何かに気づいている。線形性(linearity)は数学で最も単純な構造的性質の一つであり、物理学からコンピューターグラフィックス、機械学習まで至るところに現れる。
二つのルール
関数 f が線形(linear)であるのは、すべての有効な入力 x、y と任意の実数 c に対して二つのルールを満たすときだ:
ルール 1 — 加法性(additivity)。和に f を適用することは、出力を足すことと同じ:
f(x+y)=f(x)+f(y)(1)
ルール 2 — 斉次性(homogeneity)。入力をスケールすると、出力も同じ倍率でスケールする:
f(cx)=c⋅f(x)(2)
ルール (1) と (2) は通常、一つの条件としてまとめて書く:
f(ax+by)=a⋅f(x)+b⋅f(y)(3)
等式 (3) は f が構造を保持することを言っている — f を適用する前に入力を組み合わせても、後に組み合わせても、結果は同じだ。
例:二乗は線形か?
f(x)=5x とする。両方のルールを確認してみよう:
- 加法性:f(x+y)=5(x+y)=5x+5y=f(x)+f(y) ✓
- 斉次性:f(cx)=5(cx)=c⋅5x=c⋅f(x) ✓
次に g(x)=x2 を試してみよう:
- 加法性:g(x+y)=(x+y)2=x2+2xy+y2 で、これは xy=0 のとき x2+y2=g(x)+g(y) と等しくない。✗
定数を掛けることは線形だが、二乗は線形ではない。
なお、h(x)=3x+2 のような直線の関数はグラフでは線形に見えるが、h(0)=2=0 なのでルール1を満たさない。このような形の関数はアフィン(affine)と呼ばれる。線形ではない。
線形結合
等式 (3) は自然に二つより多い項に拡張できる。オブジェクトの集まり v1,v2,…,vk の線形結合(linear combination)とは、次の形のあらゆる式だ:
c1v1+c2v2+⋯+ckvk
ここで c1,…,ck は係数(coefficient)と呼ばれる実数だ。線形写像は線形結合を正確に保持する:
f(c1v1+⋯+ckvk)=c1f(v1)+⋯+ckf(vk)
つまり、入力を単純なピースに分解し、それぞれに f を適用してから再組み立てできる — これが線形な問題を非線形なものよりずっと解きやすくするトリックだ。
まとめ
- 関数が線形なのは、加法性 (1) と 斉次性 (2) を満たすときだ。
- 合わせると f(ax+by)=a⋅f(x)+b⋅f(y) を意味する — 線形性は構造を保持する。
- 原点を通らない直線は線形ではなくアフィンだ。
- 線形結合はスケールされたオブジェクトの和であり、線形関数は線形結合を保持する。
次のステップ
線形結合は 有限次元ベクトル空間 の構成要素だ。そこではこれらのアイデアが豊かな代数的構造へと組み上げられていく様子を見ることができる。