cnn卷积神经网络模型架构
cnn卷积神经网络模型架构:(使用 MNIST 数据集为例)
[28,28] -卷积层-> [26,26] -卷积层-> [24,24] -池化层-> [12,12] -全连接层-> [512] -> [256] -> [64] -> [10]
其基本结构大致包含:
- 卷积层。提取图像上的特征,定义卷积核。感受野(步长、卷积核大小、空洞大小)。
- 池化层。也称采样层,通过减少网络参数,避免过拟合。最大池化层、均值池化层。
- 激活函数。加入线性因素,提高特征表达能力。ReLU、Sigmoid、tanh、Leaky ReLU。
- 全连接层。特征降维,将学习到的特征映射到标签。
- 输出层。分类使用 softmax 分类函数、回归使用 线性函数。
rnn循环神经网络模型架构
rnn循环神经网络模型架构:(使用 IMDB 数据集为例)
- 获取原始数据并生成数字码表。
- 序列化处理(添加标志位、统一长度)并词向量编码。
- 使用网络模型(SimpleRNN、LSTM、GRU)处理,添加 Dropout 层避免过拟合,然后 relu 激活函数,最终全连接层 Dense 输出最终结果。
Transformer
Transformer 主要应用于 NLP 方向,其关键点 注意力 Attention 模块能够理解文本序列中的每个词与其他词之间的关系。
Transformer 是编码器-解码器架构的一个实例,其由编码器、解码器组成,而编码器、解码器是完全基于自注意力的模块叠加而成,不包含任何卷积神经网络和循环神经网络,源(输入)序列和目标(输出)序列的潜入(Embedding)表示将加上位置编码(positional encoding),之后再分别输入到编码器和解码器中。
从宏观角度来看,Transformer 的编码器由多个相同的层叠加而成,每个层都有两个子层:第一个子层为多头注意力(multi-head self-attention)汇聚;第二个子层是基于位置的前馈网络(positional feed-forward network)。具体来说,在计算编码器的自注意力时,查询、键、值均来自前一个编码器层的输出。而由于受到残差网络的影响,每个子层都采用了残差连接。在残差连接的加法计算后,紧接着应用层规范化。输入序列对应的每个位置,Transformer 编码都将输出一个d 维表示向量。
Transformer 解码器也是由多个相同的层叠加而成,并且层中使用了残差连接和层规范化,除编码器中描述的两个子层之外,解码器还在这两个子层之间插入了第三个子层,被称为 编码器-解码器注意力(encoder-decoder attention)层。在编码器-解码器注意力中,查询来自前一个解码器层的输出,而键值来自整个编码器的输出;在解码器自注意力中,查询、键、值均来自上一个解码器层的输出。但解码器中的每个位置只能考虑该位置之前的所有位置。这种掩蔽(masked)注意力保留了自回归(auto-regressive)属性,确保预测仅依赖于已生成的输出词源。
- 自注意力
- 位置编码
- 掩蔽注意力
- 基于位置的前馈网络
- 残差连接
- 层规范化
将一组词元序列输入注意力池化中,以便一组词元同时充当查询、键和值,之后会生成一个自注意力输出。
自注意力因为并行计算而放弃了顺序操作,而又为了得到序列的顺序信息,通过在输入中添加位置编码来注入绝对或相对位置信息。位置编码可以通过学习得到也可以直接固定得到。
在解码器中,每个位置都需要根据输入序列和已生成的输出序列进行预测,为了保持自回归的特性,即预测仅依赖已生成的输出词元,限制每个位置只能看到之前的位置。
为了实现上述,便有了掩蔽注意力机制,在计算注意力权重时,会对当前位置之后的位置进行掩蔽,其注意力权重为零。通过掩蔽注意力机制,解码器可以按顺序生成输出序列,每个位置仅依赖之前的输出词元。
基于位置的前馈网络对序列中位置的表示进行变换时使用的是同一个多层感知机(MLP),帮助模型捕捉序列中不同位置的信息,以此增强模型的表达能力。该前馈网络的作用是对每个位置的特征进行非线性变换和映射,具体而言就是其将每个位置的特征向量作为输入,并通过一系列的线性变换和激活函数来生成新的表示。
设计前馈网络有两个要点:
1. 独立性。基于位置的前馈网络是位置-独立的,即每个位置的特征都会被独立映射和处理,不会受到其他位置的干扰。
2. 维度变换。基于位置的前馈网络通过线性变换将输入的的特征维度映射到一个更高的维度,然后再映射回原来的维度。这种维度变换可以增加模型的表达能力,引入更多的非线性。
残差连接是指将输入的特征经过某个子层处理后的特征进行直接相加。
在 Transformer 中,每个子层(自注意力机制和前馈网络)的输出都通过残差连接与输入相加,其目的在于允许信息在模型中更容易传播,避免梯度消息和梯度爆炸;另外还可以帮助模型优化浅层网络层(可以直接从较深层获得原始输入的信息)。
层规范化是一种用于减少内部协变量转移的技术。
在 Transformer 中,层规范化被应用于每个子层的输入和输出,通过对每个特征维度进行归一化,使得特征在每个样本上的分布保持稳定。具体而言就是层规范化对每个特征维度进行均值归一化和方差归一化,以减少不同特征之间的相关性对模型训练的影响,并提高模型的鲁棒性和训练速度。