当前位置: 首页 > news >正文

浙江大经建设集团网站jsp做网站用到的软件

浙江大经建设集团网站,jsp做网站用到的软件,广州建设工程网,静海网站建设1. 概述 Transformer[1]是Google在2017年提出的一种Seq2Seq结构的语言模型#xff0c;在Transformer中首次使用Self-Atttention机制完全代替了基于RNN的模型结构#xff0c;使得模型可以并行化训练#xff0c;同时解决了在基于RNN模型中出现了长距离依赖问题#xff0c;因…1. 概述 Transformer[1]是Google在2017年提出的一种Seq2Seq结构的语言模型在Transformer中首次使用Self-Atttention机制完全代替了基于RNN的模型结构使得模型可以并行化训练同时解决了在基于RNN模型中出现了长距离依赖问题因为在Self-Attention中能够对全局的信息建模。 Transformer结构是一个标准的Seq2Seq结构包含了Encoder和Decoder两个部分。其中基于Encoder的Bert[2]模型和基于Decoder的GPT[3]模型刷新了NLP中多个任务的记录在NLP多种应用中取得了巨大的成功。以BERT模型为例在BERT模型中首先在大规模数据上利用无监督学习训练语言模型对于具体的下游任务如文本分类利用预训练模型在下游数据上Fine-tuning。 基于Transformer框架的模型在NLP领域大获成功而在CV领域还是基于CNN模型的情况下能否将Transformer引入到CV中呢ViTVision Transformer[4]作为一种尝试希望能够通过尽可能少的模型改动实现Transformer在CV中的应用。 2. 算法原理 2.1. Transformer的基本原理 Transformer框架是一个典型的Seq2Seq结构包括了Encoder和Decoder两个部分其框架结构如下图所示 在Transformer框架结构中Encoder部分如上图的左半部分Decoder部分如上图的右半部分。由于在ViT中是以Encoder部分为主要部分同时BERT模型也是以Transformer中Encoder为原型的模型因此在这里对Bert模型做简单介绍对于完整的Transformer框架的介绍可见参考文献[5]。BERT是基于上下文的预训练模型BERT模型的训练分为两步第一pre-training第二fine-tuning。其中在pre-training阶段首先会通过大量的文本对BERT模型进行预训练然而标注样本是非常珍贵的在BERT中则是选用大量的未标注样本来预训练BERT模型。在fine-tuning阶段会针对不同的下游任务适当改造模型结构同时通过具体任务的样本重新调整模型中的参数。 2.1.1. BERT模型的网络结构 BERT模型是Transformer结构的Encoder部分其基本的网络结构如下图所示 这个结构与Transformer中的Encoder结构是完全一致的。 2.1.2. BERT模型的输入Embedding 为了使得BERT能够适配更多的应用模型在pre-training阶段使用了Masked Language ModelMLM和Next Sentence PredictionNSP两种任务作为模型预训练的任务其中MLM可以学习到词的EmbeddingNSP可以学习到句子的Embedding。在Transformer中输入中会将词向量与位置向量相加而在BERT中为了能适配上述的两个任务即MLM和NSP这里的Embedding包含了三种Embedding的和如下图所示 其中Token Embeddings是词向量第一个单词是CLS标志可以用于之后的分类任Segment Embeddings用来区别两种句子这是在预训练阶段针对NSP任务的输入Position Embeddings是位置向量但是和Transformer中不一样与词向量一样是通过学习出来的。此处包含了两种标记一个是[CLS]可以理解为整个输入特征的向量表示另一个是[SEP]用于区分不同的句子。 2.1.3. 重要的Multi-Head Attention Multi-Head Attention结构是所以基于Transformer框架模型的灵魂Multi-Head Attention结构是由多个Scaled Dot-Product Attention模块组合而成如下图所示 其过程可以表示为 MultiHead(Q,K,V)Concat(head1,⋯,headh)WoMultiHead\left ( Q,K,V \right ) Concat\left ( head_1,\cdots, head_h \right ) W^oMultiHead(Q,K,V)Concat(head1​,⋯,headh​)Wo 其中每一个headihead_iheadi​就是一个Scaled Dot-Product Attention。Multi-head Attention相当于多个不同的Scaled Dot-Product Attention的集成引入Multi-head Attention可以扩大模型的表征能力同时这里面的hhh个Scaled Dot-Product Attention模块是可以并行的没有层与层之间的依赖相比于RNN可以提升效率。而Scaled Dot-Product Attention的计算方法为 Attention(Q,K,V)softmax(QKTdk)VAttention\left ( Q,K,V \right )softmax\left ( \frac{QK^T}{\sqrt{d_k} }\right )VAttention(Q,K,V)softmax(dk​​QKT​)V 其中1dk\frac{1}{\sqrt{d_k} }dk​​1​最主要的目的是对点积缩放。计算过程可由下图表示 2.1.4. 下游任务的fine-tuning 在预训练阶段BERT采用了Masked Language Model和Next Sentence Prediction两个训练任务作为其语言模型的训练其中Masked Language Model的原理是随机将一些词替换成[MASK]在训练的过程中通过上下文信息来预测被mask的词Next Sentence Prediction的目的是让模型理解两个橘子之间的关系训练的输入是两个句子BERT模型需要判断后一个句子是不是前一个句子的下一句。这两个任务最大的特点就是可以无监督学习这样就可以避免模型对大规模标注数据依赖的问题。 在预训练模型完成后就可以在具体的下游任务中应用BERT模型。这里以文本分类为例句子对的分类任务即输入是两个句子输入如下图所示 输出是BERT的第一个[CLS]的隐含层向量C∈RHC\in \mathbb{R}^HC∈RH在Fine-Tune阶段加上一个权重矩阵W∈RK×HW\in \mathbb{R}^{K\times H}W∈RK×H其中KKK为分类的类别数。最终通过Softmax函数得到最终的输出概率。 2.2. ViT的基本原理 ViT模型是希望能够尽可能少对Transformer模型修改并将Transformer应用于图像分类任务的模型。ViT模型也是基于Transformer的Encoder部分这一点与BERT较为相似同时对Encoder部分尽可能少的修改。 2.2.1. ViT的网络结构 ViT的网络结构如下图所示 ViT模型的网络结构如上图的右半部分所示与原始的Transformer中的Encoder不同的是Norm所在的位置不同类似BERT模型中[class]标记位的设置ViT在Transformer输入序列前增加了一个额外可学习的[class]标记位并且该位置的Transformer Encoder输出作为图像特征。 Vision Transformer(ViT)将输入图片拆分成16×1616\times 1616×16个patches每个patch做一次线性变换降维同时嵌入位置信息然后送入Transformer。类似BERT[CLS]标记位的设计在ViT中在输入序列前增加了一个额外可学习的[class]标记位并将其最终的输出作为图像特征最后利用MLP做最后的分类如上图中的左半部分所示其中[class]标记位为上图中Transformer Encoder的0*。那么现在的问题就是两个部分第一如何将图像转换成一维的序列数据因为BERT处理的文本数据是一维的序列数据第二如何增加位置信息因为在Transformer中是需要对位置信息编码的在BERT中是通过学习出来而在Transformer中是利用sin和cos这两个公式生成出来。 2.2.2. 图像到一维序列数据的转换 对于x∈RH×W×C\mathbf{x}\in \mathbb{R}^{H\times W\times C}x∈RH×W×C的图像首先需要将其变成xp∈RN×(P2⋅C)\mathbf{x}_p\in \mathbb{R}^{N\times \left (P^2\cdot C \right )}xp​∈RN×(P2⋅C)的2D的patch的序列这里面(H,W)\left ( H,W \right )(H,W)表示的是原图的分辨率CCC表示的通道channel的数目(P,P)\left ( P,P \right )(P,P)表示的是每个patch的分辨率NHW/p2NHW/p^2NHW/p2表示的是patch的个数对于一个通道上述的这个过程可以如下图所示 假设输入图片大小是256×256256\times 256256×256每个patch的大小为32×3232\times 3232×32则最后的总的patch个数为64。对于每个patch我们还需要将其转换成embeding的表示ViT中使用到了线性变换即 z0[xclass;xp1E;xp2E;⋯;xpNE]Epos\mathbf{z}_0\left [ \mathbf{x}_{class};\mathbf{x}_p^1\mathbf{E};\mathbf{x}_p^2\mathbf{E};\cdots ;\mathbf{x}_p^N\mathbf{E} \right ]\mathbf{E}_{pos}z0​[xclass​;xp1​E;xp2​E;⋯;xpN​E]Epos​ 其中E∈R(P2⋅C)×D\mathbf{E}\in \mathbb{R}^{\left ( P^2\cdot C \right )\times D}E∈R(P2⋅C)×DEpos∈R(N1)×D\mathbf{E}_{pos}\in \mathbb{R}^{\left ( N1 \right )\times D}Epos​∈R(N1)×D。首先对于第iii个patch我们看到xpiE\mathbf{x}_p^i\mathbf{E}xpi​E是将patch转换成DDD维的向量具体过程如下 这里的卷积操作中卷积核大小为P×PP\times PP×P步长为PPP。参考文献[6]给出了较为容易理解的代码注释的代码如下 class PatchEmbed(nn.Module):2D Image to Patch Embeddingdef __init__(self, img_size224, patch_size16, in_c3, embed_dim768, norm_layerNone):super().__init__()img_size (img_size, img_size) # 图片原始大小patch_size (patch_size, patch_size) # 每个patch的大小self.img_size img_sizeself.patch_size patch_sizeself.grid_size (img_size[0] // patch_size[0], img_size[1] // patch_size[1]) # 拆分成每个patch后每个维度的patch个数self.num_patches self.grid_size[0] * self.grid_size[1] # 总共的patch个数self.proj nn.Conv2d(in_c, embed_dim, kernel_sizepatch_size, stridepatch_size) # 对每个patch做线性变换self.norm norm_layer(embed_dim) if norm_layer else nn.Identity() # 归一化def forward(self, x):B, C, H, W x.shapeassert H self.img_size[0] and W self.img_size[1], \fInput image size ({H}*{W}) doesnt match model ({self.img_size[0]}*{self.img_size[1]}).# flatten: [B, C, H, W] - [B, C, HW]# transpose: [B, C, HW] - [B, HW, C]x self.proj(x).flatten(2).transpose(1, 2) # 这里C即为向量的维度HW表示的是patch的个数x self.norm(x)return x除此之外还有两个向量分别为xclass\mathbf{x}_{class}xclass​和Epos\mathbf{E}_{pos}Epos​。xclass\mathbf{x}_{class}xclass​表示的给到一个用于最后图像表示的向量用于最后的分类任务Epos\mathbf{E}_{pos}Epos​表示的是位置向量这两个向量都是通过随机初始化的并在训练过程中得到的在参考文献[6]中的代码如下 self.cls_token nn.Parameter(torch.zeros(1, 1, embed_dim)) self.pos_embed nn.Parameter(torch.zeros(1, num_patches self.num_tokens, embed_dim))通过以上的过程后便可以直接使用标准的BERT流程开始训练这部分不再赘述可参见参考文献[5]和参考文献[6]的具体实现。 2.2.3. 训练目标以及fine-tune ViT的训练与BERT是不一样的在BERT中采用的无监督的训练而在ViT中使用的是监督训练使用的数据集是有标签的分类数据集如ILSVRC-2012 ImageNet数据集该数据集是一个包含了1000个类别的带标签的数据集。[class]标记的向量最初为z00xclass\mathbf{z}_0^0\mathbf{x}_{class}z00​xclass​在训练过程中通过Transformer Encoder得到[class]标记的最终向量为zL0\mathbf{z}_L^0zL0​对其进行归一化并以此作为图像的表示y\mathbf{y}y yLN(zL0)\mathbf{y}LN\left ( \mathbf{z}_L^0 \right )yLN(zL0​) 在训练过程中后接一个带一个隐含层的MLP得到整个网络的结构。在Fine-tuning时去掉最终的这部分直接用一个线性曾代替这部分重新训练。 在参考文献[4]中作者设计了不同大小的网络结构如下图所示 从最终的效果上来看ViT模型的效果还是要优于传统的基于CNN的模型的 2.2.4. 一个有意思的点 在上述的ViT的过程中位置的向量Epos\mathbf{E}_{pos}Epos​是随机初始化的那么最终训练出来的这个向量的值能表示其在原始图像中的真实位置吗在参考文献[4]中设计了这样一个方法假设有7×77\times 77×7个patch每个patch的位置向量与其他patch的位置向量计算相似度得到了如下的一张图其中自身的相似度为111。 我们发现最终训练出来的位置向量已经具有了空间了信息即与同行同列之间具有相对较高的相似度。 3. 总结 ViT模型将Transformer引入到图像的分类中更准确的说是Transformer中的Encoder模块。为了能够尽可能少地对原始模型的修改在ViT中将图像转换成一维的序列表示以改成标准的文本形式通过这种方式实现Transformer在CV中的应用。 参考文献 [1] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[J]. Advances in neural information processing systems, 2017, 30. [2] Devlin J , Chang M W , Lee K , et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding[J]. 2018. [3] Radford A, Narasimhan K, Salimans T, et al. Improving language understanding by generative pre-training[J]. 2018. [4] Dosovitskiy A, Beyer L, Kolesnikov A, et al. An image is worth 16x16 words: Transformers for image recognition at scale[J]. arXiv preprint arXiv:2010.11929, 2020. [5] Transformer的基本原理 [6] vision_transformer 代码
http://www.ho-use.cn/article/10812632.html

相关文章:

  • pc网站如何做spwordpress注册码系统
  • ps设计网站首页界面织梦网站后台管理教程
  • 南昌做网站哪家最好学校营销型网站建设
  • 照明网站建设wordpress寻模板
  • 一般网站隐蔽点么么进办公邮箱最常用的是什么邮箱
  • 黑龙江建设监理协会网站网站建设 保密
  • 福建建设厅安全员报名网站有了自己的网站怎么赚钱
  • 土特产网站平台建设网络营销公司取名字大全
  • html5手机网站调用微信分享苏州保洁公司诗雨
  • 魔方建站有哪些做任务网站
  • 视频网站开发前景手机模板网站生成制作软件
  • 买服务器的网站微信app下载安装官方版2023
  • 推广营销平台西安网站seo报价
  • 网站流量50g做网站在线支付系统多少钱
  • 婚纱网站论文农村电商平台网站设计思路有哪些
  • 山东手机响应式网站建设设计南昌中小企业网站制作
  • 苏州网站推广电话网络营销方式主要有哪些
  • 做钢化膜网站个人主页网页设计案例
  • 如何能进腾讯做游戏视频网站北京网站制作南昌
  • 网站推广四个阶段上海房产交易中心官网
  • 网站设计好学吗专业网站建设 公司排名
  • wordpress 知名网站产品推广公司
  • 桂林景区网站建设策划方案网站建设商城网站
  • 平台类网站有哪些免费注册网站云空间
  • 绵阳集团网站建设什么是网络推广营销
  • html网站开发心得体会中国菲律宾足球
  • 如何用front怕个做网站怎么做盗版电影网站
  • 南京科技网站设计费用wordpress修改我要注册链接
  • 东莞网站优化排名网站建设咨询客户话术
  • 龙华网站建设方案咨询深圳外贸公司招聘信息