ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

词袋模型和transformer模型

2021-07-22 18:03:39  阅读:255  来源: 互联网

标签:transformer 模型 词袋 构建 句子 向量


二者简介

词袋模型

词袋模型(Bag-of-Words model,BOW)BoW(Bag of Words)词袋模型最初被用在文本分类中,将文档表示成特征矢量。它的基本思想是假定对于一个文本,忽略其词序和语法、句法,仅仅将其看做是一些词汇的集合,而文本中的每个词汇都是独立的。

transformer模型

被学界视为代替CNN等卷积模型的东西,可以通过输入->张量变换->输出,实现词袋模型句子识别的功能。且论文发表时是用的法语到英语的一对一翻译的应用。故拿来作比较。

二者原理

词袋模型

例如三个句子如下:

句子1:小孩喜欢吃零食。
句子2:小孩喜欢玩游戏,不喜欢运动。
句子3 :大人不喜欢吃零食,喜欢运动。

我们根据每个词出现的先后顺序,建立词袋

{“小孩”:1,“喜欢”:2,“吃”:3,“零食”:4,“玩”:5,“游戏”:6,“大人”:7,“不”:8,“运动”:9}

其中keys为词,values为词的索引,预料中共有9个单词, 那么每个文本我们就可以使用一个9维的向量queries来表示。
将以上词袋每个词对应位置出现的次数,作为这个位置的值,可以构建每句话,那么上述文本可以表示为:

句子1:[1,1,1,1,0,0,0,0,0]
句子2:[1,2,0,0,1,1,0,1,1]
句子3:[0,2,1,1,0,0,1,1,1]

通过计算向量的余弦距离/汉明距离(两个句子向量二进制位数是否相等,1-9不等的累计+1)来计算两个文本间的相似度,便可得到相应的是否是同一个句子

transformer模型

同样的我们还是可以以上述的句子和词袋为模型,构建我们的transformer模型,其中q、v、k和词袋模型对应的一样,w为权值矩阵,唯一不同是,我们在词袋模型中构建的是单词为基础的模型,transformer构建的字母为基础的模型

如上图,我们输入TinKing 和Machines然后我们将其转换为一个张量(为了适应更高维的数据(通道*矩阵等等),矩阵为二维张量)下图为一三维矩阵

继续正题,然后我们就可以得到q、v、k三个向量,在对其进行一系列变换(trick 计算score=q*k, 再对score进行归一化,对归一化的score进行激活,然后再点乘v向量,相加得到最后的z

上图为全部过程的总览。算的的z我们叫做Attention
对多个句子可以计算得到一个整体的Attention

Transformer模型也没有捕捉顺序序列得功能,论文中在编码词向量时引入了位置编码(Position Embedding)的特征。具体地说,位置编码会在词向量中加入了单词的位置信息,这样Transformer就能区分不同位置的单词了。

拓展

SLAM应用

众所周知,词袋模型可以训练角点并在周围根据规则选取周围点,用这些角点特征构建词袋模型,这样可以记录历史帧的词袋向量,根据汉明距离计算二者是否相似,从而进行回环检测,这种transformer加入了序列信息,从而应该能更好的描绘两帧之间的相似度。可以用来做回环检测。

深度学习的应用

在深度学习上,拿各种输入构建相应的transformer/词袋模型,然后转换为tensor模式,用标准值/标注值构建残差,可以训得推理模型,进而构建深度学习框架。

参考

主要是参考了知乎文章

标签:transformer,模型,词袋,构建,句子,向量
来源: https://www.cnblogs.com/chenlinchong/p/15045434.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有