Neural Network


神经网络简介

什么是神经网络

神经网络是一种模仿人脑神经系统工作原理的计算模型,由大量的相互连接的节点(神经元)组成。这些节点通过调整连接强度(权重)来学习并执行各种复杂的任务,如图像识别、语音处理、自然语言处理等。神经网络的结构包括输入层、隐藏层和输出层,通过反向传播算法不断优化权重,最终得到一个能够很好完成特定任务的模型。

神经网络的发展历史

神经网络的概念最早可以追溯到20世纪40年代,当时麦卡洛克和皮茨提出了最早的神经网络模型——感知机。此后,神经网络经历了几个重要的发展阶段:

  • 1980年代:反向传播算法的提出,使得多层神经网络的训练成为可能。
  • 1990年代:支持向量机(SVM)的兴起,一度对神经网络构成挑战。
  • 2000年代:GPU的出现,大幅提高了神经网络的训练速度,深度学习开始流行。
  • 近年来:随着计算能力的不断增强和大规模数据的积累,神经网络模型不断发展,广泛应用于各个领域。

神经网络的组成部分

神经网络主要由以下几个部分组成:

  • 输入层:接收输入数据。
  • 隐藏层:进行特征提取和模式识别。
  • 输出层:产生输出结果。
  • 连接权重:连接神经元之间的权重,通过训练不断调整。
  • 激活函数:决定神经元的输出,增加模型的非线性。
  • 损失函数:定义预测值与真实值之间的差距。
  • 优化算法:不断优化网络参数,如梯度下降算法。

神经网络与LLM的关系

LLM的兴起进一步推动了神经网络技术在自然语言处理方面的应用。LLM本质上也是基于神经网络的模型,利用海量文本数据进行预训练,学习到了强大的自然语言理解和生成能力。常用的神经网络架构如Transformer,以及新兴架构如Megatron等,都被用于构建LLM。这些模型在各种下游任务上表现优异,推动了神经网络在实际应用中的广泛应用。

NN分类及应用

神经网络有多种不同的分类方式,主要包括:

按结构分

  • 前馈神经网络:最简单的神经网络结构,信息从输入层向输出层单向传播。
  • 循环神经网络(recurrent neural network, RNN):能够处理序列数据,捕捉数据中的时序信息。
  • 卷积神经网络(convolutional neural network, CNN):特别适用于处理图像数据,通过卷积层和池化层提取图像特征。
  • 递归神经网络:处理树形或图形结构的数据,如自然语言处理中的句法分析。

按学习方式分

  • 监督学习神经网络:需要标记数据进行训练,如图像分类、语音识别等。
  • 无监督学习神经网络:不需要标记数据,如聚类、降维等。
  • 强化学习神经网络:通过与环境交互来学习最佳策略,如机器人控制、游戏AI等。

按应用领域分

  • 图像识别/计算机视觉:如人脸识别、自动驾驶等。
  • 自然语言处理:如机器翻译、情感分析等。
  • 语音识别:如语音助手、语音搜索等。
  • 推荐系统:如电商推荐、视频推荐等。
  • 金融/股票预测:如市场趋势分析、风险管理等。
  • 医疗诊断:如疾病预测、影像识别等。
  • 机器人控制:如运动规划、自主导航等。

前馈神经网络

一、定义

前馈神经网络(Feed-Forward Neural Network,简称FNN)是一种基本且广泛应用的人工神经网络结构。它是最简单的一种神经网络,其各神经元分层排列,每个神经元只与前一层的神经元相连,接收前一层的输出,并输出给下一层,各层间没有反馈。

二、结构

前馈神经网络主要由输入层、隐藏层和输出层组成:

  1. 输入层:从外部接收输入数据,并将其传输给网络的第一层。
  2. 隐藏层:对输入信号进行处理和特征提取,可以有一层或多层。每个隐层由多个神经元(或节点)组成,并且与前一层和后一层的神经元全连接。
  3. 输出层:产生最终的输出结果。输出层的神经元个数取决于问题的类型,例如,对于二分类问题,输出层通常只有一个神经元;对于多分类问题,输出层的神经元个数等于类别的数量。

三、工作原理

  1. 输入数据:首先进入输入层。
  2. 权重和偏置:输入数据通过权重和偏置传递到隐藏层。权重控制信号在神经元之间的传递强度,偏置用于调整输入信号的加权总和。
  3. 隐藏层处理:隐藏层中的节点对输入进行加权求和,并通过激活函数进行非线性转换。
  4. 输出层输出:输出层接收到经过隐藏层处理的信号,并产生最终的输出。

四、激活函数

激活函数在人工神经网络中起着至关重要的作用,它们负责将神经元的输入映射到输出端,并引入非线性因素,使得神经网络能够学习和模拟复杂的函数。常见的激活函数包括:

  1. Sigmoid函数:输出范围在(0,1)之间,适合用于二元分类问题。它连续且可微,但在函数的两端导数接近于0,可能导致梯度消失问题。
  2. Tanh函数:输出范围在(-1,1)之间,具有零中心化特性,可以加速神经网络的训练过程。与Sigmoid函数一样,Tanh函数也是连续且可微的,但在深层网络中也可能遇到梯度消失的问题。
  3. ReLU函数:对于所有正输入值,ReLU函数的输出等于输入值本身,这保持了其线性特性,避免了Sigmoid和Tanh函数在输入值较大或较小时的饱和问题。ReLU函数计算效率高,但在输入为负数时,输出恒为0,可能导致“死神经元”问题。
  4. Leaky ReLU和PReLU:作为ReLU的变体,它们在输入为负数时引入非零斜率,以缓解“神经元死亡”问题。

五、训练过程

前馈神经网络的训练过程通常使用反向传播算法,该算法基于梯度下降法,通过计算损失函数对网络中的参数的导数来更新参数,以使网络的预测结果与实际结果更加接近。反向传播分为两个步骤:

  1. 前向传播:输入数据通过网络的每一层进行计算,得到预测结果。
  2. 反向传播:通过比较预测结果与实际结果之间的差异,计算损失函数。然后,从输出层开始,使用链式法则计算损失函数对每个层中的权重和偏置的导数,并使用梯度下降法来更新每个参数,减小损失函数的值。

六、应用场景

前馈神经网络适用于许多任务,如分类、回归和模式识别等。它还可以与其他模型结合使用,如CNN+Transformer,以进一步提高模型的性能。

综上所述,前馈神经网络是一种基本且强大的人工神经网络结构,通过多层连接的神经元处理输入数据并生成输出。它在许多领域都有广泛的应用,并随着技术的不断发展而不断完善。

RNN

RNN是一种专门用于处理序列数据的神经网络结构,它能够在序列的演进方向上进行递归,并通过所有节点(循环单元)的链式连接来捕捉序列中的时序信息和语义信息。RNN的提出基于记忆模型的想法,期望网络能够记住前面出现的特征,并依据这些特征推断后续的结果。

RNN的核心在于其循环结构,这一结构允许信息在不同时间步之间传递。在每个时间步,RNN接收当前的输入数据(如一个词的嵌入表示)和前一个时间步的隐藏状态,然后生成一个新的隐藏状态。这个新的隐藏状态不仅包含了当前时间步的信息,还融合了之前所有时间步的信息,因此RNN能够捕捉到序列数据中的上下文信息。

RNN的基本结构包括输入层、隐藏层和输出层。其中,隐藏层的状态会随时间步更新,并作为下一时间步的输入之一。这种循环连接使得RNN具有记忆能力,能够捕捉序列中的长距离依赖关系。

RNN的隐藏状态更新公式为:

$$
h_t = \text{tanh}(W_{xh}x_t + W_{hh}h_{t-1} + b_h)
$$

其中,$x_t$是当前时间步的输入,$h_t$是当前时间步的隐藏状态,$h_{t-1}$是前一时间步的隐藏状态,$W_{xh}$和$W_{hh}$是权重矩阵,$b_h$是偏置项,$\text{tanh}$是激活函数。

RNN的权重参数是共享的,即每个时间步都使用相同的权重矩阵。这种权重共享机制可以确保不同时间步的数据都使用相同的模型进行处理,从而保持模型的参数数量相对较小。同时,权重共享也使得RNN能够处理任意长度的序列数据,因为无论序列长度如何变化,模型的结构和参数都保持不变。

RNN的前向传播过程是按照时间步的顺序逐步进行的。在每个时间步,根据当前的输入和前一时间步的隐藏状态计算出新的隐藏状态和输出。

具体过程如下:

输入层接收数据:在每个时间步,RNN的输入层接收当前的输入数据。这个数据可以是序列中的一个元素,如文本中的一个词或时间序列中的一个数据点。
隐藏层计算隐藏状态:隐藏层接收当前的输入数据和前一个时间步的隐藏状态,并通过权重矩阵和激活函数计算出新的隐藏状态。这个新的隐藏状态不仅包含了当前时间步的信息,还融合了之前所有时间步的信息。
输出层生成输出:输出层根据当前的隐藏状态和权重矩阵计算出输出。这个输出可以是序列中的下一个元素、分类结果或其他任务相关的输出。
而反向传播过程则是为了更新模型的权重参数,以最小化损失函数。在反向传播过程中,需要计算损失函数关于每个时间步隐藏状态和权重的梯度,并使用这些梯度来更新权重参数。

一、按输入输出结构分类

1. N vs N - RNN
  • 结构特点:输入和输出序列是等长的。每个时间步的输入都对应一个输出。
  • 工作原理:网络在每个时间步都接收输入并产生输出,同时隐藏状态在时间步之间传递。
  • 应用场景:由于输入输出等长,适用于生成等长度的合辙诗句、文本对文本的对齐等任务。
2. N vs 1 - RNN
  • 结构特点:输入是一个序列,输出是一个单独的值或向量。
  • 工作原理:网络接收序列输入,并在序列处理完毕后输出一个总结性的结果。
  • 应用场景:情感分析(整个句子的情感倾向)、序列分类(如文本分类、语音识别中的词识别)等。
3. 1 vs N - RNN
  • 结构特点:输入不是序列,而是一个单独的值或向量,输出是一个序列。
  • 工作原理:网络根据单个输入生成一个序列输出。
  • 应用场景:图像描述生成(根据图像生成描述性文本)、音乐生成(根据一个主题或风格生成音乐序列)等。
4. N vs M - RNN(seq2seq)
  • 结构特点:输入和输出序列的长度可以不同。通常包括编码器和解码器两部分。
  • 工作原理:编码器将输入序列编码为一个固定长度的向量(也称为上下文向量或隐藏状态),解码器则根据这个向量生成输出序列。
  • 应用场景:机器翻译(将一种语言的句子翻译成另一种语言)、文本摘要(将长文本压缩为短摘要)、问答系统(根据问题生成答案)等。

二、按内部构造分类

1. 传统RNN
  • 结构特点:隐藏层的状态是循环的,能够保存和传递之前时间步的信息。
  • 工作原理:在每个时间步,网络根据当前输入和前一时刻的隐藏状态计算当前隐藏状态,并据此产生输出。
  • 优缺点:能够处理序列数据,但处理长序列时容易遇到梯度消失或梯度爆炸问题。
2. LSTM(长短期记忆网络)
  • 结构特点:引入特殊的记忆单元(LSTM单元),包括遗忘门、输入门、输出门和细胞状态。
  • 工作原理:通过门控机制控制信息的流动和更新,解决梯度消失或梯度爆炸问题。
  • 优点:能够学习到长距离的时序依赖关系。
3. GRU(门控循环单元)
  • 结构特点:LSTM的简化版本,只有两个门:更新门和重置门。
  • 工作原理:通过更新门和重置门控制信息的流动和更新。
  • 优点:在保证性能的同时降低了模型的复杂度和计算成本。
4. Bi-RNN(双向循环神经网络)
  • 结构特点:由两个独立的RNN组成,一个正向处理序列,一个反向处理序列。
  • 工作原理:将两个RNN的输出合并或拼接,以获取序列数据的前后文信息。
  • 优点:能够捕捉到序列数据中的前后文信息,提高模型的性能。

综上所述,RNN可以按照输入输出结构和内部构造进行多种分类。每种类型的RNN都有其独特的特点和工作原理,适用于不同的应用场景和任务需求。在实际应用中,可以根据具体任务的需求选择合适的RNN类型。

CNN

CNN是一种专门用于处理网格数据的神经网络结构,尤其擅长处理图像数据。它通过卷积运算来捕捉图像中的局部特征,并通过池化操作来降低数据的维度和复杂度。CNN的提出基于特征提取的思想,期望网络能够自动学习到图像中的层次化特征表示,从而实现对图像的有效分类、识别和其他相关任务。

CNN的核心在于其卷积层和池化层,这些层允许网络在输入数据上滑动窗口,并应用卷积核来提取特征。卷积层通过卷积运算将输入数据映射到特征空间,生成特征图。这些特征图包含了输入数据的局部特征信息,并且具有平移不变性。池化层则对特征图进行下采样,降低数据的维度和计算量,同时保留重要的特征信息。

CNN的基本结构包括输入层、卷积层、池化层、全连接层和输出层。其中,卷积层和池化层交替出现,用于提取和降维特征;全连接层则用于对提取的特征进行分类或回归;输出层则根据任务需求生成最终的输出。

CNN的卷积运算公式为:

$$
y_{ij} = \sum_{m}\sum_{n} x_{i+m,j+n} \cdot k_{mn} + b
$$

其中,$x$是输入数据,$y$是卷积后的特征图,$k$是卷积核,$b$是偏置项,$i$和$j$表示特征图上的位置,$m$和$n$表示卷积核的大小。

CNN的权重参数是局部连接的,即每个卷积核只与输入数据的一部分区域相连。这种局部连接机制使得CNN能够捕捉到图像中的局部特征,并且具有较少的参数数量。同时,卷积核的权重在输入数据的不同位置上是共享的,这种权重共享机制进一步减少了模型的参数数量,并提高了模型的泛化能力。

CNN的前向传播过程是按照层次结构逐步进行的。在每个卷积层,网络通过卷积运算生成特征图;在每个池化层,网络对特征图进行下采样;在全连接层,网络对提取的特征进行分类或回归;最后,在输出层生成最终的输出。

具体过程如下:

输入层接收数据:CNN的输入层接收图像数据,这些数据可以是原始图像或经过预处理的图像。
卷积层提取特征:卷积层通过卷积运算和激活函数(如ReLU)提取输入数据的局部特征,并生成特征图。这些特征图包含了输入数据的层次化特征表示。
池化层降维:池化层对特征图进行下采样,降低数据的维度和计算量,同时保留重要的特征信息。常见的池化操作包括最大池化和平均池化。
全连接层分类或回归:全连接层接收池化层输出的特征向量,并通过权重矩阵和激活函数进行分类或回归任务。
输出层生成输出:输出层根据全连接层的输出生成最终的输出,如分类结果、回归值或其他任务相关的输出。

一、按网络结构分类

1. LeNet
  • 结构特点:较早的CNN结构,包括卷积层、池化层和全连接层。
  • 工作原理:通过卷积和池化操作提取图像特征,并通过全连接层进行分类。
  • 应用场景:手写数字识别等简单图像分类任务。
2. AlexNet
  • 结构特点:包含多个卷积层和池化层,以及较大的全连接层。
  • 工作原理:通过更深的网络结构提取更复杂的图像特征,提高分类性能。
  • 应用场景:大规模图像分类任务,如ImageNet竞赛。
3. VGG
  • 结构特点:采用较小的卷积核(如3x3)和较深的网络结构(如VGG-16、VGG-19)。
  • 工作原理:通过堆叠多个小卷积核来提取图像特征,并增加网络的深度以提高性能。
  • 应用场景:图像分类、目标检测等任务。
4. ResNet(残差网络)
  • 结构特点:引入残差块,通过跳跃连接解决深层网络的梯度消失问题。
  • 工作原理:残差块允许网络学习恒等映射,从而更容易地训练深层网络。
  • 应用场景:图像分类、目标检测、图像分割等任务。
5. DenseNet(密集连接网络)
  • 结构特点:每一层都接收来自前面所有层的特征图作为输入。
  • 工作原理:通过密集连接实现特征的重用和梯度流动,提高网络的性能。
  • 应用场景:图像分类、目标检测、图像生成等任务。

二、按功能和应用分类

1. 图像分类
  • 结构特点:通常包含多个卷积层、池化层和全连接层。
  • 工作原理:通过卷积和池化操作提取图像特征,并通过全连接层进行分类。
  • 应用场景:如ImageNet竞赛、动物识别、植物识别等。
2. 目标检测
  • 结构特点:在图像分类的基础上增加区域候选网络(RPN)或YOLO等检测头。
  • 工作原理:通过卷积层提取特征,并通过检测头生成目标的位置和类别信息。
  • 应用场景:自动驾驶、人脸识别、安防监控等。
3. 图像分割
  • 结构特点:采用全卷积网络(FCN)或U-Net等结构。
  • 工作原理:通过卷积层提取特征,并通过上采样操作恢复图像的分辨率,实现像素级别的分类。
  • 应用场景:医学影像分析、自动驾驶中的道路识别、遥感图像分析等。
4. 图像生成
  • 结构特点:采用生成对抗网络(GAN)、变分自编码器(VAE)等结构。
  • 工作原理:通过生成器和判别器的对抗训练,生成逼真的图像或视频。
  • 应用场景:图像修复、图像超分辨率、视频生成等。

综上所述,CNN可以按照网络结构和功能应用进行多种分类。每种类型的CNN都有其独特的特点和工作原理,适用于不同的应用场景和任务需求。在实际应用中,可以根据具体任务的需求选择合适的CNN类型。

递归神经网络(Recursive Neural Network, RecNN)

递归神经网络是一种专门用于处理具有层次结构或树形结构数据的神经网络结构。与循环神经网络(RNN)不同,递归神经网络通过递归地应用相同的网络结构来处理不同层次的输入数据,从而能够捕捉数据中的层次信息和结构信息。递归神经网络在自然语言处理、图像解析和其他涉及层次结构数据的任务中表现出色。

递归神经网络的核心在于其递归结构和信息传递机制。这些结构允许网络在输入数据的层次结构上递归地展开,并通过节点间的信息传递来捕捉层次关系。每个节点都代表一个递归神经网络的实例,它接收来自其子节点的信息,并处理这些信息以生成输出,该输出随后被传递给其父节点。这种递归机制使得网络能够处理任意深度的层次结构数据。

递归神经网络的基本结构包括输入层、递归层(或称为隐藏层,但在这里强调其递归性质)和输出层。其中,递归层是核心部分,它负责在层次结构上递归地处理数据。输入层接收层次结构数据的根节点或初始节点作为输入,而输出层则根据任务需求生成最终的输出,如分类结果、解析树或其他相关输出。

递归神经网络的信息传递过程是通过节点间的连接实现的。每个节点都维护一个内部状态,该状态用于存储从子节点接收到的信息以及节点自身的处理结果。当处理一个节点时,网络会将其子节点的输出作为输入,并通过递归层的处理来更新节点的内部状态。然后,该状态被用于生成节点的输出,该输出随后被传递给其父节点。

具体过程如下:

  1. 输入层接收数据:递归神经网络的输入层接收具有层次结构的数据,如解析树、语法树或其他形式的树形结构数据。

  2. 递归层处理数据:在递归层中,网络对每个节点进行递归处理。对于每个节点,网络会将其子节点的输出作为输入,并通过递归神经网络的运算来更新节点的内部状态。这个状态包含了从子节点接收到的信息以及节点自身的处理结果。然后,网络使用该状态来生成节点的输出。

  3. 输出层生成输出:在输出层中,网络根据递归层生成的节点输出来生成最终的输出。这个输出可以是分类结果、解析树的结构或其他与任务相关的输出。

递归神经网络在处理具有层次结构的数据时具有显著的优势。它们能够捕捉数据中的层次关系和结构信息,从而实现对数据的更深入理解。然而,递归神经网络也面临一些挑战,如梯度消失或爆炸问题,这可能导致网络难以训练。为了解决这个问题,研究人员提出了多种改进方法,如使用门控机制、引入注意力机制或采用更复杂的网络结构。

尽管递归神经网络在自然语言处理和其他涉及层次结构数据的任务中取得了显著成果,但它们的应用仍然受到一些限制。例如,对于非常深的层次结构数据,递归神经网络可能会面临计算复杂性和内存消耗的挑战。此外,由于递归神经网络的结构是树形的,它们可能不适用于处理具有循环或网状结构的数据。

综上所述,递归神经网络是一种专门用于处理具有层次结构数据的神经网络结构。它们通过递归地应用相同的网络结构来处理不同层次的输入数据,从而能够捕捉数据中的层次信息和结构信息。尽管面临一些挑战和限制,递归神经网络在自然语言处理和其他相关任务中仍然具有广泛的应用前景。


文章作者: Lavoisier
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Lavoisier !
评论
  目录