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

【全面了解自然语言处理三大特征提取器】RNN(LSTM)、transformer(注意力机制)、CNN

目录

  • 一 、RNN
    • 1.RNN单个cell的结构
    • 2.RNN工作原理
    • 3.RNN优缺点
  • 二、LSTM
    • 1.LSTM单个cell的结构
    • 2. LSTM工作原理
  • 三、transformer
    • 1 Encoder
      • (1)position encoding
      • (2)multi-head-attention
      • (3)add&norm 残差链接和归一化
      • (4)feed forward & add&norm

自然语言处理(NLP)是人工智能领域中一个重要的分支,它的目的是让计算机能够理解和处理人类语言,而特征提取是让计算机理解和处理人类语言时必不可少的过程,除了数据的因素,一个特征抽取器是否适配问题领域的特点,有时候决定了它的成败,而很多模型改进的方向,其实就是改造得使得它更匹配领域问题的特性(引自张俊林老师的文章)。
下面本文从基本结构、工作原理、优缺点和适用场景具体介绍一下这三个主要的特征提取器

一 、RNN

循环神经网络或递归神经网络。顾名思义,RNN在处理序列信息时(比如一段文本)是递归进行,即下一时刻的处理依赖于上一时刻的结果。
即:不同于传统的神经网络结构,RNN隐藏层之间的节点不再无连接而是有连接的。

1.RNN单个cell的结构

参考

在这里插入图片描述
可以看到当前时刻的输出 y^t 和隐藏层状态 a^t 依赖于当前时刻的输入 x^t 和上一时刻的隐藏层状态 a^t-1

2.RNN工作原理

在这里插入图片描述

其中一个cell对应于RNN单个细胞的结构,对于上图中的文本翻译问题,输出接收最后一层每个时刻隐藏层的状态,但是对于分类问题,输出只接受最后一层最后一个时刻的隐藏层状态。

3.RNN优缺点

  • 优点:

    1. RNN能够有效地处理序列数据
    2. 由于权重共享,RNN在内存使用上比全连接网络高效
  • 缺点

    1. 梯度消失和梯度爆炸: 在学习长序列时,RNN容易遇到梯度消失或梯度爆炸的问题,这使得模型难以学习到长距离的依赖关系。
    2. 难以捕捉长期依赖: 尽管RNN理论上能够捕捉长期依赖关系,但在实际应用中,由于梯度问题,其性能往往受限。
    3. 并行计算受限: 由于RNN的序列特性,使得其在并行计算上受到限制,影响了训练速度。

二、LSTM

当输入的序列数据足够长,梯度在层之间进行反向传播时容易消失和爆炸,梯度消失会导致RNN会忘记之前学到的内容,而只能保存短时记忆,难以处理长期依赖问题,而梯度爆炸会使其计算量将呈指数级增长,给模型训练带来极大挑战。
为解决RNN梯度消失和难以捕捉长距离依赖问题,LSTM应运而生。传统RNN的做法是将的所有知识全部提取出来,不作任何处理的输入到下一个时间步进行迭代,LSTM的结构更类似于人类对于知识的记忆方式,通过引入细胞状态与三个门控机制来缓解了以上问题。

1.LSTM单个cell的结构

参考

在这里插入图片描述
其中,三个门控机制分别指遗忘门、输入门(图中的update gate)和输出门。除此之外,LSTM引入了一个细胞状态变量:c^t,用于记录每个门控机制发挥作用之后,该保留上文(反向LSTM就是下文)的多少信息。
三个门控机制都相当于是一个函数,该函数通过输入的x和输入的隐藏层状态a来不断更新参数,最后经过sigmoid层获得[0,1]之间的值,该值与细胞状态相乘,即实现了信息的遗忘或者保留。
细胞状态也是LSTM能够解决长依赖问题的关键,它能够保存上文中有价值的记忆。

2. LSTM工作原理

其中一个cell对应于LSTM单个细胞的结构,图中的h是隐藏状态,对应于上图中的a;c代表细胞状态。
在这里插入图片描述

三、transformer

RNN和LSTM在处理序列信息时,都是递归进行的,transformer则突破了这种限制。transformer是处理序列到序列问题的架构,单纯由self-attention组成,其优良的可并行性以及可观的表现提升,让它在NLP领域中大受欢迎,GPT-3以及BERT、ERNIE等都是基于Transformer实现的。

首先,一个transformer block有两个部分组成:encoder和decoder
在这里插入图片描述

1 Encoder

encoder,编码,主要是用来做特征提取。而能让Transformer效果好的,不仅仅是Self attention,这个Block里所有元素,包括Multi-head self attention,Skip connection,LayerNorm,FF一起在发挥作用,除此之外,position encoding也发挥了很大的作用。
下面来详细讲解一下各个流程。

(1)position encoding

讲position encoding之前,我们需要回顾一下RNN和LSTM对于文本的处理过程,由于他们都是递归的处理,所以天然的记忆了文本中字或者词语之间的顺序关系,而transformer由于是直接读取所有文字,并行处理,所以其丢失了文本的位置信息,也就是无法理解词语的前后关系。position encoding就是为了解决这个问题,在input_embedding的基础上,对文本的位置进行编码,保留位置信息。

需要注意的是,这里的位置信息属于相对位置信息,BERT里的position embedding属于绝对位置信息,因为在 BERT 中 Positional Embedding 并没有采用固定的变换公式来计算每个位置上的值,而是采用了类似普通 Embedding的方式来为每个位置生成一个向量,然后随着模型一起训练。因此,这一操作就限制了在使用预训练的中文 BERT模型时,最大的序列长度只能是512,因为在训练时只初始化了 512 个位置向量】。

在Transformer中,作者采用了如公式(1)所示的规则来生成各个维度的位置信息。
在这里插入图片描述
其中,PE就是代表position的编码表示,pos代表一行文本中单个文字的具体的某一个位置, i的取值范围是[0, dmodel/2]代表维度。

(2)multi-head-attention

之后input进入到多头注意力机制(transformer的核心)部分。多头注意力机制是self-attention即自注意力机制的变形,接下来首先讲一下自注意力机制。

可以将注意力机制归纳为两个过程:第一个过程是根据Query和Key计算权重系数,第二个过程根据权重系数对Value进行加权求和。而第一个过程又可以细分为两个阶段:第一个阶段根据Query和Key计算两者的相似性或者相关性;第二个阶段对第一阶段的原始分值进行归一化处理,公式如下。
在这里插入图片描述
具体过程如下图所示。
在这里插入图片描述

那么Query、Key和Value是怎么得到的呢,在自注意力机制中上述三个向量都来源于input本身,通过可学习的权重W^q 矩阵, W^k矩阵, W^v矩阵获得,所以自注意机制可以捕获一段文字内的各词语之间的语法特征关系。

而多头注意力机制相当于对同一段序列做了多次自注意力机制,其中每个头在不同的表示子空间中学习序列内的关系。 通过这种方式,模型能够同时从不同的角度捕捉信息,增强了模型的表示能力。
在这里插入图片描述

其长距离特征捕获能力主要受到Multi-Head数量的影响,Multi-Head的数量越多,Transformer的长距离特征捕获能力越强。

(3)add&norm 残差链接和归一化

主要有两个主要部分

  1. 一个残差链接,也叫skip-connection,把上一层的输入和上一层的输出相加,为了解决梯度消失问题。
  2. 第二个是层归一化,作用是把神经网络中隐藏层归一为标准正态分布,加速收敛。

(4)feed forward & add&norm

将上一个模块的输出经过relu激活函数,残差操作和归一化与(3)相同

相关文章:

【全面了解自然语言处理三大特征提取器】RNN(LSTM)、transformer(注意力机制)、CNN

目录 一 、RNN1.RNN单个cell的结构2.RNN工作原理3.RNN优缺点 二、LSTM1.LSTM单个cell的结构2. LSTM工作原理 三、transformer1 Encoder(1)position encoding(2)multi-head-attention(3)add&norm 残差链…...

区块链推广海外市场怎么做,CloudNEO服务商免费为您定制个性化营销方案

随着区块链技术的不断发展和应用场景的扩大,区块链项目希望能够进入海外市场并取得成功已成为越来越多公司的目标之一。然而,要在海外市场推广区块链项目,需要采取有效的营销策略和措施。作为您的区块链项目营销服务商,CloudNEO将…...

【S5PV210】 | ARM的指令集合

【S5PV210】 | ARM的指令集合 时间:2024年3月17日23:32:06 目录 文章目录 【S5PV210】 | ARM的指令集合目录 ARM指令集具有一系列显著的特点。首先,它属于RISC(精简指令集计算机)架构,这意味着译码机制相对简单。在AR…...

2024-3-17Go语言入门

在Go语言中: var a chan int 定义了一个名为 a 的变量,其类型为 chan int。这意味着 a 是一个整型值的通道(channel)。通道是Go语言中用于goroutine之间通信的一种机制,你可以通过通道发送和接收特定类型的值。在这个例…...

AJAX-XMLHttpRequest

XMLHttpRequest 定义: XMLHttpRequest对象用于与服务器交互。通过XMLHttpRequest可以在不断刷新页面的情况下请求特定URL,获取数据。这允许网页在不影响用户操作的情况下,更新页面的局部内容。 关系: axios内部采用XMLHttpReques…...

【GPT-SOVITS-04】SOVITS 模块-鉴别模型解析

说明:该系列文章从本人知乎账号迁入,主要原因是知乎图片附件过于模糊。 知乎专栏地址: 语音生成专栏 系列文章地址: 【GPT-SOVITS-01】源码梳理 【GPT-SOVITS-02】GPT模块解析 【GPT-SOVITS-03】SOVITS 模块-生成模型解析 【G…...

论文阅读_时序模型_iTransformer

1 2 3 4 5 6 7 8英文名称: ITRANSFORMER: INVERTED TRANSFORMERS ARE EFFECTIVE FOR TIME SERIES FORECASTING 中文名称: ITRANSFORMER:倒置Transformers在时间序列预测中的有效性 链接: https://openreview.net/forum?idX6ZmOsTYVs 代码: https://github.com/thum…...

Docker 哲学 - 容器操作 -cp

1、拷贝 容器绑定的 volume的 数据,到指定目录 2、匿名挂载 volume 只定义一个数据咋在容器内的path,docker自动生成一个 sha256 的key作为 volume 名字。这个 sha256 跟 commitID 一致都是唯一的所以 ,docker利用这个机制,可以…...

作品展示ETL

1、ETL 作业定义、作业导入、控件拖拽、执行、监控、稽核、告警、报告导出、定时设定 欧洲某国电信系统数据割接作业定义中文页面(作业顶层,可切英文,按F1弹当前页面帮助) 涉及文件拆分、文件到mysql、库到库、数据清洗、数据转…...

python的集合应用

在Python中,集合是一种无序、可变的数据类型,用于存储不重复的元素。Python提供了内置的集合类型 set,以及 frozenset(不可变的集合)。以下是一些Python集合的常见应用场景: 去重: 集合是存储唯…...

盒子IM开源仿微信聊天程序源码,可以商用

安装教程 1.安装运行环境 安装node:v14.16.0安装jdk:1.8安装maven:3.6.3安装mysql:5.7,密码分别为root/root,运行sql脚本(脚本在im-platfrom的resources/db目录)安装redis:5.0安装minio,命令端口使用9001,并创建一个名为”box-im”的bucket&#xff0c…...

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Web)中篇

onBeforeUnload onBeforeUnload(callback: (event?: { url: string; message: string; result: JsResult }) > boolean) 刷新或关闭场景下,在即将离开当前页面时触发此回调。刷新或关闭当前页面应先通过点击等方式获取焦点,才会触发此回调。 参数…...

静默安装OGG21.3微服务版本FOR ORACLE版本

静默安装OGG21.3微服务版本FOR ORACLE版本 silent install ogg21.3 for oracle 某度找来找去都没有找到一份可靠的静默安装OGG21.3微服务版本的案例,特别难受,为此将自己静默安装的步骤一步步贴出来分享给大家,请指点,谢谢。 至…...

[二分查找]LeetCode2040:两个有序数组的第 K 小乘积

本文涉及的基础知识点 二分查找算法合集 题目 给你两个 从小到大排好序 且下标从 0 开始的整数数组 nums1 和 nums2 以及一个整数 k &#xff0c;请你返回第 k &#xff08;从 1 开始编号&#xff09;小的 nums1[i] * nums2[j] 的乘积&#xff0c;其中 0 < i < nums1.…...

【Godot4.2】颜色完全使用手册

概述 本篇简单汇总Godot中的颜色的构造和使用&#xff0c;内容包括了&#xff1a; RGB、RGBA&#xff0c;HSV以及HTML16进制颜色值、颜色常量等形式构造颜色颜色的运算以及取反、插值用类型化数组、紧缩数组或PNG图片形式存储多个颜色 构造颜色 因为颜色是一种视觉元素&…...

Blocks —— 《Objective-C高级编程 iOS与OS X多线程和内存管理》

目录 Blocks概要什么是BlocksOC转C方法关于几种变量的特点 Blocks模式Block语法Block类型 变量截获局部变量值__block说明符截获的局部变量 Blocks的实现Block的实质 Blocks概要 什么是Blocks Blocks是C语言的扩充功能&#xff0c;即带有局部变量的匿名函数。 顾名思义&#x…...

Python零基础---爬虫技术相关

python 爬虫技术&#xff0c;关于数据相关的拆解&#xff1a; 1.对页面结构的拆解 2.数据包的分析&#xff08;是否加密了参数&#xff09;&#xff08;Md5 aes&#xff09;难易程度&#xff0c;价格 3.对接客户(433,334) # 数据库 CSV 4.结单&#xff08;发一部分数据&a…...

利用 STM32 TIMER 触发 ADC 实现分组转换

1、问题描述 使用 STM32G4 系列芯片开发产品&#xff0c;用到其中一个 ADC 模块的多个通道&#xff0c;他希望使 用 TIMER 来定时触发这几个通道的转换。不过他有两点疑惑。第一&#xff0c;他期望定时器触发这几个 通道是每触发一次则只转换一个通道&#xff0c;这样依次触发…...

2024 年(第 12 届)“泰迪杯”数据挖掘挑战赛——B 题:基于多模态特征融合的图像文本检索完整思路与源代码分享

一、问题背景 随着近年来智能终端设备和多媒体社交网络平台的飞速发展&#xff0c;多媒体数据呈现海量增长 的趋势&#xff0c;使当今主流的社交网络平台充斥着海量的文本、图像等多模态媒体数据&#xff0c;也使得人 们对不同模态数据之间互相检索的需求不断增加。有效的信…...

Java12~14 switch语法

JDK8以后的语法没学习了&#xff0c;现在时代发展这么快&#xff0c;所以得加紧时间学习了。JDK12只有一个特性就是switch语法&#xff0c;算是比较容易学习的一个版本吧。总体来说就是三部分内容。具体内容可以看JEP-325的内容。 箭头语法 每个case可以放箭头了。以下是一个例…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...