记录何凯明在MIT的第一堂课:神经网络发展史

https://www.youtube.com/watch?v=Z5qJ9IxSuKo

目录

表征学习

主要特点:

方法和技术:

LeNet

全连接层​

主要特点:

主要特点:

网络结构:

AlexNet

主要特点:

网络结构:

Sigmoid

ReLU(Rectified Linear Unit)

迁移学习​

VGG Net​

主要特点:

网络结构:

 网络初始化​

梯度消失(Gradient Vanishing)

梯度爆炸(Gradient Exploding)

GoogleNet​

主要特点:

网络结构:

主要特点:

Resnet

主要特点:

网络结构:

​编辑​编辑RNN​

主要特点:

网络结构:

RNN的挑战:

Transformer​

主要特点:

网络结构:

GPT​

VIT​

主要特点:

网络结构:


何凯明,是一位在计算机视觉领域具有极高影响力的科学家。他2007年毕业于清华大学,随后在微软亚洲研究院(MSRA)实习,并于2011年在香港中文大学获得博士学位后正式加入MSRA。目前,何凯明在Facebook AI Research (FAIR)担任研究科学家。

何凯明在计算机视觉领域的研究成果丰硕,曾以第一作者身份两次获得CVPR(国际计算机视觉与模式识别会议)最佳论文奖,分别于2009年和2016年。特别值得一提的是,2016年的获奖工作——深度残差学习(Deep Residual Learning for Image Recognition),在深度学习领域产生了重大影响。该研究提出了一种深度残差网络(ResNet),极大地降低了训练深层神经网络的难度,并显著提升了图像识别的准确率。其中resnet被引用15w+,谷歌学术总引用52w+,这就是含金量。

此外,何凯明的其他重要贡献还包括:

  1. Mask R-CNN:2017年,何凯明及其同事提出了一种用于目标实例分割的框架,该框架概念简单、灵活且通用,能够有效地检测图像中的目标,并为每个实例生成高质量的分割掩码。

  2. Masked Autoencoders (MAE):2021年,何凯明作为一作提出了一种可扩展的计算机视觉自监督学习方法,即掩码自动编码器(MAE)。该方法通过掩码部分输入图像并仅训练编码器来重建这些掩码部分,从而实现高效的自监督学习。

何凯明的研究不仅在学术界产生了深远影响,在工业界也具有很高的应用价值。例如,他的降噪技术和图像识别率问题的研究,为深度学习在工业级别应用提供了重要支持。

总之,何凯明是一位在计算机视觉领域取得卓越成就的科学家,其研究成果为深度学习、图像识别、目标检测与分割等领域的发展做出了巨大贡献。

表征学习

表征学习(Representation Learning)是机器学习领域的一个重要分支,它关注于自动发现数据的最佳表示形式,以便于进一步用于分类、聚类、预测等任务。在表征学习中,我们不直接处理原始数据,而是学习一个中间表示(或称为特征),这个表示能够捕捉数据的本质属性,并使得后续的任务更加容易处理。

主要特点:

  1. 自动特征提取:与传统的手动特征工程相比,表征学习通过算法自动从数据中学习到有用的特征表示。

  2. 层次化结构:表征学习通常采用层次化的结构,例如深度学习中的多层神经网络,每一层都学习到不同抽象层次的特征。

  3. 泛化能力:学习到的特征表示旨在对未见过的新数据具有泛化能力,这对于解决现实世界中的问题至关重要。

  4. 端到端学习:在许多情况下,表征学习可以与任务学习(如分类或回归)结合,形成端到端的学习系统。

方法和技术:

  • 深度学习:深度神经网络是表征学习中最常用的工具,包括卷积神经网络(CNN)用于图像数据,循环神经网络(RNN)用于序列数据等。
  • 无监督学习:无监督表征学习旨在从无标签数据中学习特征,如自编码器和生成对抗网络(GAN)。
  • 有监督学习:有监督表征学习使用带标签的数据来学习特征,以便更好地执行分类或回归任务。
  • 迁移学习:迁移学习利用在大型数据集上学到的特征表示来帮助在小型或特定领域的数据集上学习。
  • 多任务学习:多任务学习同时学习多个任务共享的特征表示,以提高模型在多个任务上的性能。

 

表征学习的会议:ICLR

表征学习通过把原始数据压缩,抽象化,可以解决复杂的问题

如上所示,一个图片的每个像素值是int8[0,255],在计算机上需要256位,3通道,假设size是500*500,所占用的内容空间是超级大的,这很棘手。

表征学习通过神经网络表征把图像压缩,抽象,概括到一个更加底的维度,即特征提取。

通过怎大神经网络的层数,性能提升。

 

如何对图像分类,传统的机器学习不适合,因为可能一点点的阳光颜色变化就会又很大的差别。人工定义表征如图像的边缘轮廓等可以解决一些简单的问题。但对于复杂的问题可能不太够。比如如何表征:whta is human? 如何表征一个难题。deep learning是一种解决方向。

 简单的模块可以等价为一个复杂的函数,来构建多层级的抽象表征,可以通过反向传播学习,减少人工的特征工程,让神经网络自动学习特征。

LeNet

全连接层

全连接层(Fully Connected Layer,简称FC Layer)是神经网络中的一个基本组件,它对输入数据执行矩阵变换,将每个神经元与上一层的所有神经元连接起来。在全连接层中,每个神经元的输出会传递到下一层的所有神经元,这一过程涉及权重和偏置的线性变换以及激活函数的非线性变换。

主要特点:

  1. 线性变换:全连接层首先通过权重矩阵对输入进行线性变换。

  2. 激活函数:然后,通过激活函数引入非线性因素,常用的激活函数包括ReLU、Sigmoid和Tanh等。

  3. 参数数量:全连接层的参数数量较多,包括权重和偏置。权重决定了不同特征的重要性,偏置则负责调整神经元的输出阈值。

  4. 特征组合:全连接层能够组合不同特征,提取更高级别的特征表示。

  5. 灵活性:全连接层可以通过调整层数和每层的神经元数量来适应不同的任务需求。

每一个神经元都会和上一层的所有神经元连接,参数量巨大,不合适。一些优化有dropout,但是依旧很多,所以发明了locally-connected的卷积。

卷积的特性:

  1. 局部性:卷积是一种局部运算,它通过在输入信号上滑动一个小的窗口(或称为“核”或“过滤器”)来执行。这意味着卷积在处理图像时,只关注局部像素区域,而不是整个图像。

  2. 平移不变性:卷积操作具有平移不变性,即卷积结果不依赖于输入信号的位置。这是卷积神经网络在图像识别中非常重要的特性,因为它允许网络识别图像中的对象,无论对象在图像中的位置如何。

  3. 参数共享:在卷积神经网络中,卷积核的权重在整个输入上共享。这意味着无论卷积核在输入上滑动到哪个位置,都使用相同的权重。这大大减少了模型的参数数量,降低了计算复杂度和内存需求。

  4. 组合性:卷积具有组合性,即可以通过组合多个卷积操作来构建更复杂的特征检测器。在卷积神经网络中,通常有多层卷积,每一层都学习不同的特征。

  5. 线性与非线性:基本的卷积操作是线性的,但卷积神经网络通常在卷积层之后使用非线性激活函数(如ReLU),这为模型引入了非线性,增强了其表达能力。

  6. 多通道处理:在处理彩色图像时,卷积可以同时在多个通道(例如红、绿、蓝通道)上操作,这有助于学习颜色相关的特征。

  7. 可分离性:卷积可以分解为两个较简单的操作:逐点卷积(point-wise convolution)和跨通道卷积(depth-wise convolution)。这种分解可以减少参数数量并提高计算效率。

  8. 稀疏性:卷积运算通常具有稀疏性,这意味着卷积核中的大部分权重都是零。这种稀疏性有助于减少计算负担并提高模型的泛化能力。

较少计算量,实现局部不变性,更加抽象的表征

池化层(Pooling Layer)是卷积神经网络(CNN)中的一个重要组成部分,其主要作用是在保持重要特征的同时减少数据的维度,从而减少模型的复杂度和提高计算效率。以下是池化层的主要特性和功能:

  1. 降维:池化层通过对输入特征图进行下采样,减少数据的维度,例如将2x2的区域池化为一个单一的值,从而减少特征图的宽度和高度。

  2. 不变性:池化层可以增强网络对输入数据的平移、旋转和缩放的不变性,使得网络对这些变换更加鲁棒。

  3. 特征选择:通过选择池化操作(如最大池化或平均池化),可以保留输入特征中的主要信息,从而实现特征选择的作用。

  4. 减少过拟合:减少模型参数的数量有助于减少过拟合的风险,提高模型的泛化能力。

  5. 类型:常见的池化操作包括最大池化(Max Pooling)、平均池化(Average Pooling)和自适应池化(Adaptive Pooling)等。

  6. 参数学习:与卷积层不同,池化层不涉及参数学习,它是一种确定性操作。

  7. 位置信息:池化层可能会丢失一些空间信息,因此有时会与卷积层结合使用,以保持足够的特征信息。

  8. 层叠使用:在深度神经网络中,池化层可以层叠使用,逐步减少数据的维度,同时保留重要的特征信息。

LeNet是一种经典的卷积神经网络(CNN),由Yann LeCun等人在1998年提出,主要用于手写数字识别。LeNet的设计简单而有效,对后续的卷积神经网络发展产生了深远的影响。以下是LeNet的主要特点和结构:

主要特点:

  1. 层次化特征提取:LeNet通过多个卷积层和池化层的组合,自动学习从原始图像到越来越抽象的特征表示。

  2. 局部连接:卷积层使用局部连接,只关注图像中的局部区域,有助于减少参数数量并提高模型的泛化能力。

  3. 权重共享:卷积层中的权重在空间上共享,这进一步减少了模型的参数数量。

  4. 下采样:通过池化层进行下采样,减少数据的维度,同时保留重要特征。

  5. 全连接层:在网络的最后几层使用全连接层,实现从特征到类别标签的映射。

网络结构:

典型的LeNet-5包括以下层:

  1. C1层(卷积层1):使用6个5x5的卷积核,得到6个特征图,每个特征图的大小为24x24。

  2. S2层(池化层1):使用2x2的池化核,步长为2,得到6个特征图,每个特征图的大小为12x12。

  3. C3层(卷积层2):使用16个5x5的卷积核,得到16个特征图,每个特征图的大小为8x8。这里,每个卷积核只连接到前一层的一部分特征图。

  4. S4层(池化层2):使用2x2的池化核,步长为2,得到16个特征图,每个特征图的大小为4x4。

  5. C5层(卷积层3):使用120个5x5的卷积核,得到120个特征图,每个特征图的大小为1x1。

  6. F6层(全连接层1):有84个神经元,将C5层的特征图展平后与F6层全连接。

  7. 输出层:有10个神经元,对应10个类别(0-9),使用softmax激活函数。

LeNet-5的设计展示了卷积神经网络的基本原理,并为后续的深度学习研究奠定了基础。尽管现代的卷积神经网络结构更加复杂,但LeNet的基本思想仍然被广泛采用。

AlexNet

AlexNet是一种深度卷积神经网络(CNN),由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton在2012年提出,并在ImageNet大规模视觉识别挑战赛(ILSVRC)中取得了显著的成绩。以下是AlexNet的主要特点和结构:

主要特点:

  1. 深度网络结构:AlexNet包含5个卷积层、3个最大池化层、2个归一化层、2个全连接层和一个最终的1000路softmax输出层。

  2. ReLU激活函数:首次在CNN中使用ReLU(Rectified Linear Unit)激活函数,有效解决了深层网络中的梯度消失问题。

  3. 局部响应归一化:在卷积层后使用局部响应归一化(LRN),有助于提高模型的泛化能力。

  4. 重叠的最大池化:采用步长小于池化核尺寸的重叠池化,减少了过拟合,提高了模型的泛化能力。

  5. 数据增强:通过对训练图像进行随机裁剪、水平翻转等操作,扩大了训练集的规模,提高了模型的鲁棒性。

  6. 丢弃法(Dropout:在全连接层中使用丢弃法,随机丢弃一部分神经元,防止过拟合。

网络结构:

典型的AlexNet结构如下:

  1. 卷积层1:使用96个11x11的卷积核,步长为4,得到96个特征图,每个特征图的大小为55x55。

  2. 局部响应归一化层1:对卷积层1的输出进行局部响应归一化。

  3. 最大池化层1:使用3x3的池化核,步长为2,得到96个特征图,每个特征图的大小为27x27。

  4. 卷积层2:使用256个5x5的卷积核,得到256个特征图,每个特征图的大小为27x27。

  5. 局部响应归一化层2:对卷积层2的输出进行局部响应归一化。

  6. 最大池化层2:使用3x3的池化核,步长为2,得到256个特征图,每个特征图的大小为13x13。

  7. 卷积层3:使用384个3x3的卷积核,得到384个特征图,每个特征图的大小为13x13。

  8. 卷积层4:使用384个3x3的卷积核,得到384个特征图,每个特征图的大小为13x13。

  9. 卷积层5:使用256个3x3的卷积核,得到256个特征图,每个特征图的大小为13x13。

  10. 最大池化层3:使用3x3的池化核,步长为2,得到256个特征图,每个特征图的大小为6x6。

  11. 全连接层1:有4096个神经元,将卷积层5的输出展平后与全连接层1全连接。

  12. 丢弃法层1:在全连接层1后使用丢弃法。

  13. 全连接层2:有4096个神经元,与全连接层1类似。

  14. 丢弃法层2:在全连接层2后使用丢弃法。

  15. 输出层:有1000个神经元,对应1000个类别,使用softmax激活函数。

AlexNet的设计理念和架构对后续的深度学习发展产生了深远的影响,它证明了深度卷积神经网络在图像识别任务中的强大能力。

sigmoid存在梯度消失的现象。 

Sigmoid

其输出值介于0和1之间,这使得Sigmoid函数特别适合于输出层,用于表示概率或者进行二分类任务。Sigmoid函数具有以下特点:

  • 压缩输出:Sigmoid函数将任意实数压缩到(0,1)区间内,非常适合作为神经网络的输出层激活函数。
  • 光滑性:Sigmoid函数是连续的,并且其导数也是连续的,这使得在训练神经网络时,可以使用梯度下降等优化算法来更新权重。
  • 饱和性:当输入值非常大或非常小时,Sigmoid函数的输出会趋近于1或0。此时,Sigmoid函数的导数会趋近于0,这可能导致在训练神经网络时出现梯度消失的问题。

ReLU(Rectified Linear Unit)

ReLU函数将所有的负值都映射到0,而正值保持不变。这种简单而有效的激活函数具有以下优点:

  • 避免梯度消失问题:ReLU可以缓解深层网络中的梯度消失问题,使得网络能够训练得更深。
  • 计算效率高:ReLU的计算非常简单,只需判断输入是否大于0,这使得它在计算上非常高效。
  • 提升训练速度:ReLU可以加速神经网络的训练过程,因为它允许更大的学习速率而不引起梯度消失问题。

然而,ReLU也有其局限性,例如它可能导致神经元“死亡”,即某些神经元在训练过程中永远无法激活(输出为0),从而影响网络的性能。

总的来说,Sigmoid由于其压缩输出和光滑性,在输出层中非常流行。而ReLU由于其简单性和有效性,在隐藏层中非常流行。在实际应用中,可以根据具体任务选择合适的激活函数。

第一层是细节

第二层是轮廓特征

第三层是语义特征

越深层的特征越抽象,是人工很难设计出来的。

迁移学习

 这种深层表征可迁移。

迁移学习是一种机器学习技术,旨在将在一个任务上学到的知识应用于另一个相关任务上。它通过将预训练的模型参数迁移到新任务上,从而加速新任务的训练过程并提高模型的性能。

迁移学习的核心思想是利用已经训练好的模型在新任务上进行初始化,然后根据新任务的需求对模型进行微调。这样,新任务就可以在已有知识的基础上进行学习,从而提高学习效率和性能。

迁移学习的关键步骤包括:

  1. 预训练:在源任务(源域)上训练一个模型,使其能够学习到通用的特征表示。

  2. 特征提取:将预训练模型的参数(如权重)作为特征提取器,用于从新任务(目标域)的数据中提取特征。

  3. 微调:在目标域的数据上对模型进行微调,使其适应新任务的需求。

  4. 评估:评估微调后的模型在新任务上的性能。

迁移学习的主要优点包括:

  • 减少训练数据需求:由于利用了预训练模型的知识,新任务通常只需要较少的训练数据就能达到较好的性能。

  • 提高学习效率:通过迁移已有知识,新任务的训练时间和计算成本可以大大减少。

  • 改善泛化能力:预训练模型通常在大量数据上训练,因此具有较好的泛化能力,这有助于提高新任务的泛化性能。

  • 克服数据不足:在数据稀缺的情况下,迁移学习可以作为一种有效的解决方案。

迁移学习已经在许多领域取得了显著的应用,如计算机视觉、自然语言处理、语音识别等。通过迁移学习,我们可以充分利用已有的知识和资源,加速新任务的学习过程,提高模型的性能和效果。

VGG Net

只3*3 卷积

VGG Net(Visual Geometry Group Network)是由牛津大学的Visual Geometry Group在2014年提出的一种深度卷积神经网络结构。VGG Net在ImageNet大规模视觉识别挑战赛(ILSVRC)中取得了优异的成绩,并因其结构简单、性能良好而广受欢迎。以下是VGG Net的主要特点和结构:

主要特点:

  1. 层次化特征提取:VGG Net通过多个卷积层和池化层的组合,自动学习从原始图像到越来越抽象的特征表示。

  2. 重复使用简单的基础块:VGG Net采用重复使用简单的基础块(如卷积层、ReLU激活函数、池化层)来构建深层网络,这使得网络结构更加清晰和易于理解。

  3. 参数共享:卷积层中的权重在空间上共享,这进一步减少了模型的参数数量。

  4. 下采样:通过池化层进行下采样,减少数据的维度,同时保留重要特征。

  5. 全连接层:在网络的最后几层使用全连接层,实现从特征到类别标签的映射。

网络结构:

典型的VGG Net结构包括以下层:

  1. 卷积层:VGG Net使用了多个卷积层,卷积核的大小包括3x3和1x1。

  2. ReLU激活函数:在卷积层之后使用ReLU激活函数,引入非线性因素。

  3. 池化层:使用2x2的最大池化层进行下采样。

  4. 全连接层:在网络的最后几层使用全连接层,实现从特征到类别标签的映射。

VGG Net的设计理念和架构对后续的深度学习发展产生了深远的影响,它证明了通过重复使用简单的基础块可以构建出强大的深度卷积神经网络。VGG Net的结构简单而有效,被广泛应用于图像识别、目标检测等领域。

 网络初始化

深层的梯度消失和爆炸。

梯度消失(Gradient Vanishing)

梯度消失是指在神经网络中,梯度在反向传播过程中逐渐变小并接近零,导致较深层的网络参数无法得到有效更新。这通常发生在使用较小导数的激活函数(如sigmoid或tanh)的情况下。梯度消失会影响模型的训练效果,使得深层网络难以学习。

梯度爆炸(Gradient Exploding)

梯度爆炸是指梯度在反向传播过程中变得非常大,导致参数更新过大,模型无法稳定训练。梯度爆炸通常出现在网络层数较多、权重初始化不当或学习率设置过高的情况下。为解决这些问题,可以采用以下方法:

  1. 梯度裁剪(Gradient Clipping):限制梯度的大小,防止梯度爆炸。

  2. 使用恰当的激活函数:如ReLU,可以缓解梯度消失问题。

  3. 参数初始化:使用合适的初始化方法,如Xavier或He初始化。

  4. 批归一化(Batch Normalization):通过规范化每层输入,有助于缓解梯度消失和梯度爆炸问题。

  5. 残差连接(Residual Connection):在深层网络中使用残差连接有助于减轻梯度消失问题。

GoogleNet

GoogleNet,也称为Inception V1,是2014年由Christian Szegedy等人提出的一种深度卷积神经网络结构。它在ImageNet大规模视觉识别挑战赛(ILSVRC)中取得了优异的成绩,因其独特的Inception模块而备受关注。以下是GoogleNet的主要特点和结构:

主要特点:

  1. Inception模块:GoogleNet的核心创新在于引入了Inception模块,该模块通过不同尺寸的卷积和池化操作并行处理输入特征,以获得更加丰富的特征表示。

  2. 参数效率:Inception模块通过1x1卷积实现降维,减少了参数数量,提高了计算效率。

  3. 多尺度处理:Inception模块同时处理不同尺度的特征,有助于网络更好地理解图像中的内容。

  4. 深度和宽度:GoogleNet包含22层,但参数数量远少于同时期的其他网络,如VGGNet,这得益于Inception模块的设计。

  5. 辅助分类器:GoogleNet在网络中加入了辅助分类器,这些分类器在中间层提供梯度,有助于加速训练过程。

网络结构:

典型的GoogleNet结构如下:

  1. 输入层:输入图像尺寸为224x224x3。

  2. 卷积层:使用7x7的卷积核,步长为2,得到64个特征图。

  3. 池化层:使用3x3的最大池化,步长为2。

  4. Inception模块:GoogleNet包含多个Inception模块,每个模块内部包含不同尺寸的卷积和池化操作。

  5. 降维层:在Inception模块之间使用1x1卷积进行降维。

  6. 辅助分类器:在网络中添加了两个辅助分类器,分别位于Inception模块之间。

  7. 输出层:最后是一个全连接层,输出1000个类别。

GoogleNet的设计理念对后续的深度学习发展产生了深远的影响,其Inception模块的思想被广泛应用于后续的网络结构中。GoogleNet证明了通过巧妙地设计网络结构,可以在保持性能的同时减少参数数量,从而提高计算效率和泛化能力。

在深度学习中,归一化(Normalization)是一种重要的技术,旨在改善神经网络的训练过程和性能。归一化通过调整数据的数值范围,使得数据具有统一的尺度,从而加速学习过程,减少梯度消失或梯度爆炸的问题,并提高模型的泛化能力。以下是几种常见的归一化方法:

  1. 批量归一化(Batch Normalization)
  • 对每个小批量(batch)的数据进行归一化处理,计算每个特征的均值和方差,然后对数据进行标准化。
  • 批量归一化有助于解决梯度消失或梯度爆炸的问题,减少所谓的“内部协变量偏移”,从而加速训练过程。
  • 批量归一化也可以作为一种正则化方法,减少过拟合的风险。
  1. 层归一化(Layer Normalization)
  • 对单个样本的所有激活进行归一化,而不是对小批量内的数据进行归一化。
  • 层归一化不依赖于小批量大小的选择,因此在训练过程中更加稳定,也适用于在线学习。
  1. 权重归一化(Weight Normalization)
  • 对每个神经元的权重进行归一化处理,使得权重向量的长度为1。
  • 权重归一化有助于稳定训练过程,特别是在使用非常深的网络时。
  1. 实例归一化(Instance Normalization)
  • 对单个样本的所有激活进行归一化,类似于层归一化,但实例归一化保持每个特征通道的独立均值和方差。
  • 实例归一化在风格迁移和生成对抗网络(GAN)中特别有用。
  1. 组归一化(Group Normalization)
  • 将特征通道分成多个组,并在每个组内进行归一化。
  • 组归一化结合了批量归一化和层归一化的优点,适用于各种批量大小,并在训练过程中更加稳定。

归一化技术对于提高神经网络的训练速度和性能至关重要,不同的归一化方法适用于不同的场景和任务。在实际应用中,选择合适的归一化方法可以帮助模型更好地学习和泛化。

批量归一化(Batch Normalization,简称BN)是一种用于深度学习中的技术,旨在加速训练过程并提高模型的泛化能力。批量归一化的核心思想是对每个 mini-batch 的输入数据进行归一化,使得每个特征维度上的数据具有相同的均值和方差。以下是批量归一化的主要特点和实现步骤:

主要特点:

  1. 加速训练:通过对特征维度上的数据进行归一化,可以减少特征之间的相关性,从而加速模型的收敛速度。

  2. 提高泛化能力:批量归一化可以减少特征之间的相关性,提高模型的泛化能力。

  3. 防止梯度消失/爆炸:在深度神经网络中,由于层数较深,梯度可能出现消失或爆炸的情况。通过对特征维度上的数据进行归一化,可以使梯度更加稳定,防止梯度消失或爆炸。

  4. 增强模型鲁棒性:批量归一化可以使模型对输入数据中的小扰动更加鲁棒,从而提高模型的鲁棒性。

Resnet

ResNet(残差网络,Residual Network)是由微软研究院的Kaiming He等人在2015年提出的一种深度卷积神经网络结构。ResNet在ImageNet大规模视觉识别挑战赛(ILSVRC)中取得了优异的成绩,并因其引入了残差学习的概念而备受关注。以下是ResNet的主要特点和结构:

主要特点:

  1. 残差学习:ResNet通过引入残差模块(Residual Block)来解决深层网络训练过程中的梯度消失或梯度爆炸问题。残差模块允许梯度直接流向网络的更深层,从而加速训练过程。

  2. 跳跃连接(Skip Connection):残差模块中包含跳跃连接,允许梯度直接从输入跳过某些层流向输出,从而缓解梯度消失问题。

  3. 深度:ResNet通过堆叠多个残差模块,构建了非常深的网络结构。例如,ResNet-50包含50层,ResNet-101包含101层,ResNet-152包含152层。

  4. 参数效率:ResNet通过使用1x1卷积进行降维,减少了参数数量,提高了计算效率。

网络结构:

典型的ResNet结构如下:

  1. 卷积层:ResNet的起始部分通常包含一个或多个卷积层,用于提取低级特征。

  2. 残差模块:ResNet的主体部分由多个残差模块组成,每个模块包含多个卷积层,以及一个跳跃连接。

  3. 跳跃连接:跳跃连接将输入直接加到残差模块的输出上,允许梯度直接流向更深层。

  4. 降维:在残差模块中,使用1x1卷积进行降维,以减少参数数量。

  5. 输出层:在网络的最后几层使用全连接层,实现从特征到类别标签的映射。

ResNet的设计理念和架构对后续的深度学习发展产生了深远的影响,它证明了通过残差学习和跳跃连接,可以有效地训练非常深的神经网络。ResNet的结构简单而有效,被广泛应用于图像识别、目标检测等领域。

神经网络深层退化问题。

RNN

RNN(Recurrent Neural Network,循环神经网络)是一种用于处理序列数据的神经网络。与传统的全连接神经网络不同,RNN具有循环结构,能够在处理序列数据时保持信息的状态。以下是RNN的主要特点和结构:

主要特点:

  1. 循环结构:RNN具有循环结构,允许信息在时间步之间传递。这使得RNN能够捕捉序列数据中的时间依赖关系。

  2. 时间序列建模:RNN适用于处理任意长度的序列数据,如时间序列分析、自然语言处理等。

  3. 参数共享:RNN中的权重在时间步之间共享,这有助于减少模型的参数数量,提高计算效率。

  4. 梯度消失/爆炸问题:在训练深层RNN时,可能会出现梯度消失或梯度爆炸的问题,这会影响网络的训练效果。

网络结构:

典型的RNN结构包括:

  1. 输入层:接收序列数据中的当前时间步的输入。

  2. 隐藏层:包含循环结构,用于存储和传递信息。隐藏层的输出同时作为下一个时间步的输入。

  3. 输出层:根据隐藏层的输出生成最终的输出,如类别标签或预测值。

RNN的挑战:

  1. 梯度消失/爆炸:在训练深层RNN时,梯度消失或爆炸问题可能导致网络难以训练。

  2. 长期依赖:RNN难以捕捉长距离的时间依赖关系,这被称为“长期依赖”问题。

为了解决这些问题,研究者们提出了多种改进的RNN结构,如长短期记忆网络(LSTM)和门控循环单元(GRU)。这些结构通过引入门控机制和记忆单元,有效地解决了梯度消失/爆炸问题和长期依赖问题。

总之,RNN是一种强大的序列建模工具,广泛应用于自然语言处理、语音识别、时间序列预测等领域。随着技术的不断进步,RNN及其变体在人工智能和机器学习领域发挥着越来越重要的作用。

LSTM and 残差

Transformer

Transformer是由Google在2017年提出的一种基于自注意力机制的深度神经网络模型,主要用于处理序列数据。与传统的循环神经网络(RNN)和长短期记忆网络(LSTM)不同,Transformer完全依赖于自注意力机制来捕捉序列中的长距离依赖关系。以下是Transformer的主要特点和结构:

主要特点:

  1. 自注意力机制(Self-Attention):Transformer通过自注意力机制在序列中的所有元素之间计算注意力权重,从而捕捉全局依赖关系。

  2. 多头注意力(Multi-Head Attention):为了提高模型的表达能力,Transformer将输入分割成多个“头”,每个头分别进行自注意力计算,然后将结果拼接起来。

  3. 位置编码(Positional Encoding):由于Transformer不包含循环结构,因此需要通过位置编码来表示序列中元素的位置信息。

  4. 编码器-解码器结构:Transformer由编码器和解码器组成,编码器用于处理输入序列,解码器用于生成输出序列。

  5. 前馈网络(Feed Forward Networks):在编码器和解码器中,除了自注意力层外,还包含前馈网络,用于进一步处理注意力层的输出。

网络结构:

典型的Transformer结构如下:

  1. 编码器(Encoder)
  • 输入嵌入(Input Embedding):将输入序列映射到嵌入空间。
  • 位置编码(Positional Encoding):将位置信息编码到嵌入表示中。
  • 多头注意力(Multi-Head Attention):通过多头注意力机制捕捉序列中的依赖关系。
  • 前馈网络(Feed Forward Networks):对注意力层的输出进行进一步处理。
  • 层归一化(Layer Normalization)和残差连接(Residual Connection):用于加速训练过程和稳定梯度传播。
  1. 解码器(Decoder)
  • 输出嵌入(Output Embedding):将输出序列映射到嵌入空间。
  • 位置编码(Positional Encoding):将位置信息编码到嵌入表示中。
  • 多头注意力(Multi-Head Attention):用于捕捉输出序列中的依赖关系。
  • 编码器-解码器注意力(Encoder-Decoder Attention):将编码器的输出作为注意力机制的查询,以捕捉输入和输出序列之间的关系。
  • 前馈网络(Feed Forward Networks):对注意力层的输出进行进一步处理。
  • 层归一化(Layer Normalization)和残差连接(Residual Connection)。

Transformer在自然语言处理领域取得了显著的成果,特别是在机器翻译任务中。由于其强大的表达能力和并行计算能力,Transformer被广泛应用于文本生成、文本分类、语音识别等任务。

GPT

GPT(Generative Pre-trained Transformer)是由OpenAI开发的一种基于Transformer架构的自然语言处理模型。GPT模型通过在大规模文本数据上进行预训练,学习到了丰富的语言表示和知识,可以用于各种下游NLP任务,如文本生成、文本分类、对话系统等。

GPT模型的特点包括:

  1. 预训练:GPT模型在大规模文本数据上进行预训练,学习语言的基本规则和模式。这种预训练可以捕捉到语言的深层特征,为下游任务提供强大的基础。

  2. 自回归语言模型:GPT是一种自回归语言模型,它通过预测下一个词的概率来生成文本。这种模型在生成文本时具有很高的连贯性和流畅性。

  3. Transformer架构:GPT模型基于Transformer架构,利用自注意力机制(Self-Attention Mechanism)来捕捉序列中的长距离依赖关系。这使得GPT在处理长文本和复杂语境时表现出色。

  4. 多任务适应性:GPT模型可以用于各种NLP任务,如文本生成、文本分类、对话系统等。通过对模型进行微调,可以使其适应不同的下游任务。

GPT模型的成功应用对自然语言处理领域产生了深远的影响,它证明了通过大规模预训练和微调,可以构建出强大的通用语言模型,为各种NLP应用提供强大的支持。随着技术的不断进步,GPT模型及其变体在人工智能和机器学习领域发挥着越来越重要的作用。

VIT

VIT(Vision Transformer)是一种基于Transformer架构的视觉识别模型,由Google在2020年提出。VIT将Transformer的自注意力机制应用于图像识别任务,并在多个视觉基准测试中取得了优异的性能。以下是VIT的主要特点和结构:

主要特点:

  1. 自注意力机制:VIT利用Transformer的自注意力机制来捕捉图像中的长距离依赖关系,这是传统的卷积神经网络(CNN)难以实现的。

  2. 图像分块:为了适应Transformer的序列处理方式,VIT将图像分割成固定大小的图像块(patches),并将这些图像块视为序列数据。

  3. 位置编码:由于Transformer本身不具有处理空间位置信息的能力,VIT通过位置编码(Positional Encoding)来表示图像块的位置信息。

  4. 层次化特征提取:VIT通过多个Transformer编码器层进行层次化特征提取,从而获得图像的高级语义表示。

  5. 优异的性能:VIT在多个视觉基准测试中取得了与当时最先进的CNN模型相媲美甚至更好的性能。

网络结构:

典型的VIT结构如下:

  1. 图像分块:将输入图像分割成固定大小的图像块,例如16x16像素。

  2. 图像块嵌入:将每个图像块映射到一个固定维度的嵌入向量。

  3. 位置编码:为每个图像块添加位置编码,以保留空间位置信息。

  4. Transformer编码器:通过多个Transformer编码器层进行特征提取和自注意力计算。

  5. 分类头:在Transformer编码器的顶部添加一个分类头,用于最终的图像分类。

VIT的成功证明了Transformer架构在计算机视觉领域的潜力,为视觉识别任务提供了一种新的思路。随着技术的不断进步,VIT及其变体在图像分类、目标检测等视觉任务中发挥着越来越重要的作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/293815.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

碳素光线疗法与宠物健康

碳素光线与宠物健康 生息在地球上的所有动物、在自然太阳光奇妙的作用下、生长发育。太阳光的能量使它们不断进化、繁衍种族。现在、生物能够生存、全仰仗于太阳的光线。太阳光线中、包含有动物健康所需要的极为重要的波长。因此、和户外饲养的动物相比、在室内喂养的观赏动物、…

全套医院手术麻醉系统源码 人工智能麻醉系统源码 医疗管理系统源码

全套医院手术麻醉系统源码 人工智能麻醉系统源码 医疗管理系统源码 手术麻醉临床信息系统有着完善的临床业务功能,能够涵盖整个围术期的工作,能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施,能够规范麻醉科的工作流…

实现offsetof宏以及交换一个整数二进制奇偶位的宏

目录 1. offsetof宏2. 交换奇偶位 1. offsetof宏 我们想用宏来实现offsetof函数,首先要了解这个函数的用法。 1.1 offsetof函数的介绍及用法 (1)功能:用来计算结构体中一个成员在该结构体中的相对起始位置的偏移量,单位是字节。 …

ClamAV:Linux服务器杀毒扫描工具

Clam AntiVirus(ClamAV)是免费而且开放源代码的防毒软件,软件与病毒码的更新皆由社群免费发布。ClamAV在命令行下运行,它不将杀毒作为主要功能,默认只能查出系统内的病毒,但是无法清除。需要用户自行对病毒…

异常,Lambda表达式

文章目录 异常介绍存在形式程序中异常发生后的第一反应体系JVM的默认处理方案处理方式声明 throws概述格式抛出 throw格式注意意义 throws和throw的区别 捕获 try,catch介绍格式执行方式多异常捕获处理意义 如何选择用哪个 Throwable类介绍常用方法 自定义异常概述实现步骤范例…

手写Spring框架(上)浅出

手写Spring框架 准备工作Spring启动和扫描逻辑实现依赖注入的实现Aware回调模拟实现和初始化机制模拟实现BeanPostProcessor (Bean的后置处理器) 模拟实现Spring AOP 模拟实现 准备工作 准备一个空的工程创建spring的容器类,它是Spring IOC理念的实现,负…

Yolo 自制数据集dect训练改进

上一文请看 Yolo自制detect训练-CSDN博客 简介 如下图: 首先看一下每个图的含义 loss loss分为cls_loss, box_loss, obj_loss三部分。 cls_loss用于监督类别分类,计算锚框与对应的标定分类是否正确。 box_loss用于监督检测框的回归,预测框…

算法——距离计算

距离计算常用的算法包括欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、余弦相似度等。这些算法在数据挖掘、机器学习和模式识别等领域中被广泛应用。 1.欧氏距离 欧式距离也称欧几里得距离,是最常见的距离度量,衡量的是多维空间中两个点之间的…

SpringMvc项目创建过程

1、新建空项目 名字和路径自定义,Maven项目,不建议勾选Add sample code 2、创建web模块 选中当前项目 修改路径,注意是在main包下 选择当前项目 3、编写pom.xml文件 在文件中加入以下内容,packaging标签表明了maven打包类型。 &…

Mysql的高级语句3

目录 一、子查询 注意:子语句可以与主语句所查询的表相同,但是也可以是不同表。 1、select in 1.1 相同表查询 1.2 多表查询 2、not in 取反,就是将子查询结果,进行取反处理 3、insert into in 4、update…

【智能算法】黄金正弦算法(GSA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2017年,Tanyildizi等人受到正弦函数单位圆内扫描启发,提出了黄金正弦算法(Golden Sine Algorithm, GSA)。 2.算法原理 2.1算法思想 GSA来源于正弦函…

阿里云服务器安装SSL证书不起作用的解决方案

阿里云服务器安装SSL证书不起作用的解决方案 在阿里云安装SSL证书后,访问无效,各种检查证书安装没有问题。忽然想到阿里云默认连80端口都没开启,443端口应该也没开启。 登录阿里云控制台 - 云服务器 ECS - 网络与安全 - 安全组 - 管理规则 - …

http模块 服务器端如何响应(获取)静态资源?

一、静态资源与动态资源介绍: (1)静态资源 内容长时间不改变的资源。eg:图片、视频、css js html文件、字体文件... (2)动态资源 内容经常更新的资源。eg:百度首页、淘宝搜索列表... 二、服…

栈————顺序栈和链式栈

目录 栈 顺序栈 1、初始化顺序栈 2、判栈空 3、进栈 4、出栈 5、读栈顶元素 6、遍历 链式栈 1、初始化链式栈 2、断链式栈是否为空判 3、入栈(插入) ​编辑​编辑 4、出栈(删除) 5、读取栈顶元素 6、输出链式栈中各个节点的值(遍历) 栈 …

【Linux C | 多线程编程】线程的连接、分离,资源销毁情况

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰:2024-04-01 1…

浅谈iOS开发中的自动引用计数ARC

1.ARC是什么 我们知道,在C语言中,创建对象时必须手动分配和释放适量的内存。然而,在 Swift 中,当不再需要类实例时,ARC 会自动释放这些实例的内存。 Swift 使用 ARC 来跟踪和管理应用程序的内存,其主要是由…

2022 Tesla AI Day -特斯拉自动驾驶FSD的进展和算法软件技术之数据以及虚拟

2022 Tesla AI Day -特斯拉自动驾驶FSD的进展和算法软件技术之数据以及虚拟 附赠自动驾驶学习资料和量产经验:链接 人工智能算法犹如电影的主演,我们很多时候看电影只看到主演们的精彩,但其实电影的创意和呈现都来自于背后的导演和制片等团队…

服务器停止解析域名,但仍然可以访问到

1.centos7 如何刷新dns缓存 在CentOS 7上,DNS缓存由nscd(Name Service Cache Daemon)管理,如果系统上安装了nscd,可以通过清除nscd缓存来刷新DNS缓存。 要刷新DNS缓存,请执行以下命令: sudo …

下载及安装PHP,composer,phpstudy,thinkPHP6.0框架

文章目录 目录 文章目录 前言 一、下载PHP 二、下载composer 三、下载PHPstudy 四、下载think PHP 1.下载 2.多应用开发 前言 thinkPHP是一款开源的PHP框架,它是基于MVC(Model-View-Controller)设计模式构建的。thinkPHP提供了丰富的…

多微信聚合聊天神器,让你的社交更高效!

对于那些拥有多个微信号的用户来说,频繁地在不同微信号和设备之间切换既麻烦又容易搞混。这时候,一款多微信聚合聊天神器——微信管理系统应运而生,为我们带来了极大的便利与高效。 下面一起来看看它都有哪些功能吧! 1、多微信同…