【漫话机器学习系列】180.神经元(Neuron)

517 阅读4分钟

180.jpg

神经元(Neuron)详解

1. 引言

人工神经网络(Artificial Neural Network, ANN)是深度学习的核心组成部分,而神经元(Neuron)是其最基本的单元。神经元的工作方式模拟了人脑中的生物神经元,即接收输入信号、加权处理、求和后添加偏差,最后通过激活函数转换得到输出信号。

本文将详细解析神经元的组成、数学原理以及其在深度学习中的应用,并结合提供的示意图进行说明。


2. 神经元的基本组成

根据示意图,一个人工神经元的结构可以分为以下几个部分:

  1. 输入层(Input) :神经元接收多个输入信号(数据),在神经网络中,这些输入值通常来自前一层的神经元或原始数据特征。

  2. 权重(Weights, w) :每个输入都会有一个对应的权重值,它决定了该输入对最终输出的贡献程度。

  3. 偏差(Bias, b) :一个额外的调整项,使得神经元可以更好地拟合数据,提高模型的灵活性。

  4. 加权求和(Summation, ∑) :对所有输入的加权和进行计算,并加上偏差项,即:

    z=i=1nwixi+bz = \sum_{i=1}^{n} w_i x_i + b

  5. 激活函数(Activation Function, ϕ) :通过激活函数对加权求和值 z 进行非线性变换,以便引入非线性能力,使神经网络可以学习复杂的数据模式。

  6. 输出(Output) :经过激活函数转换后的结果就是神经元的最终输出,它可以用于下一层的计算或作为最终的预测值。


3. 数学原理

假设神经元有 n 个输入,分别记作 x1,x2,...,xnx_1, x_2, ..., x_n,其对应的权重为 w1,w2,...,wnw_1, w_2, ..., w_n,偏差为 b,则神经元的计算过程如下:

3.1 线性计算(加权求和)

z=i=1nwixi+bz = \sum_{i=1}^{n} w_i x_i + b

这一步是一个线性变换,即所有输入与权重的乘积求和后再加上偏差。

3.2 激活函数(非线性变换)

为了引入非线性能力,我们需要对 z 进行非线性变换,即:

a=ϕ(z)a = \phi(z)

其中,ϕ(z)\phi(z) 是激活函数,它决定了神经元的输出如何变化。


4. 常见的激活函数

4.1 Sigmoid(S 形激活函数)

ϕ(z)=11+ez\phi(z) = \frac{1}{1+e^{-z}}

  • 取值范围:(0,1)
  • 适用于二分类问题
  • 缺点:容易饱和,梯度消失

4.2 Tanh(双曲正切激活函数)

ϕ(z)=ezezez+ez\phi(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}

  • 取值范围:(−1,1)
  • 适用于需要均值为 0 的情况
  • 缺点:仍然可能出现梯度消失问题

4.3 ReLU(修正线性单元)

ϕ(z)=max(0,z)\phi(z) = \max(0, z)

  • 取值范围:[0,+∞)
  • 计算简单,适用于深度网络
  • 缺点:可能出现“神经元死亡”问题(当 z 小于 0 时,梯度消失)

4.4 Leaky ReLU(带泄漏的 ReLU)

ϕ(z)=max(0.01z,z)\phi(z) = \max(0.01z, z)

  • 适用于缓解 ReLU 的“神经元死亡”问题

4.5 Softmax(多分类激活函数)

ϕ(zi)=ezijezj\phi(z_i) = \frac{e^{z_i}}{\sum_{j} e^{z_j}}

  • 适用于多分类问题
  • 输出值总和为 1,可以作为概率解释

5. 神经元的作用

神经元的核心作用是特征提取和非线性变换,它可以通过权重学习数据的模式,并通过激活函数引入非线性能力,从而可以拟合复杂的函数关系。

  • 单层感知机(Perceptron)中,每个神经元只进行线性分类。
  • 多层神经网络(MLP)中,多个神经元层叠,可以学习复杂的特征。
  • 卷积神经网络(CNN)中,神经元可以用于提取空间特征。
  • 递归神经网络(RNN)中,神经元可以处理序列数据。

6. 计算示例

假设一个神经元有 3 个输入,其权重和偏差如下:

输入 x权重 w
2.00.5
3.0-1.2
1.50.8

偏差 b=0.3b = 0.3,计算步骤如下:

  1. 加权求和

    z=(2.0×0.5)+(3.0×1.2)+(1.5×0.8)+0.3=1.03.6+1.2+0.3=1.1z = (2.0 \times 0.5) + (3.0 \times -1.2) + (1.5 \times 0.8) + 0.3 = 1.0 - 3.6 + 1.2 + 0.3 = -1.1

  2. 使用 ReLU 作为激活函数

    a=max(0,1.1)=0a = \max(0, -1.1) = 0

最终输出为 0


7. 结论

  • 神经元是神经网络的基本组成单元,它通过加权求和、添加偏差和激活函数变换来处理数据。
  • 激活函数是关键,它决定了神经元的非线性能力,使得神经网络能够学习复杂关系。
  • 不同的激活函数适用于不同任务,如 Sigmoid 适用于二分类,ReLU 适用于深度网络。
  • 神经元通过层叠形成神经网络,可以用于计算机视觉、自然语言处理等任务。