神经元 (Neuron) 的详细讲解
神经元(有时称为“节点”或“单元”)灵感来源于生物神经元,是人工神经网络的基本构建块。它接收输入信号,经过一系列计算,产生输出信号,传递给下一层神经元。
1. 神经元的结构
一个典型的人工神经元包含以下部分:
- 输入(Inputs):来自前一层神经元或输入数据的多个信号值,通常是一个向量
。
- 权重(Weights):每一个输入对应一个权重
,权重决定输入信号的重要程度。
- 偏置(Bias):一个额外的可训练参数
,用来调整输出的激活阈值。
- 线性组合:将所有输入按权重加权求和并加上偏置,计算出一个“加权和”(线性部分)。
- 激活函数(Activation Function):对加权和进行非线性变换,决定神经元的输出。
2. 神经元的数学表达
设输入向量为 ,权重向量为
,偏置为
,则神经元的输出
可以写成:
然后通过激活函数 变换:
是神经元的“净输入”或“加权和”。
是激活函数,比如ReLU、Sigmoid或Tanh。
3. 激活函数的作用
激活函数为神经元引入非线性,使网络可以学习复杂函数关系。如果没有激活函数,整个神经网络就等价于一个线性变换,无法逼近复杂的数据模式。
几种常见激活函数:
- Sigmoid:
输出范围在 (0,1),适合二分类概率输出,但容易梯度消失。
- Tanh:
输出范围在 (-1,1),中心对称,收敛速度有时比Sigmoid快。
- ReLU (Rectified Linear Unit):
简单高效,目前使用最广泛,能够缓解梯度消失问题。
- 还有其他如Leaky ReLU、ELU等变体。
4. 直观理解
- 权重代表输入的重要性,比如某个输入越重要,权重越大。
- 偏置控制神经元激活的灵敏度,相当于调整“阈值”。
- 输入信号经过加权和,再通过激活函数,决定是否“激活”并输出信号。
5. 神经元的学习过程
神经网络通过“训练”调整权重和偏置,使神经元输出更接近真实答案。训练中使用反向传播算法计算损失函数相对于权重和偏置的梯度,再用优化算法(如梯度下降)更新它们。
6. 简单代码示例(Python 伪代码)
def neuron_output(x, w, b):z = sum(w_i * x_i for w_i, x_i in zip(w, x)) + by = relu(z) # 这里用ReLU作为激活函数return ydef relu(z):return max(0, z)
总结
组成部分 | 说明 |
输入 ( | 神经元接收到的输入信息 |
权重 ( | 控制输入重要性的参数 |
偏置 ( | 调整神经元输出的阈值 |
线性变换 | 输入与权重的加权和加上偏置 |
激活函数 ( | 赋予神经元非线性能力 |
输出 ( | 神经元传递给下一层的信号 |