Chainer - 神经网络

神经网络是受人脑结构和功能启发的计算模型。它们由相互连接的节点层(即神经元)组成,每个节点处理输入数据并将结果传递到下一层。网络通过根据其预测的误差调整这些连接的权重来学习执行任务。

这种学习过程通常称为训练,它使神经网络能够识别模式、分类数据并做出预测。它们广泛用于机器学习,用于图像识别、自然语言处理等任务。

神经网络的结构

神经网络是一种模拟人脑神经元工作方式的计算模型。它由称为神经元的节点层组成,这些节点通过边或权重连接。典型的神经网络有一个输入层、一个或多个隐藏层和一个输出层。以下是神经网络的详细结构 −

输入层

输入层是神经网络的第一层,是网络将要处理的数据的入口点。它不执行任何计算,而是将数据直接传递到网络中的下一层。

以下是输入层的主要特征 −

  • 节点/神经元:输入层中的每个节点代表来自输入数据的单个特征。例如,如果我们有一张 28x28 像素的图像,那么输入层将有 784 个节点,即每个像素一个节点。
  • 数据表示:输入数据通常在输入到输入层之前进行规范化或标准化,以确保所有特征具有相同的比例,这有助于提高神经网络的性能。
  • 无激活函数:与隐藏层和输出层不同,输入层不应用激活函数。其主要作用是将原始输入特征分发到后续层进行进一步处理。

隐藏层

隐藏层位于神经网络中的输入层和输出层之间。它们被称为"隐藏",因为它们的输出在输入数据或最终输出预测中不直接可见。

这些层的主要作用是通过使网络能够学习复杂的模式和特征,通过多个阶段处理和转换数据。这种转换是通过加权连接和非线性激活函数实现的,这使得网络能够捕获数据中的复杂关系。

以下是输入层的主要特征 −

  • 节点/神经元:每个隐藏层由多个神经元组成,这些神经元将权重应用于它们接收的输入,并通过激活函数传递结果。神经元和层的数量可能因任务的复杂性而异。
  • 权重和偏差:隐藏层中的每个神经元都有相关的权重和偏差,这些权重和偏差在训练过程中会进行调整。这些参数有助于网络学习数据中的关系和模式。
  • 激活函数:隐藏层通常使用激活函数将非线性引入模型。常见的激活函数如下所述 −
    • ReLU(整流线性单元): ReLU(𝑥)=max(0,𝑥)
    • Sigmoid: 𝜎(𝑥)=1/(1+e-x)
    • Tanh(双曲正切): tanh(x) = (ex - e-x)/(ex + e-x)
    • Leaky ReLU: Leaky ReLU(x) = max(0.01x,x)
  • 学习和特征提取:隐藏层是大部分学习发生的地方。它们将输入数据转换为更适合当前任务的表示形式。每个连续的隐藏层都建立在前几层提取的特征之上,从而使网络能够学习复杂的模式。
  • 深度和复杂性:每层中隐藏层和神经元的数量决定了网络的深度和复杂性。更多的隐藏层和神经元通常允许网络学习更复杂的模式,但也会增加过度拟合的风险并需要更多的计算资源。

输出层

输出层是神经网络中产生网络预测或结果的最后一层。该层根据前面的隐藏层应用的转换直接生成与给定输入数据相对应的输出。

输出层中的神经元数量通常与模型预期预测的类或连续值的数量相匹配。对于分类任务,输出通常会通过激活函数(例如 softmax)来提供可能类别的概率分布。

以下是输出层的主要特征 −

  • 节点/神经元:输出层中的神经元数量与问题中的类别或目标变量数量相对应。例如,如果在二元分类问题中,则在某些设置中会有一个神经元或两个神经元。在具有 10 个类别的多类分类问题中,则会有 10 个神经元。
  • 激活函数:输出层中的这些函数在塑造神经网络的最终输出方面起着至关重要的作用,使它们适合特定类型的预测任务,例如分类、回归等。激活函数的选择直接影响网络预测的解释。常见的激活函数如下所述 −
    • 分类任务:通常使用 softmax 激活函数进行多类分类,将输出转换为类别的概率分布,或使用 sigmoid 进行二元分类。
    • 回归任务:通常使用线性激活函数,因为目标是预测连续值而不是类别。
    • Tanh(双曲正切):tanh(x) = (ex - e-x)/(ex + e-x)
    • Leaky ReLU:Leaky ReLU(x) = max(0.01x,x)
  • 输出:输出层提供网络的最终结果,该结果可能是概率、类别标签或连续值,具体取决于任务的类型。在分类任务中,具有最高输出值的神经元通常表示预测类别。

神经网络的类型

神经网络有各种架构,每种架构都针对特定类型的数据和任务进行量身定制。以下是主要神经网络类型的详细概述 −

前馈神经网络 (FNN)

前馈神经网络 (FNN) 是人工神经网络的基本类别,其特点是信息单向流动。在这些网络中,数据以单一方向传输,即从输入层,通过任何隐藏层,最后到达输出层。这种架构确保节点(神经元)之间的连接中没有循环或环路。

以下是 FNN 的主要特征 −

  • 架构:FNN 由下面提到的三个主要层组成 −
    • 输入层:此层接收初始数据特征。
    • 隐藏层:处理数据并提取相关特征的中间层。这些层中的神经元将激活函数应用于其输入。
    • 输出层:此最后一层产生网络的输出,可以是分类标签、概率或连续值。
  • 前向传播:数据通过网络从输入层移动到输出层。每个神经元处理其输入并将结果传输到下一层。
  • 激活函数:这些函数通过允许网络对更复杂的关系进行建模,将非线性引入网络。典型的激活函数包括 ReLU、sigmoid 和 tanh。
  • 训练:使用反向传播和梯度下降等方法训练 FNN。此过程涉及更新网络的权重,以减少预测结果与实际结果之间的误差。
  • 应用:FNN 可用于图像识别、语音处理和回归分析等各个领域。

卷积神经网络 (CNN)

卷积神经网络 (CNN)是一种专门的神经网络,旨在处理具有网格状拓扑的数据(例如图像)。它们对于涉及空间层次结构和模式的任务(例如图像和视频识别)特别有效。

以下是 CNN 的主要功能 −

  • 架构:CNN 由三个主要层组成,定义如下 −
    • 卷积层:这些层将卷积滤波器应用于输入数据。每个过滤器都会扫描输入以检测特定特征,例如边缘或纹理。卷积操作会生成突出显示这些特征的存在的特征图。
    • 池化层:此层也称为子采样或下采样层。池化层会减少特征图的空间维度,同时保留基本信息。常见的池化操作包括选择最大值的最大池化和计算平均值的平均池化。
    • 全连接层:经过多个卷积层和池化层后,高级特征图被展平为一维向量,并通过全连接层。这些层根据提取的特征执行最终的分类或回归。
  • 前向传播:在 CNN 中,数据通过一系列卷积层、池化层和全连接层在网络中移动。每个卷积层检测特征,而池化层降低维度,全连接层做出最终预测。
  • 激活函数:CNN 使用 ReLU(整流线性单元)等激活函数引入非线性,帮助网络学习复杂模式。根据任务的不同,还可以使用其他激活函数,如 sigmoid 和 tanh。
  • 训练:CNN 使用反向传播和随机梯度下降 (SGD) 等优化算法进行训练。在训练期间,网络会学习卷积滤波器和权重的最佳值,以最大限度地减少预测结果和实际结果之间的误差。
  • 应用:CNN 广泛应用于计算机视觉任务,如图像分类、对象检测和图像分割。它们还应用于医学图像分析和自动驾驶等领域,其中空间模式和层次结构至关重要。

长短期记忆网络 (LSTM)

LSTM 是一种循环神经网络 (RNN),旨在解决从序列数据中学习的特定挑战,特别是长期依赖性和梯度消失问题。它们通过引入专门的组件来增强基本的 RNN 架构,使它们能够在较长时间内保留信息。

以下是 LSTM 的主要功能 −

  • 架构:以下是 LSTM 网络架构的详细信息 −
    • 单元状态:LSTM 包括一个单元状态,该单元状态通过跨不同时间步骤携带信息充当记忆单元。此状态通过网络进行更新和维护,允许网络保留来自先前输入的相关信息。
    • 门: LSTM 使用门来控制信息流入和流出单元状态。这些门包括 −
      • 忘记门:此门确定应丢弃单元状态中的哪些信息。
      • 输入门:这控制向单元状态添加新信息。
      • 输出门:此门调节单元状态的哪一部分应输出并传递到下一个时间步骤。
  • 隐藏状态:除了单元状态之外,LSTM 还维护一个隐藏状态,该状态表示网络在每个时间步骤的输出。隐藏状态根据单元状态进行更新,并影响网络所做的预测。
  • 前向传播:在前向传播过程中,LSTM 通过更新单元状态和隐藏状态逐步处理输入数据。门控调节信息流,确保相关信息得到保留,而无关信息则被过滤掉。每个时间步骤的最终输出都来自隐藏状态,该隐藏状态包含来自单元状态的信息。
  • 激活函数:LSTM 使用 sigmoid 和 tanh 等激活函数来管理门控机制并更新单元和隐藏状态。 sigmoid 函数用于计算门,而 tanh 用于调节单元状态内的值。
  • 训练:LSTM 使用与其他 RNN 类似的时间反向传播 (BPTT) 进行训练。此过程涉及跨时间步骤展开网络,并应用反向传播根据预测输出和实际输出之间的误差更新权重。LSTM 通过有效管理长期依赖关系来缓解梯度消失等问题,使其更适合需要记忆过去输入的任务。
  • 应用:LSTM 对于涉及复杂序列和长期依赖关系的任务特别有用,包​​括:−
    • 自然语言处理 (NLP):对于语言建模、机器翻译和文本生成等任务,理解长序列的上下文至关重要。
    • 时间序列预测:预测具有长期趋势的数据中的未来值,例如股票市场分析或天气预报。
    • 语音识别:通过分析和保留音频序列中的信息,将口语转换为文本。

循环神经网络 (RNN)

循环神经网络 (RNN)专门用于通过隐藏状态使用内部存储器来处理顺序数据。此功能使它们非常适合理解序列或上下文至关重要的任务,例如语言建模和时间序列预测。

以下是 RNN 的主要功能 −

  • 架构:RNN 由两个主要层组成,如下所示 −
    • 循环层:RNN 的特点是其在网络内的循环连接,使其能够通过隐藏状态维护和更新过去输入的记忆。此功能允许网络使用来自先前步骤的信息来影响当前和未来的预测。
    • 隐藏状态:这充当网络的内部记忆,在每个时间步骤中更新。它保留来自早期输入的信息并影响后续输入的处理。
  • 前向传播:RNN 中的数据在网络中按顺序前进。在每个时间步骤,网络处理当前输入,根据先前的输入更新隐藏状态并生成输出。然后使用更新后的隐藏状态来处理下一个输入。
  • 激活函数:为了对复杂模式进行建模并引入非线性,RNN 使用诸如 tanh 或 ReLU 之类的激活函数。高级 RNN 变体(如长短期记忆 (LSTM) 网络和门控循环单元 (GRU))包括其他机制,可以更好地管理长期依赖关系并解决诸如梯度消失等挑战。
  • 训练:RNN 通过一种称为时间反向传播 (BPTT) 的方法进行训练。这涉及跨时间步骤展开网络并应用反向传播来根据预测输出和实际输出之间的差异调整权重。由于梯度消失等问题,训练 RNN 可能很困难,而这些问题通常可以通过使用高级 RNN 架构来缓解。
  • 应用:RNN 对于涉及序列数据(例如 −)的任务特别有效。
    • 自然语言处理 (NLP):文本生成、机器翻译和情感分析等应用。
    • 时间序列预测:预测序列中的未来值,例如股票价格或天气状况。
    • 语音识别:通过分析音频数据序列将口语转换为文本。

生成对抗网络 (GAN)

生成对抗网络 (GAN) 是一类机器学习框架,旨在生成真实的数据样本。GAN 由两个神经网络组成,一个是生成器,另一个是鉴别器,它们在竞争环境中一起训练。这种对抗过程允许 GAN 生成与真实数据非常相似的数据。

以下是 GAN 的主要特征 −

  • 架构:GAN 的架构主要由两个网络组成 −
    • 生成器:生成器的作用是从随机噪声中创建虚假数据样本。它学习将这种噪声映射到与真实数据相似的数据分布。生成器的目标是创建在鉴别器眼中与真实数据无法区分的数据。
    • 鉴别器:鉴别器的作用是区分真实数据(来自实际数据集)和假数据(由生成器生成)。它输出一个概率,表明给定样本是真实的还是假的。鉴别器旨在正确分类真假样本。
  • 对抗过程:同时训练生成器和鉴别器的过程称为对抗过程。让我们看看 GAN 中的重要过程 −
    • 生成器训练:生成器创建一批假数据样本,并将它们发送给鉴别器,试图欺骗它认为它们是真实的。
    • 鉴别器训练:鉴别器从生成器接收真实数据和假数据,并尝试正确识别哪些是假数据和真实数据。
    • 损失函数:生成器的损失取决于它欺骗鉴别器的程度,而鉴别器的损失取决于它区分真实数据和假数据的准确程度。网络交替更新,生成器试图最小化其损失,鉴别器试图最大化其准确性。
  • 收敛:训练过程持续进行,直到生成器生成的数据非常逼真,以至于鉴别器无法再高精度地区分真实样本和假样本。此时,生成器已学会生成与原始数据分布非常相似的输出。
  • 应用:如下所述,GAN 已在多个领域得到广泛应用 −
    • 图像生成:生成逼真的图像,例如生成栩栩如生的人脸或创作原创艺术品。
    • 数据增强:增加机器学习模型训练数据集的多样性,在数据有限的情况下特别有用。
    • 风格转换:将一张图片的风格转换为另一张图片,例如将照片转换为特定绘画的风格。
    • 超分辨率:通过从低分辨率输入生成详细的高分辨率输出来提高图像的分辨率。

自动编码器

自动编码器是一种主要用于无监督学习的人工神经网络。它们旨在学习数据的有效表示,通常用于降维或特征学习。自动编码器由两个主要部分组成,即编码器和解码器。目标是将输入数据编码为低维表示(潜在空间),然后从此压缩表示重建原始输入。

以下是自动编码器的主要功能 −

  • 架构:以下是自动编码器架构中包含的元素 −
    • 编码器:编码器将输入数据压缩为较小的潜在表示。此过程涉及通过一个或多个隐藏层将输入数据映射到低维空间。编码器的层使用激活函数(例如 ReLU 或 sigmoid)将输入转换为紧凑表示,以捕获数据的基本特征。
    • 潜在空间(瓶颈):潜在空间是输入数据的低维压缩表示。它充当瓶颈,迫使网络专注于数据的最重要特征,过滤掉噪音和冗余。潜在空间的大小决定了压缩程度。较小的潜在空间会导致更多的压缩,但可能会丢失一些信息,而较大的潜在空间会保留更多细节。
  • 解码器:解码器从潜在表示重建原始输入数据。它具有镜像编码器的结构,并逐步将压缩数据扩展回其原始大小。解码器的输出层通常采用与输入数据相同的激活函数来产生最终的重构输出。
  • 训练:自动编码器使用反向传播进行训练,目的是最小化原始输入和重构输出之间的差异。使用的损失函数通常是均方误差 (MSE) 或二元交叉熵,具体取决于输入数据的性质。网络在训练过程中调整其权重,以学习一种有效的编码,这种编码既能捕捉输入的最重要特征,又能准确地重建输入。
  • 应用:自动编码器是机器学习中的多功能工具,可应用于各种领域,例如 −
    • 降维:它们有助于通过减少特征数量来压缩数据,同时保留关键信息。
    • 异常检测:自动编码器可以通过识别与正常数据有显著差异的模式(通常通过重建误差)来识别异常。
    • 数据去噪:它们可以有效地去除图像、信号或其他数据类型中的噪声。
    • 生成模型:尤其是使用变分自动编码器 (VAE),自动编码器可以生成与原始数据集非常相似的新数据样本。

图神经网络 (GNN)

图神经网络 (GNN)是一种特殊类型的神经网络,旨在处理以图结构组织的数据。在图中,数据表示为由边(关系)连接的节点(顶点)。

GNN 利用这种基于图的结构来学习和做出预测,这使其特别适用于数据自然形成图的任务。通过有效地捕获节点之间的关系和依赖关系,GNN 在涉及复杂、互连数据的任务中表现出色。

以下是 GNN 的主要功能 −

  • 架构:以下是图神经网络 (GNN) 中包含的组件
    • 节点表示:图中的每个节点都有一个表示其属性的初始特征向量。这些特征向量通过网络层进行更新。
    • 消息传递:GNN 使用消息传递机制,其中每个节点与其相邻节点交换信息。此步骤允许网络聚合来自相邻节点的信息以更新其自身的表示。
    • 聚合函数:聚合函数将从相邻节点收到的消息组合起来。常见的聚合方法包括求和、求平均或应用更复杂的操作。
    • 更新函数:聚合后,使用通常包括神经网络层(例如完全连接层或激活函数)的函数更新节点的特征向量。
    • 读出函数:可以通过读出函数获得图或节点的最终表示,该函数可能将节点特征聚合到全局图表示中或计算最终预测。
  • 训练:GNN 使用下面提到的方法进行训练 −
    • 损失函数:GNN 使用特定于其任务(例如节点分类、图分类或链接预测)的损失函数进行训练。损失函数量化预测输出与实际基本事实之间的差异。
    • 优化:训练过程涉及使用基于梯度的优化算法优化网络的权重。常见方法如随机梯度下降 (SGD) 和 Adam。这些方法通过提高模型在给定任务上的准确性和性能来调整权重以最大限度地减少损失。
  • 应用:以下是使用 GNN 的应用 −
    • 节点分类:根据各个节点的特征和整体图结构为其分配标签或类别。这对于诸如识别网络中实体类型等任务非常有用。
    • 图形分类:将整个图形归类为不同的类别。这可以应用于诸如对化学中的分子进行分类或对不同类型的社交网络进行分类等场景。
    • 链接预测:预测节点之间形成连接或边的可能性。这在推荐系统中很有价值,例如预测用户连接或推荐产品。
    • 图形生成:根据学习到的模式创建新的图形或结构。这在药物发现等领域很有用,因为这些领域基于现有数据提出新的分子结构。
    • 社交网络分析:评估网络内的社交互动以识别有影响力的节点、检测社区或预测社会动态和趋势。