菜单

神经网络架构

相关源文件

目的与范围

本文档解释了神经网络的基本结构和组成,包括感知器、层和网络操作的组织。它为理解神经网络的架构设计以及不同组件的交互方式奠定了基础。有关卷积神经网络等特定神经网络架构的实现,请参阅卷积神经网络,有关训练方法,请参阅训练方法与优化

神经网络基本组件

神经网络架构是指计算元素(神经元)及其连接的组织和排列。在探索更复杂的架构之前,理解这些基本组件至关重要。

神经元:基本构建块

神经网络的基本单元是神经元,其最简单的形式也称为感知器。神经元接收多个输入,对它们应用权重,添加偏置项,然后将结果通过激活函数进行传递。

神经元的输出计算如下:

$$y = f\left(\sum_{i=1}^{n} w_i x_i + b\right)$$

其中

  • $x_i$ 是输入值
  • $w_i$ 是关联的权重
  • $b$ 是偏置项
  • $f$ 是激活函数

来源:English version/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md9-45

激活函数

激活函数在网络中引入了非线性,使其能够学习复杂的模式。常见的激活函数包括:

  • Sigmoid: $f(x) = \frac{1}{1 + e^{-x}}$
  • Tanh: $f(x) = \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$
  • ReLU: $f(x) = \max(0, x)$
  • Leaky ReLU: $f(x) = \begin{cases} x, & \text{if}\ x > 0 \ \alpha x, & \text{if}\ x \leq 0 \end{cases}

有关各种激活函数的详细解释,请参阅激活函数

来源:English version/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md426-470

网络层

神经网络通常组织成层。每一层包含多个神经元,它们处理输入数据并将输出传递给下一层。

层的类型主要有:

  • 输入层:接收要处理的初始数据
  • 隐藏层:输入层和输出层之间的中间层,用于特征提取
  • 输出层:产生最终的网络输出,通常根据任务使用特定的激活函数(例如,分类的 softmax)

来源:English version/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md59-66

神经网络架构类型

单层感知器

神经网络最简单的形式,由一层输出节点组成。输入通过一系列权重直接馈送到输出。它只能学习线性可分模式。

来源:English version/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md11-54

多层感知器 (MLP)

MLP是具有一个或多个隐藏层的前馈网络。层中的每个神经元都连接到相邻层的所有神经元,形成一个全连接架构。

MLP的关键特征

  • 相邻层之间的全连接
  • 隐藏层中的非线性激活函数
  • 能够学习复杂的模式和关系
  • 需要通过反向传播进行训练

来源:English version/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md57-66

常见的网络结构分类

神经网络可以根据其架构特征进行分类。

来源:English version/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md68-72

网络连接模式

神经元在层内和层间连接的方式定义了不同的架构模式。

全连接网络

在全连接网络中,一层中的每个神经元都连接到下一层的所有神经元。这是MLP中最常见的模式。

局部连接网络

这些网络将层之间的连接限制在局部区域,减少了参数数量。卷积神经网络是典型的例子。

跳跃连接或残差连接

这些连接绕过一个或多个层,允许信息从早期层直接流向后期层,这有助于训练期间的梯度流动。

来源:English version/ch04_ClassicNetwork/ChapterIV_ClassicNetwork.md215-221

架构的深度和宽度

神经网络的深度(层数)和宽度(每层神经元数)是关键的架构决策。

深层与浅层网络

深层网络(层数多)可以学习数据的层次化表示,每一层学习越来越抽象的特征。这使它们能够模拟浅层网络无法捕捉的复杂关系。

深度的优势

  1. 指数级表达能力:具有与浅层网络相同数量神经元的深层网络具有更大的容量,能够表示更广泛的函数。
  2. 特征层次结构:更深的网络可以从低级特征中学习渐进地更抽象的表示。
  3. 非线性变换:更多的层意味着更多的非线性变换,增强了网络建模复杂模式的能力。

来源:English version/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md373-376

前向传播与反向传播

神经网络通过两个主要计算阶段运行:

前向传播

在前向传播过程中,输入数据逐层流过网络,每个神经元进行计算:

  1. 输入的加权和
  2. 偏置项的加法
  3. 激活函数的应用
  4. 将输出传递给下一层

此过程一直持续到输出层产生最终结果。

反向传播

反向传播是根据输出误差更新网络权重的过程。

  1. 计算输出层的误差
  2. 计算误差关于权重的梯度
  3. 将误差梯度反向传播通过网络
  4. 更新权重以最小化误差

来源:English version/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md139-157

神经网络架构的演变

神经网络的架构随着时间的推移发生了显著的演变,每一次创新都解决了先前设计的局限性。

来源:English version/ch04_ClassicNetwork/ChapterIV_ClassicNetwork.md3-293

设计考量

设计神经网络架构时,应考虑几个因素:

架构选择因素

因素考量因素
数据特征输入数据的大小、维度和结构
任务复杂度分类、回归、生成等
计算资源可用内存和处理能力
训练时间训练时间限制
模型大小部署环境要求
泛化能力需要在未见过的数据上表现良好

常见的架构挑战

  1. 梯度消失/爆炸:在深层网络中,梯度在反向传播过程中可能变得非常小或非常大,导致训练困难。
  2. 过拟合:复杂的架构可能会记住训练数据而不是学习可泛化的模式。
  3. 训练不稳定性:有些架构比其他架构更难训练,需要仔细的初始化和超参数调整。

这些挑战的解决方案包括:

  • 跳跃连接
  • 批归一化
  • 仔细的权重初始化
  • 正则化技术
  • 学习率调度

来源:English version/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md104-121

实际的神经网络设计流程

来源:English version/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md379-408

结论

神经网络的架构是其性能和能力的关键因素。从简单的感知器到复杂的深度学习模型,神经元、层和连接的排列决定了一个网络可以学习什么以及如何有效地训练它。理解这些架构原则为实施和调整神经网络以解决特定问题提供了基础。

虽然本文档涵盖了神经网络架构的基本方面,但像 CNN 和 RNN 这样的更专业的架构有其独特的结构元素,它们建立在这些基础之上。这些专业架构在其各自的维基页面中有介绍。