単一ニューロンの出力計算手順
ニューロンの出力は、以下のステップで計算されます。
- 入力と重みの内積を計算する。
- 内積にバイアスを加える(これを \(z\) とする)。
- \(z\) を活性化関数(ここではシグモイド関数)に入力し、最終的な出力を得る。
ステップ1: 内積の計算
$ \mathbf{w} \cdot \mathbf{x} = (0.8 \times 1) + ((-0.2) \times 4)
= 0.8 - 0.8
= 0$
ステップ2: バイアスを加算
$z = (\mathbf{w} \cdot \mathbf{x}) + b
= 0 + 0.1
= 0.1$
ステップ3: 活性化関数の適用
シグモイド関数 \( \sigma(z) = \frac{1}{1 + e^{-z}} \) を使用します。
$\text{出力} = \sigma(0.1) = \frac{1}{1 + e^{-0.1}}$
ここで、\(e^{-0.1} \approx 0.9048\) なので、
$\sigma(0.1) = \frac{1}{1 + 0.9048} = \frac{1}{1.9048} \approx 0.52498...$
したがって、ニューロンの出力は約 0.525 です。
シグモイド関数
シグモイド関数は、任意の入力を0から1の間の値に変換します。これは確率を出力する際などに用いられます。しかし、勾配消失問題を引き起こしやすいため、中間層ではReLUなどがより一般的に使われます。
Pythonによる計算
import numpy as npdef sigmoid(z):
return 1 / (1 + np.exp(-z))x = np.array([1, 4])
w = np.array([0.8, -0.2])
b = 0.1z = np.dot(w, x) + b
output = sigmoid(z)print(f"Input x: {x}")
print(f"Weights w: {w}")
print(f"Bias b: {b}")
print(f"Linear combination z: {z:.4f}")
print(f"Sigmoid output: {output:.4f}")
# 出力:
# Input x: [1 4]
# Weights w: [0.8 -0.2]
# Bias b: 0.1
# Linear combination z: 0.1000
# Sigmoid output: 0.5250