我们将神经元、权重、偏置和激活函数的原理付诸实践。了解如何计算单个神经元的输出非常重要,因为在前向传播过程中,网络中的每个神经元都会重复这个精确的过程。
神经元计算主要包含两个步骤:
- 线性组合: 计算输入项的加权和并加上偏置。我们通常将这个中间值记作 z。
z=(∑iwixi)+b
其中 wi 是权重,xi 是输入,b 是偏置。
- 激活: 对结果 z 应用非线性激活函数 f,以得到神经元的最终输出,记作 a。
a=f(z)
示例计算
设想一个具有两个输入的单个神经元。我们来定义它的参数和输入值:
- 输入:x=[x1,x2]=[2.0,3.0]
- 权重:w=[w1,w2]=[0.5,−1.0]
- 偏置:b=1.0
步骤 1:计算线性组合 (z)
我们将每个输入乘以其对应的权重,将这些乘积相加,然后加上偏置:
z=(w1×x1)+(w2×x2)+b
z=(0.5×2.0)+(−1.0×3.0)+1.0
z=1.0−3.0+1.0
z=−1.0
因此,线性组合的结果是 z=−1.0。
此图展示了输入、权重和偏置如何输入到线性组合 (z) 的计算中,以及随后的激活 (a)。
步骤 2:应用激活函数 (f)
现在,我们对 z=−1.0 应用激活函数。输出 a 将取决于我们选择的函数。我们来使用讨论过的三种常用函数计算输出:Sigmoid、Tanh 和 ReLU。
-
Sigmoid: Sigmoid 函数将输入压缩到 0 到 1 之间。
a=σ(z)=1+e−z1
a=1+e−(−1.0)1=1+e1.01
使用 e≈2.71828:
a≈1+2.718281=3.718281≈0.2689
因此,如果使用 Sigmoid,神经元的输出大约是 0.2689。
-
Tanh (Hyperbolic Tangent): Tanh 函数将输入压缩到 -1 到 1 之间。
a=tanh(z)=ez+e−zez−e−z
a=e−1.0+e1.0e−1.0−e1.0
使用 e1.0≈2.71828 和 e−1.0≈0.36788:
a≈0.36788+2.718280.36788−2.71828=3.08616−2.3504≈−0.7616
如果使用 Tanh,神经元的输出大约是 −0.7616。
-
ReLU (Rectified Linear Unit): 如果输入为正,ReLU 直接输出输入值,否则输出 0。
a=ReLU(z)=max(0,z)
a=max(0,−1.0)
a=0
如果使用 ReLU,神经元的输出是 0。
结果概述
对于给定的输入 x=[2.0,3.0]、权重 w=[0.5,−1.0] 和偏置 b=1.0,我们首先得出 z=−1.0。最终神经元输出 a 取决于所选的激活函数:
- 使用 Sigmoid:a≈0.2689
- 使用 Tanh:a≈−0.7616
- 使用 ReLU:a=0.0
这个练习说明了每个人工神经元执行的基本计算。在实际网络中,这个神经元的输出 a 可以成为下一层神经元的输入 x。尝试改变输入值、权重或偏置,并使用不同的激活函数重新计算输出,以加深你的理解。这种简单的操作,在多层中重复多次,使得神经网络能够处理信息并学习复杂的规律。