浅谈wor2vec,RNN,LSTM,Transfermer之间的关系

2023-10-08 18:15

本文主要是介绍浅谈wor2vec,RNN,LSTM,Transfermer之间的关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

浅谈wor2vec,RNN,LSTM,Transfermer之间的关系

今天博主谈一谈wor2vec,RNN,LSTM,Transfermer这些方法之间的关系。

首先,我先做一个定位,其实Transfermer是RNN,LSTM,和word2vec的一种“提升版”。这里的提升并不是说他们是一种迭代版本,而是说Transfermer它解决了RNN,LSTM,和word2vec的一些缺点。

下面我们先说一下RNN,LSTM,和word2vec主要i的缺点。
下面是RNN的模型示意图。我们可以很显然的发现,RNN在做一些任务的时候,是一个个的输入一个句子的单词,这样的计算方式,会导致忽略句子内单词之间的内在联系。虽然RNN,和LSTM有这种记忆,可以记忆之前句子留下来的信息,但是这种单向不并行计算方式,还是很大程度上不能考虑句子单词之间的内在联系。
在这里插入图片描述

同样word2vec其实也是如此,word2vec生成的词向量是固定的,这很大的限制了词向量的灵活性、表达能力。同时,我们知道word2vec其实只是从集合的角度去考虑句子内单词之间的联系,没有考虑单词间位置的关系。而且不能根据特定任务去灵活的发挥词向量的表达能力。

所以这两类模型的问题,渐渐的使得研究者去思考更好的模型,transfermer也因此诞生。

在transfermer论文中,作者说过,其实transfermer很大程度上是为了解决长句子的句子间因为有些词语距离太远,当时的很多模型不能很好的去学习词语间的联系这一问题。

transfermer则可以较好的解决这一问题。

那么对于transfermer 其自注意力机制,很特别的一个地方,就是对于一个句子,先对词向量进行一次提取,每一个词语先经过一个V矩阵进行一次提取。然后呢,其再用一个Q矩阵个一个K矩阵对x进行两次信息提取,提取完之后,得到的 q向量和k向量乘积作为V矩阵提取信息的权值。所以,其充分利用了神经网络的强大表征能力。但是也存在冒险,在学习的时候,神经网络需要自己知道Q K矩阵是为了权值而学习的,而V矩阵则是对数据进行最后的信息提取而学习的。我们可以给与transfermer更多的提示,让其对于这三个矩阵的学习更加具有目的性,这样或许可以更好的提升transfermer的学习能力,否则直接让其再目标函数的驱动下去学习这三个矩阵,目的性较弱,且会局限于数据初始化。

这篇关于浅谈wor2vec,RNN,LSTM,Transfermer之间的关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/167122

相关文章

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

java中新生代和老生代的关系说明

《java中新生代和老生代的关系说明》:本文主要介绍java中新生代和老生代的关系说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、内存区域划分新生代老年代二、对象生命周期与晋升流程三、新生代与老年代的协作机制1. 跨代引用处理2. 动态年龄判定3. 空间分

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

浅谈Redis Key 命名规范文档

《浅谈RedisKey命名规范文档》本文介绍了Redis键名命名规范,包括命名格式、具体规范、数据类型扩展命名、时间敏感型键名、规范总结以及实际应用示例,感兴趣的可以了解一下... 目录1. 命名格式格式模板:示例:2. 具体规范2.1 小写命名2.2 使用冒号分隔层级2.3 标识符命名3. 数据类型扩展命

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介