目录
什么是神经网络?
神经网络架构的关键组件
标准神经网络
感知器
前馈网络
残差网络 (ResNet)
递归神经网络 (RNN)
循环神经网络 (RNN)
长短期记忆网络 (LSTM)
回声状态网络 (ESN)
卷积神经网络 (CNN)
反卷积神经网络 (DNN)
亚历克斯网
过头
VGG
网中网
GoogLeNet 和 Inception
挤压网
异常
移动网络
胶囊网络
生成对抗网络 (GAN)
变压器神经网络
BERT
概括
神经网络是深度学习的功能单元,众所周知,它可以模仿人脑的行为来解决复杂的数据驱动问题。
输入数据通过堆叠在一起的不同层人工神经元进行处理,以产生所需的输出。
从语音识别和人物识别到医疗保健和营销,神经网络已被用于各种领域。
神经网络架构由模拟大脑生物行为的 称为神经元的单个单元组成。
这是神经元的各种组成部分。
输入- 它是为学习过程输入模型的一组特征。例如,对象检测中的输入可以是与图像有关的像素值数组。
权重- 它的主要功能是重视那些对学习贡献更大的特征。它通过在输入值和权重矩阵之间引入标量乘法来实现。例如,一个否定词比一对中性词更能影响情感分析模型的决策。
传递函数——传递函数的作用是将多个输入组合成一个输出值,以便可以应用激活函数。它是通过对传递函数的所有输入进行简单求和来完成的。
激活函数——它在感知器的工作中引入非线性,以考虑随输入变化的线性。如果没有这个,输出将只是输入值的线性组合,并且无法在网络中引入非线性。
偏差- 偏差的作用是转移激活函数产生的值。它的作用类似于一个常数在线性函数中的作用。
当多个神经元连续堆叠在一起时,它们就构成了一层,多层相互相邻堆叠的称为多层神经网络。
我们在下面描述了这种结构的主要组成部分。
多层神经网络
输入层
我们提供给模型的数据从外部源(如 CSV 文件或 Web 服务)加载到输入层。它是完整神经网络架构中唯一可见的层,无需任何计算即可传递来自外界的完整信息。
隐藏层
隐藏层使深度学习成为今天的样子。它们是执行所有计算并从数据中提取特征的中间层。
可以有多个互连的隐藏层,用于搜索数据中的不同隐藏特征。例如,在图像处理中,第一个隐藏层负责更高级别的特征,如边缘、形状或边界。另一方面,后面的隐藏层执行更复杂的任务,例如识别完整的对象(汽车、建筑物、人)。
输出层
输出层从前面的隐藏层获取输入,并根据模型的学习得出最终预测。这是我们获得最终结果的最重要的层。
在分类/回归模型的情况下,输出层通常有一个节点。但是,它完全是针对特定问题的,并且取决于模型的构建方式。
感知器是最简单的神经网络架构。
它是一种神经网络,它接受多个输入,对这些输入应用某些数学运算,并产生输出。它采用实数值输入向量,对每个属性执行线性组合,并为每个属性分配相应的权重。
加权输入被加总为单个值并通过激活函数。
这些感知器单元组合起来形成一个更大的人工神经网络架构。
感知器代表单个神经元的工作方式。
但-
一系列的感知器堆叠成一排,不同的层堆积起来呢?那么模型是如何学习的呢?
它是一个多层神经网络,顾名思义,信息是向前传递的——从左到右。
在前向传播中,信息通过输入层进入模型内部,经过一系列隐藏层,最后到达输出层。这种神经网络架构本质上是前向的——信息不会通过两个隐藏层循环。
后面的层不对前面的层提供反馈。前馈网络的基本学习过程与感知器相同。
既然您对前馈网络有了更多的了解,那么您可能会想到一个问题——如何确定我们的神经网络架构中的层数?
一个天真的答案是:隐藏层的数量越多,学习过程就越好。
更多的层丰富了特征的层次。但是——
是这样吗?
由于梯度消失和爆炸问题,非常深的神经网络极难训练。
ResNets 为数据流动提供了另一种途径,使训练过程更快、更容易。
这与早期神经网络架构的前馈方法不同。
ResNet 背后的核心思想是,通过使用恒等映射从浅层网络复制权重,可以从浅层网络构建更深的网络。
来自前一层的数据在神经网络中被快速转发和复制。这就是我们所说的跳过连接,最初是在残差网络中引入的,用于解决梯度消失问题。
基本的深度学习架构具有固定的输入大小,这在输入大小不固定的情况下充当了阻塞器。此外,模型做出的决定是基于当前输入,没有过去的记忆。
循环神经网络可以很好地使用数据序列作为输入。它的功能可以在解决情绪分析、垃圾邮件过滤器、销售预测、股市预测等时间序列问题等 NLP 问题中看到。
循环神经网络有能力记住过去学到的东西,并将其应用于未来的预测。
输入是输入 RNN 的顺序数据形式,它有一个隐藏的内部状态,每次读取输入中的以下数据序列时都会更新。
内部隐藏状态将反馈给模型。RNN 在每个时间戳都会产生一些输出。
数学表示如下:
注意:我们在每个时间戳都使用相同的函数和参数。
在 RNN 中,我们的每个预测都只查看一个时间戳,并且它具有非常短期的记忆。它不使用任何更远的信息。
为了纠正这个问题,我们可以采用循环神经网络结构并通过添加更多部分来扩展它。
我们添加到这个循环神经网络的关键部分是内存。我们希望它能够记住许多时间戳之前发生的事情。为了实现这一点,我们需要在人工神经网络结构 中添加称为门的额外结构。
Echo state Networks 是一个 RNN,具有稀疏连接的隐藏层,通常具有 1% 的连接性。
隐藏神经元的连接性和权重是固定的和随机分配的。唯一需要学习的是输出层的权重。它可以看作是通过所有隐藏层的加权输入和目标输出的线性模型。主要思想是保持早期层固定。
在训练期间将修改的唯一权重是用于将隐藏层连接到输出层的概要。这使得损失函数简单且易于区分。
假设线性输出单元,训练变得不复杂。唯一要记住的是非常小心地设置随机连接。
卷积神经网络是一种前馈神经网络,用于图像分析、自然语言处理和其他复杂图像分类问题等任务。
CNN 具有构成 ConvNet 基础的卷积层隐藏层。
特征是指图像数据中的微小细节,如边缘、边界、形状、纹理、对象、圆形等。
在更高层次上,卷积层在过滤器的帮助下检测图像数据中的这些模式。更高级别的细节由前几个卷积层处理。
网络越深入,模式搜索就越复杂。
例如,在后面的层而不是边缘和简单的形状中,过滤器可以检测特定对象,如眼睛或耳朵,最终检测到猫、狗等等。
卷积神经网络中的特征提取和分类
在向网络添加卷积层时,我们需要指定过滤器的数量。
过滤器可以被认为是一个相对较小的矩阵,我们决定这个矩阵的行数和列数。
这个特征矩阵的值是用随机数初始化的。当这个卷积层接收到输入数据的像素值时,滤波器将对输入矩阵的每个补丁进行卷积。
卷积层的输出通常通过 ReLU 激活函数来给模型带来非线性。它采用特征图并将所有负值替换为零。
池化是卷积网络中非常重要的一步,因为它减少了计算量,并使模型能够容忍失真和变化。完全连接的密集神经网络将使用扁平化的特征矩阵并根据用例进行预测。
反卷积神经网络是以相反的方式工作的 CNN。
当我们使用卷积层和最大池化时,图像的大小会减小。为了达到原始大小,我们使用上采样和转置卷积层。上采样没有可训练的参数——它只是按照相应的大小重复图像数据的行和列。
转置卷积层意味着同时应用卷积操作和上采样。它表示为 Conv2DTranspose(过滤器数量、过滤器大小、步幅)。如果我们设置 stride=1,我们没有任何上采样并接收相同输入大小的输出。
AlexNet 在 Imagenet 数据集上进行了训练,该数据集包含 1500 万张 256*256*3 的高分辨率图像。它有多个卷积层,比 LeNet 人工神经网络更深。
下面是 AlexNet 的特点:
它有五个卷积池层块,然后是三个完全连接的密集层用于分类。
这种神经网络架构使用单一框架探索了分类、定位和检测这三个众所周知的视觉任务。
它同时在所有三个任务上训练模型以提高准确性。
它是对 AlexNet 的修改。它预测每个空间位置和尺度的边界框。对于定位,分类头被回归网络取代。
VGG 代表视觉几何组。
VGG 背后的想法是,如果 AlexNet 在更大和更深方面表现优于 LeNet,为什么不继续推进呢?
我们可以采取的方法之一是添加更密集的层。这将带来更多的计算。
下一个可能的方法是拥有更多的卷积层。但这并没有奏效,因为单独定义每个卷积层非常累人。
所以-
所有解决方案中最好的是将卷积层分组为块。
问题是:使用更少更宽的卷积块还是更窄的卷积块更好?
最终,研究人员得出结论,与数量较少的较宽卷积相比,更多层的窄卷积更强大。
一个 VGG 块有一堆 3x3 卷积,填充 1 以保持输出大小与输入大小相同,然后将最大池化为分辨率的一半。该架构有n个 VGG 块,后跟三个完全连接的密集层。
卷积层需要更少的参数。正是最后几层完全连接的神经元带来了参数数量的巨大峰值。
解决这个问题的一种方法是摆脱完全连接的层。但-
虽然理论上听起来很容易,但实施起来却相当困难。
卷积和池化降低了分辨率,但在某些时候,我们仍然需要将其映射到相应的类。因此,我们的想法是随着我们深入而降低分辨率,并通过使用 1*1 卷积来增加通道数。这为我们提供了每个频道的高质量信息。
在 network-in-network 架构中,最后一个全连接层被全局最大池化层取代,使模型更轻。
Inception 神经网络架构具有三个卷积层,具有不同大小的过滤器和最大池。每层都有不同大小的过滤器用于并行学习。
有不同尺寸的过滤器来处理信息位置的巨大变化,这使得选择合适尺寸的过滤器变得非常困难。
小滤波器尺寸的卷积层负责一个小的信息区域。
更大的过滤器尺寸捕获更大的信息单元。
GoogleNet 架构由具有 1x1、3x3、5x5 卷积层的初始块组成,随后是前一层的 3x3 最大池化和填充(以使输出与输入具有相同的形状),然后是它们的输出连接。
它的目标是更小的 CNN,以便在分布式训练期间服务器之间的通信更少。
它在 AlexNet 架构上执行的更改如下:
作为所有 CNN 的基本构建块的卷积层涉及卷积操作。每个卷积操作都涉及在输入像素阵列的所有补丁中滑动过滤器。
每次执行的乘法次数等于过滤器中存在的元素数。
在标准卷积中,跨所有输入通道的过滤器和这些值的组合在一个步骤中完成。Xception 架构中提出的深度可分离卷积将该操作分解为两部分:
MobileNets 使用深度可分离卷积来构建轻量级深度神经网络。他们开发了非常小的、低延迟的模型,用于机器人、自动驾驶汽车等应用程序。这些模型被认为最适合移动设备,因此它们的名字叫 MobileNets。
在简单的 CNN 结构中,滤波器是叠加在输入图像块上的块,在两个重叠分量之间计算点积。计算一个通道内的细节以及不同通道之间的关系。
MobileNets 没有一个大的过滤器,而是有两个过滤器:
卷积神经网络存在一些问题——
他们被训练学习图像:在较低的层中学习边缘和曲率,当我们向上层级时,它会学习更复杂的特征。
子采样或池化会丢失空间关系。
为了帮助您更好地理解它——
模型仅仅知道图像包含鼻子、眼睛或嘴巴是不够的,但它还应该理解眼睛在鼻子上方,鼻子在眼睛和嘴巴之间,对吧?
你看,卷积神经网络在检测不同位置的图像时表现不佳,例如旋转的。它必须处于与他们接受训练的图像相似的位置。
这是一个问题。
网络应该争取等方差,而不是不变性。这意味着无论二次采样图像在什么位置或旋转,神经网络都以相同的方式响应。它也应该相应地改变以适应这样的子图像。
简而言之:我们需要一个更容易泛化的网络。
这是主要思想——
人工神经网络必须以更有效的方式实现平移旋转和不变性。这些网络应该有本地胶囊,可以对其输入执行复杂的内部计算,然后将结果封装到一个包含大量信息的输出的小向量中。
现在,试着记住这一点,并开始考虑使用胶囊而不是神经元。听起来很有趣,对吧?
神经网络不是添加层,而是在层中嵌套一个新层。这个嵌套层称为胶囊,它是一组神经元。胶囊网络不是在层级方面使结构更深,而是在同一层内嵌套另一层。
这使得模型更加健壮。
生成式建模属于无监督学习的范畴,其中新/合成数据是根据从输入数据集中发现的模式生成的。
GAN 是一种生成模型,用于通过学习模式生成全新的合成数据,因此是 AI 研究的一个活跃领域。
它们有两个组件——一个以竞争方式工作的生成器和一个鉴别器。
生成器的工作是在学习阶段根据模型的特征创建合成数据。它以随机数据作为输入,并在执行某些转换后返回生成的图像。
鉴别器充当批评者,对问题域有一个全面的了解,对生成的图像有清晰的理解。
这些生成的图像被鉴别器分类为假/真图像。
鉴别器通过 0 到 1 范围内的值返回对图像有噪声/无噪声的概率预测,其中 1 是真实图像,0 是假图像。
生成器网络根据其学习生成样本。
它的对手,鉴别器,努力区分来自训练数据的样本和从生成器产生的样本。有来自鉴别器的反馈馈送到生成器以提高性能。
当鉴别器成功区分真假示例时,该组件运行良好,无需对其参数应用任何更改。
当生成器无法生成真实图像时,生成器会受到惩罚,从而可以欺骗鉴别器。但是,如果它成功地使鉴别器将生成的图像分类为真实图像,则表明生成器的训练正在朝着正确的方向发展。所以生成器的最终目的是欺骗判别器,而判别器的最终目的是超越生成器的准确性。
它用于预测视频中的下一帧、文本到图像生成、图像到图像转换(如风格转移)、图像去噪等场景。
事实是-
RNN 速度慢,训练时间过长。
它们不适用于大型序列数据并导致梯度消失。为在 RNN 中引入记忆而引入的 LSTM 的训练速度甚至变得更慢。
对于 RNN 和 LSTM,我们需要按顺序或串行地输入数据。这不使用 GPU。
如何并行化序列数据的训练?
答案是变形金刚。
这些网络采用编码器-解码器结构,不同之处在于输入数据可以并行传递。
在 RNN 结构中,一次一个单词通过输入层。但是在 Transformers 中,没有用于传递输入的时间戳的概念。我们将完整的句子放在一起,并将所有单词的嵌入一起获取。
这些 Transformer 神经网络是如何做到这一点的?
输入嵌入:计算机不理解单词。他们理解数字、向量等。每个单词都映射到空间中的一个点,称为嵌入空间。预训练的嵌入空间用于将单词映射到向量。同一个词在不同的句子中会有不同的含义。
位置编码器:向量根据单词在句子中的位置给出上下文。
因此,输入嵌入 + 位置编码器 = 带有上下文信息的输入嵌入
我们将它传递给一个编码器块,在那里它进入一个多头注意力层和一个前馈层。
注意力层决定了模型应该关注输入句子的哪一部分。在训练期间,相应的法语句子嵌入被馈送到具有三个主要组件的解码器。
自注意力模块为句子中的每个单词生成注意力向量,以表示每个单词与同一句子中的每个单词的相关程度。这些注意力向量和编码器的向量被传递到另一个称为“编码器-解码器注意力块”的注意力块中。这个注意力块确定了每个词向量之间的相关程度,这就是英语到法语映射发生的地方。
提议对架构进行重大更改-
RNN 的缺点是不使用并行计算,并且通过排序的时间戳数据丢失关键信息。相比之下,Transformer 基于注意力,需要一个步骤来提供所有顺序数据,并在核心架构中具有自注意力机制来保存重要信息。
BERT(来自 Transformer的双向编码器表示)优于 LSTM。
这些模型更快,因为可以同时处理单词。单词的上下文可以更好地学习,因为它们可以同时从两个方向学习。如果我们堆叠编码器,我们将得到 BERT 模型。
BERT的学习策略:
掩码语言建模:BERT 接受输入句子并用 [MASK] 标记替换一些随机单词。该模型的目标是根据序列中其他非掩码单词提供的上下文来预测掩码单词的原始单词。
该模型使用 Softmax 压缩函数计算词汇表中每个单词的概率。它有助于 BERT 理解句子中的双向上下文。
Next Sentence Prediction:在这种情况下,BERT 接受两个句子的输入,并确定第二个句子是否跟在第一个句子之后。
这有助于 BERT 理解不同句子的上下文。
为了帮助模型在训练中区分两个句子,输入在进入模型之前按如下方式处理:
在训练 BERT 模型时,Masked LM 和 Next Sentence Prediction 一起训练,以最大限度地减少两种策略的组合损失函数,并很好地理解语言。
GPT; GPT2;GPT3
GPT(Generative PreTraining)是一种语言模型,用于预测单词序列的概率。
涉及生成训练的语言模型不需要人工标记的数据。
GPT-1 有两个训练步骤——使用未标记数据和语言模型目标函数进行无监督预训练,然后在没有特定任务模型的情况下对模型进行监督微调。GPT 使用变压器解码器架构。
使用 GPT2,模型的目的更多地转移到了文本生成方面。它是一种自回归语言模型。它在输入序列上进行训练,其目标是预测序列每个点的下一个标记。
它由一个带有注意力机制的变压器块组成。它的维数比 BERT 略低,具有更多的转换器块(48 个块)和更大的序列长度。
GPT3 的基本结构与 GPT2 相似,唯一的区别在于更多的转换器块(96 个块)并且在更多的数据上训练。与 GPT2 相比,输入句子的序列大小也翻了一番。它是迄今为止包含最多参数的最大神经网络架构。
动量对比 (MoCo)
该模型背后的想法是,在检测或分割等计算机视觉任务中,无监督的预训练可以超越有监督的训练。
过去,我们已经看到 BERT、GPT 等基于无监督学习的模型在 NLP 领域取得了巨大成功。
在自然语言处理相关的任务中,给一个模型一个输入句子,模型需要预测一个或多个后续单词。假设我们有一个包含所有建议单词的字典。使用这样的字典允许我们将损失定义为一个简单的字典查找问题。
假设图像通过编码器;图像的编码特征可以称为查询。
在这种情况下,字典是一大组图像的一组特征。这样的字典很难创建,因为图像和相应的特征不容易获得。通过将编码器模型应用于一组图像来准备动态字典。
这种方法称为对比学习。
上图代表了对比学习的两种优化机制的批处理视角。图像被编码到一个表示空间中,在其中计算成对的亲和力。
MoCo 解决了对比学习中的两个挑战:
为了在对比学习框架中制作一个大字典,我们将前一批图像的特征保持为一个队列。字典由当前和以前的批次组成,不受批次大小的限制。
该词典中的特征是由不断更新的编码器产生的,因此降低了词典的整体一致性。为了解决这个一致性问题,建议使用缓慢更新的动量编码器,
SimCLR
对比学习与数据增强、更大的批量、更多的训练时期和更广泛的网络相结合。
SimCLR 强烈增强了未标记的训练数据,并将它们提供给一系列标准 ResNet 架构和小型神经网络。
图像被传递到基本编码器以获取嵌入。这些嵌入通过两层神经网络得到另一组嵌入。使用了交叉熵的修改版本,如果两个嵌入形成图像和增强图像对,则它们之间的相似性应该接近。
换句话说,嵌入应该吸引。另一方面,不属于同一类的图像之间的相似性应该排斥。
每个神经网络架构都有自己的优缺点。
像前馈神经网络这样的标准神经网络最常用于解决与简单结构化数据相关的分类和回归问题。
递归神经网络在长时间记忆信息方面功能更强大,可用于文本、音频、视频等顺序数据。
最近的研究表明,基于注意力机制的 Transformer 优于 RNN,几乎在每个领域都取代了 RNN。
对于像图像这样的复杂数据,我们可以在分类任务中使用 ConvNet,在生成图像或风格迁移相关任务时,生成对抗网络表现最好。