【図解】ベクトル(配列)の畳み込みの意味と例題について



1. ベクトルの畳み込みとは
畳み込みは、二つのベクトルを組み合わせてインデックスの和を一定にして、足し合わせて新しいベクトルを生成する数学的な操作です。主に、信号処理、Z変換や機械学習などで使われます。ベクトル以外にも、確率や関数の畳み込みもありますが、どちらも和を一定にして足し合わせるという考え方は同じです。
2. 離散ベクトルの畳み込み
離散的なベクトル \( \mathbf{a} \) と \( \mathbf{b} \) が与えられたとします。それぞれの要素は次のように表されます。
\[ \mathbf{a} = [a_0, a_1, \dots, a_{N-1}] \] \[ \mathbf{b} = [b_0, b_1, \dots, b_{M-1}] \]
これらの畳み込み \( \mathbf{c} = \mathbf{a} * \mathbf{b} \) は以下の式で計算されます。
添え字の部分に着目すると、 $a_k \cdot b_{n - k}$となっており、$k+n-k=n$となるので、和がnになるように計算しています。
3. 畳み込みの計算方法

ベクトル \(X= [1, 2, 3] \) と \( Y=[2, 0, 4] \) の畳み込み$Z=X*Y$を計算します。動画にすると、次のような流れになります。
畳み込みの計算手順をひとつずつ見ていきましょう。
3.1. 準備
ベクトルYを逆向きにします。
$$(1 \times 2) = 2$$
3.2. インデックスの和が1
$$ (1 \times 0) + (2 \times 2) = 4$$
3.3. インデックスの和が2
$$ (1 \times 4) + (2 \times 0) + (3 \times 2) = 10$$
3.4. インデックスの和が3
$$ (2 \times 4) + (3 \times 0) = 8$$
3.5. インデックスの和が4
$$(3 \times 4) = 12$$
3.6. 畳み込みの計算結果
ベクトル \(X= [1, 2, 3] \) と \( Y=[2, 0, 4] \) の畳み込み$Z=X*Y$の計算をまとめると、
- \((1 \times 2) = 2\)
- \((1 \times 0) + (2 \times 2) = 4\)
- \((1 \times 4) + (2 \times 0) + (3 \times 2) = 10\)
- \((2 \times 4) + (3 \times 0) = 8\)
- \((3 \times 4) = 12\)
結果として、畳み込みの結果$Z$は次のようになります。
\[ Z=[2, 4, 10, 8, 12] \]
4. 例題
4.1. 畳み込みの基礎
以下のようにベクトル \( f \) と \( g \) があるとします。
- \( f = [1, 2, 3] \)
- \( g = [0, 1, 0.5] \)
\( f = [1, 2, 3] \) と \( g = [0, 1, 0.5] \) の畳み込みZを計算しなさい。
- \( Z[0] = 1 \times 0 = 0 \)
- \( Z[1] = (1 \times 1) + (2 \times 0) = 1 \)
- \( Z[2] = (1 \times 0.5) + (2 \times 1) + (3 \times 0) = 0.5 + 2 = 2.5 \)
- \(Z[3] = (2 \times 0.5) + (3 \times 1) = 1 + 3 = 4 \)
- \( Z[4] = 3 \times 0.5 = 1.5 \)\
計算の結果、畳み込み \( Z\) は次のようになります。
\[ Z= [0, 1, 2.5, 4, 1.5] \]