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

【自然语言处理六-最重要的模型-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-下

相关文章:

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

自然语言处理六-最重要的模型-transformer-上 什么是transformer模型transformer 模型在自然语言处理领域的应用transformer 架构encoderinput处理部分(词嵌入和postional encoding)attention部分addNorm Feedforward & add && NormFeedforw…...

开发一个带有Servlet的webapp(重点)

【具体步骤如下】 ①在webapps目录下新建一个目录,起名crm(这个crm就是webapp的名字)。当然,也可以是其他目录,名字自拟 注意:crm就是这个webapp的根 ②在webapp的根下新建一个目录:WEB…...

根据xlsx文件第一列的网址爬虫

seleniumXpath 在与该ipynb文件同文件下新增一个111.xlsx,第一列放一堆需要爬虫的同样式网页 然后使用seleniumXpath爬虫 from selenium import webdriver from selenium.webdriver.common.by import By import openpyxl import timedef crawl_data(driver, url)…...

【Linux】 yum —— Linux 的软件包管理器

Linux 的软件包管理器 yum yum 是什么什么是软件包查看软件包 yum 命令行工具yum 配置文件yum 凭什么可以支持下载呢?yum 生态yum 社区yum 的故障排除和资源支持yum 的持续集成和持续交付 yum 是什么 Yum(Yellowdog Updater Modified)是一个…...

函数柯里化(function currying)及部分求值

函数柯里化(function currying) currying又称部分求值。一个currying的函数首先会接受一些参数,接受了这些参数之后,该函数并不会立即求值,而是继续返回另外一个函数,刚才传入的参数在函数形成的闭包中被保…...

R语言简介、环境与基础语法及注释

R语言是一种功能强大的开源统计分析语言和编程环境。它提供了丰富的数据处理、数据可视化和统计分析函数,适用于各种数据分析和建模任务。 R语言的环境主要包括R编程环境和RStudio集成开发环境(IDE)。R编程环境是R语言的核心,它提…...

React报错 之 Objects are not valid as a React child

原文链接: 1、React报错之Objects are not valid as a React child 2、Objects are not valid as a React child error [Solved] 作者:Borislav Hadzhiev 以下文中涉及到的链接均来自于该作者,他写了很多相关的文章,可以多看看他的…...

看一看阿里云,如何把抽象云概念,用可视化表达出来。

云数据库RDS_关系型数据库 云数据库RDS_关系型数据库 专有宿主机 云数据库RDS_关系型数据库_MySQL源码优化版 内容协作平台CCP-企业网盘协同办公-文件实时共享...

软考笔记--系统架构评估

系统架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策。它利用数据或逻辑分析技术,针对系统的一致性,正确性,质量属性,规划结果等不同方面,提供描述性,预测性和指令性的分析结果…...

AI产品摄影丨香水

AI电商产品拍摄丨(可指定产品) 均为概念图 可换产品 可指定产品,可换logo 工具:StartAI 搭配“手机摄影”风格使用效果更佳哦 咒语:anha perfume in bottle on stone surface, in the style of everyday american…...

Linux系统——tee命令

目录 一、命令简介 二、命令使用 1.命令帮助 2.查看块设备列表并记录到文件存档 3.重复多次标准输入内容 4.将文件复制多份 5.静默输出到文件 6.使用追加方式写入文件 7.将错误信息也输出到文件 8.直接通过键盘往文件输入 9.参数使用案例 三、选项 一、命令简介 t…...

Java agent技术的注入利用与避坑点

什么是Java agent技术? Java代理(Java agent)是一种Java技术,它允许开发人员在运行时以某种方式修改或增强Java应用程序的行为。Java代理通过在Java虚拟机(JVM)启动时以"代理"(agent…...

Linux每日练习

第一部分 1.打开桌面的主文件夹,在图片文件夹下新建一个名为111的文件夹,在视频文件夹下创建一个名为222的文件夹 [rootxcz7 desk]# mkdir -p ./pic/111 [rootxcz7 desk]# mkdir -p ./video/2222.在桌面打开终端,先切换到根目录下&#xff…...

【Python】6. 基础语法(4) -- 列表+元组+字典篇

列表和元组 列表是什么, 元组是什么 编程中, 经常需要使用变量, 来保存/表示数据. 如果代码中需要表示的数据个数比较少, 我们直接创建多个变量即可. num1 10 num2 20 num3 30 ......但是有的时候, 代码中需要表示的数据特别多, 甚至也不知道要表示多少个数据. 这个时候,…...

【C++庖丁解牛】C++内存管理 | new和delete的使用以及使用原理

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1. C/C内存分布2. C语…...

go调用 c++中数组指针相关

要在Go语言中调用C编译的DLL(动态链接库)并传递数组,你需要遵循以下步骤: 编写C代码:首先,你需要有一个C的DLL,它提供了你想要在Go中调用的函数。为了确保Go可以调用它,你需要使用C…...

NTFS Disk by Omi NTFS for mac v1.1.4中文版

NTFS Disk by Omi NTFS for Mac:NTFS文件系统的无缝桥梁 软件下载:NTFS Disk by Omi NTFS for mac v1.1.4中文版 🌐 跨平台访问,文件无阻 NTFS Disk by Omi NTFS for Mac 为您的Mac提供了对NTFS文件系统的无缝访问。无论您是在Win…...

Arduino应用开发——使用GUI-Guider制作LVGL UI并导入ESP32运行

Arduino应用开发——使用GUI-Guider制作LVGL UI并导入ESP32运行 目录 Arduino应用开发——使用GUI-Guider制作LVGL UI并导入ESP32运行前言1 使用GUI-Guider设计UI1.1 创建工程1.2 设计UI 2 ESP工程导入UI2.1 移植LVGL2.2 移植UI文件2.3 调用UI文件2.4 烧录测试 结束语 前言 GU…...

前端WebRTC局域网1V1视频通话

基本概念 WebRTC(Web Real-Time Communications) 网络实时通讯,它允许网络应用或者站点,在不借助中间媒介的情况下,建立点对点(Peer-to-Peer)的连接,实现视频流和音频流或者其他任…...

设计模式之构建者模式

构建者模式(Builder) 定义 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示 使用场景 主要角色 产品 Product建造者接口 Builder具体的建造者 Concrete Builder指挥者 Director:组织构建过程 示例代码 Data p…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...