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

news2024/11/26 11:34:21

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.coloradmin.cn/o/1561205.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SDWebImage源码解析---疑难问题解答

SDWebImage的简单流程图: 上图大致流程是对的,有几个没写到的地方: 加载沙盒中对应的图片后,不仅要显示,而且要把图片缓存到内存中下载完毕后,有一个异步解码的过程,没体现出来 网上有大佬做了…

【JAVASE】学习数组的定义与使用

✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页: 再无B~U~G-CSDN博客 目标: 1. 理解数组基本概念 2. 掌握数组的基本用法…

腾讯云函数计算技术:云原生架构下的Serverless与微服务新篇章

作者:哈哥撩编程(视频号、公众号、抖音同名) 新星计划全栈领域优秀创作者博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 文章目录 前言全面上云之首战:春保&#…

探索DAPP生态:代币预售、系统开发、NFT质押分红和代币质押技术

随着区块链技术的迅速发展,去中心化应用程序(DAPPs)生态系统已经成为了数字经济的一部分,并在不断壮大和发展。DAPP生态系统的繁荣离不开代币预售、系统开发、NFT质押分红和代币质押技术等关键要素的支持和推动。本文将深入探讨这…

热门IT【视频教程】-华为/思科/红帽/oracle

华为认证 网络工程师-入门基础课:华为HCIA认证课程介绍-CSDN博客 网络工程师进阶课:华为HCIP认证课程介绍-CSDN博客 职场进阶,踏上高峰——HCIE-Datacom认证-CSDN博客 华为HCIA试听课程 : 超级实用,华为VRP系统文件…

算法——距离计算

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

【LeetCode】三月题解

文章目录 [2369. 检查数组是否存在有效划分](https://leetcode.cn/problems/check-if-there-is-a-valid-partition-for-the-array/)思路:代码: [1976. 到达目的地的方案数](https://leetcode.cn/problems/number-of-ways-to-arrive-at-destination/) 思路…

lua脚本在redis集群中哈希槽分片问题

上文说到,通过用redis lua脚本实现时间窗分布式限流 可以操作redis lua脚本来实现时间窗限流,在执行lua脚本的时候,参数中有个keys列表,当lua脚本中如果有操作多个key的情况,就可以传个key列表了。通常情况下&#xff…

[蓝桥杯 2019 省赛 AB] 完全二叉树的权值

# [蓝桥杯 2019 省 AB] 完全二叉树的权值 ## 题目描述 给定一棵包含 $N$ 个节点的完全二叉树,树上每个节点都有一个权值,按从上到下、从左到右的顺序依次是 $A_1,A_2, \cdots A_N$,如下图所示: 现在小明要把相同深度的节点的权值…

【Windows】windows的bat命令获取当前文件名称

新建.txt文本输入IR *.* /B >LIST.TXT LIST.TXT 提取到LIST.TXT文件 重命名txt文本后缀为.bat双击.bat文件 DIR *.* /B >LIST.TXT效果图

git学习——tags、release、drop commit

最近一直都在持续学习git相关内容,越来越发现git是一个十分适合大型项目和团队协作进行开发的工具,掌握好了对于我们参与项目维护和开发产品帮助很大,所以要不断持续学习git。 tags & releases tag的创建 当我们在git版本控制中遇到了…

57、FreeRTOS/串口通信和DMA ADC PWM相关20240401

一、使用PWMADC光敏电阻完成光控灯的实验。(根据测得的光敏电阻大小,控制灯的亮度) 代码: /* USER CODE BEGIN 2 */HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_3);//打开定时器的PWM通道3HAL_TIM_PWM_Start(&htim3,TIM_CHANN…

学习笔记——C语言基本概念指针(下)——(8)

1.指针和数组 数组指针 -- 指向数组的指针。 指针数组 -- 数组的元素都是指针。 换句话理解就是:数组指针就是个指针,指针数组就是个数组。 1.1数组指针 数组指针:指向数组的指针; 先回顾一下数组的特点: 1.相…

Linux权限提升总结

几个信息收集的项目推荐 运行这几个项目就会在目标主机上收集一些敏感信息供我们参考和使用 一个综合探针:traitor 一个自动化提权:BeRoot(gtfo3bins&lolbas) 使用python2运行beroot.py就可以运行程序,然后就可以收集到系统中的大量信…

Hive详解(5)

Hive 窗口函数 案例 需求:连续三天登陆的用户数据 步骤: -- 建表 create table logins (username string,log_date string ) row format delimited fields terminated by ; -- 加载数据 load data local inpath /opt/hive_data/login into table log…

【Java】反射简介,利用反射打印一个类当中的构造函数,方法和属性。

📝个人主页:哈__ 期待您的关注 我想要通过反射来打印如下效果的类信息。 Student类如下代码所示。 package com.my.reflect;public class Student {public String name;public int age;public Student(){}public Student(String name, int age) {this…

探索组合总和问题(力扣39,40,216)

文章目录 题目前知LinkedList和ArryayList 组合总和I一、思路二、解题方法三、Code 组合总和II一、思路二、解题方法三、Code 组合总和III一、思路二、解题方法三、Code 总结 先看完上一期组合问题再看这一期更加容易理解喔🤯 在算法和编程的世界中,组合…

走向国际:区块链行业项目海外市场宣传与运营攻略

随着区块链技术的不断发展和应用,越来越多的区块链项目开始将目光投向海外市场。在全球范围内寻找用户和投资者,扩大品牌知名度,是许多区块链项目的共同目标。然而,要成功进军海外市场,并不是一件容易的事情。本文将深…

Vscode运行python

按住 xtrlshiftp,会出现下面的界面: 然后选择第一个选项,会出现如下的界面: 选择某个环境后就可以使用了。可以右键,如下所示: 就可以运行python程序了

如何在Ubuntu系统部署Z-blog博客结合cpolar实现无公网IP访问本地网站

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕…