【自然语言处理六-最重要的模型-transformer-上】

自然语言处理六-最重要的模型-transformer-上

  • 什么是transformer模型
  • transformer 模型在自然语言处理领域的应用
  • transformer 架构
    • encoder
      • input处理部分(词嵌入和postional encoding)
      • attention部分
        • add
        • Norm
      • Feedforward & add && Norm
        • Feedforword,实际上就是两层全连接层,中间有激活函数等
        • add & Norm
      • 最终encoder的输出

什么是transformer模型

  • 它是编码器和解码器的架构,来处理一个序列对,这个跟seq2seq的架构是一样的。
    如果没接触过seq2seq架构,可以通俗的理解,编码器用来处理输入,解码器用来输出
  • 但与seq2seq的架构不同的是,transformer是纯基于注意力的
    之前花了几篇的篇幅讲注意力,也是在为后面讲解这个模型打基础。

transformer模型无疑是近几年最重要的模型,目前的大模型几乎都以它为基础发展,很多模型的名字都带有缩写T,正是transformer的缩写。
当然transfomer不仅仅用于自然语言处理领域,归集于自然语言处理模块下面来讲,是因为它在自然语言处理领域的应用非常广泛,下面就讲它的几种应用。

transformer 模型在自然语言处理领域的应用

编码器和解码器架构,比较擅长处理QA类的问题,但这个QA不仅仅是一个问题、一个答案的形式,许多的自然语言处理,都可以理解为QA类问题,比如:

  1. 真实的QA类问题。比如:机器人问答。
  2. 机器翻译。比如中英翻译
  3. 摘要提取。输入文章,提取摘要
  4. 情感分析。输入评价,输出正面/负面评价
    等等

下面来介绍transformer的架构,看什么样子的架构能实现上面的这些功能

transformer 架构

它出自经典论文《attention is all you need》,论文地址是: http://arxiv.org/abs/1706.03762,本文中的诸多图片都是取自该论文,下面的架构图也是出自论文

在这里插入图片描述
从上图就可以看出,transfomer的架构包括左边encoder和右边decoder,下面先来讲encoder部分

encoder

左侧的encoder部分,输入一排input vector向量,输出一排向量,忽略中间的细节来看,是如下的的架构:
在这里插入图片描述
中间encoer部分,如果是seq2seq架构,就是RNN,transformer就相对复杂一些:
下面分部分介绍encoder的各个部分:

input处理部分(词嵌入和postional encoding)

在这里插入图片描述
输入一排,经过词嵌入input Embedding,再加上位置信息,Postional Encoding (这部分可以在 位置编码有介绍),生成一排向量。
然后进入attention计算

attention部分

transformer最重要的attention部分,这部分是多头注意力。值得注意的是,这部分的输出并不会直接丢给全连接层,还需要在额外经过residual add和layer norm

add

add的操作:
执行residual 残差连接,将attention的输入加到self-attention后的输出

Norm

残差后的输出进行层归一化,层归一化的操作:
不考虑batch,将输入中同一个feature,同一个sample,不同的dimension 计算均值和标准差,然后如下计算
在这里插入图片描述
这个操作,用能听得懂的话翻译一下就是,是对每个样本里面的元素进行归一化
整个过程如下:
在这里插入图片描述
最终上述部分的输出作为全连接层的输入

Feedforward & add && Norm

上一部分的输出,输入到本部分

Feedforword,实际上就是两层全连接层,中间有激活函数等

在这里插入图片描述
当然中间的卷积,可以换成线性层Linear

经过这个全连接层的输出之后,依然要经过残差add 和层归一化norm,然后输出.

add & Norm

这部分 同attention 那一层的操作,此处不赘述

最终encoder的输出

在encoder中,上面这三个步骤是可以重复多次的,所以看到架构图中表示了*N操作。
最终的输出才是encoder的输出。

篇幅所限,下一篇文章继续 transformer的decoder部分 自然语言处理六-最重要的模型-transformer-下

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

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

相关文章

IDEA创建Sping项目只能勾选17和21,却无法使用Java8

报错信息 The required java version 17 is not supported by the project SDK 1.8.The maximum supported Java version is 8. 想创建一个springboot项目,本地安装jdk版本为1.8,但是在使用 Spring Initializr创建项目时,版本只能选择21或17,…

H3C 路由过滤路由引入实验

H3C 路由过滤&路由引入实验 实验拓扑 ​​ 实验需求 按照图示配置 IP 地址,R1,R3,R4 上使用 loopback 口模拟业务网段R1 和 R2 运行 RIPv2,R2,R3 和 R4 运行 OSPF,各自协议内部互通在 RIP 和 OSPF …

【促销定价】背后的算法技术3-数据挖掘分析

【促销定价】背后的算法技术3-数据挖掘分析 01 整体分析1)整体概览2)类别型特征概览3)数值型特征概览 02 聚合分析1)天维度2)品维度3)价格维度4)数量维度 03 相关分析1)1级品类2&…

从零开始学单片机,该怎么入门?

从零开始学单片机,该怎么入门? 在开始前我分享下我的经历,我刚入行时遇到一个好公司和师父,给了我机会,一年时间从3k薪资涨到18k的, 我师父给了一些 电气工程师学习方法和资料,让我不断提升自己…

jquery 后台返回的单选框按照两列展示

jquery代码 <!DOCTYPE html> <html><head><!-- <meta charset"GBK"> --><meta charset"UTF-8"><title></title></head><form><body><table id"myTable"> <tbody …

如何搭建Nacos集群

1.搭建Nacos集群 众所周知&#xff0c;在实际的工作中&#xff0c;Nacos的生成环境下一定要部署为集群状态 其中包含3个nacos节点&#xff0c;然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx。 我们计划的集群结构&#xff1a; 我就直接在本机上开三个Nacos来搭…

五、mysql 数据库体系结构

目录 MySQL体系结构 一、MySQL的Server层有七个组件 1、MySQL 向外提供的交互接口&#xff08;Connectors&#xff09; 2、连接池组件&#xff08;Connection Pool&#xff09; 3、管理服务组件和工具组件&#xff08;Management Service & Utilities&#xff09; 4、…

金三银四,程序员如何备战面试季

金三银四&#xff0c;程序员如何备战面试季 一个人简介二前言三面试技巧分享3.1 自我介绍 四技术问题回答4.1 团队协作经验展示 五职业规划建议5.1 短期目标5.2 中长期目标 六后记 一个人简介 &#x1f3d8;️&#x1f3d8;️个人主页&#xff1a;以山河作礼。 &#x1f396;️…

2张图2秒钟3D重建!这款AI工具火爆GitHub,网友:忘掉Sora

只需2张图片&#xff0c;无需测量任何额外数据—— 当当&#xff0c;一个完整的3D小熊就有了&#xff1a; 这个名为DUSt3R的新工具&#xff0c;火得一塌糊涂&#xff0c;才上线没多久就登上GitHub热榜第二。 ▲image 有网友实测&#xff0c;拍两张照片&#xff0c;真的就重建…

uniapp微信小程序获取当前位置

uni-app微信小程序uni.getLocation获取位置&#xff1b;authorize scope.userLocation需要在app.json中声明permission&#xff1b;小程序用户拒绝授权后重新授权-CSDN博客

详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法

集合的概念 当我们需要保存一组一样&#xff08;类型相同&#xff09;的元素的时候&#xff0c;我们应该使用一个容器来存储&#xff0c;数组就是这样一个容器。 ● 数组的特点&#xff1a; 数组是一组数据类型相同的元素集合&#xff1b; 创建数组时&#xff0c;必须给定…