ベクトル内積の計算
2つのベクトル \( \mathbf{w} = [w_1, w_2, ..., w_n] \) と \( \mathbf{x} = [x_1, x_2, ..., x_n] \) の内積は、対応する要素同士の積の合計として定義されます。
$ \mathbf{w} \cdot \mathbf{x} = w_1 x_1 + w_2 x_2 + ... + w_n x_n = \sum_{i=1}^{n} w_i x_i$
与えられたベクトルは \( \mathbf{x} = [2, -1, 3] \) と \( \mathbf{w} = [0.5, 1, -0.2] \) です。
内積を計算します:
$\mathbf{w} \cdot \mathbf{x} = (0.5 \times 2) + (1 \times (-1)) + ((-0.2) \times 3)
= 1 + (-1) + (-0.6)
= 1 - 1 - 0.6
= -0.6$
したがって、ベクトルの内積は -0.6 です。
ニューラルネットワークにおける内積
ニューラルネットワークにおいて、ニューロンの入力に対する重み付き和は、まさにこの内積計算によって求められます。入力ベクトルと重みベクトルの内積にバイアス項を加えたものが、活性化関数への入力となります。
$\text{活性化関数への入力} = (\mathbf{w} \cdot \mathbf{x}) + b = \sum_{i=1}^{n} w_i x_i + b$
ここで \(b\) はバイアス項です。
NumPyによる計算
PythonのライブラリNumPyを使うと、ベクトル演算を簡単に行えます。
import numpy as npx = np.array([2, -1, 3])
w = np.array([0.5, 1, -0.2])# 内積の計算
dot_product = np.dot(w, x)
# または
# dot_product = w @ xprint(f"Vector x: {x}")
print(f"Vector w: {w}")
print(f"Dot product (w . x): {dot_product}")
# 出力:
# Vector x: [2 -1 3]
# Vector w: [0.5 1. -0.2]
# Dot product (w . x): -0.6