NLP(1)--NLP基础与自注意力机制

news2024/12/28 20:31:59

目录

一、词向量

1、概述

2、向量表示

二、词向量离散表示

1、one-hot

2、Bag of words

3、TF-IDF表示

4、Bi-gram和N-gram

三、词向量分布式表示

1、Skip-Gram表示

2、CBOW表示 

四、RNN

五、Seq2Seq

 六、自注意力机制

1、注意力机制和自注意力机制

2、单个输出

3、矩阵计算

4、multi-head self-attention     

5、positional encoding


一、词向量

1、概述

        在自然语言处理中,用词向量表示一个词,将词映射为向量的形式。

        词向量:又叫Word嵌入式自然语言处理中的一组语言建模和特征学习技术的统称,其中来自词汇表的单词或短语被映射到实数的向量。

2、向量表示

        词向量可以有两种表示方法:dispersed representation和distribution representation

        dispersed representation:离散表示,一般使用one-hot独热编码。

        distribution representation:分布式表示,词嵌入就是分布式表示的形式,可以将一个词通过嵌入空间(embedding)映射为一个定长,稠密且存在语义关系的高维向量,这样可以保证语义接近的词之间的向量相似度较高。

二、词向量离散表示

1、one-hot

        one-hot:就是独热编码,将一句话中的每个词都对应一个独热编码,如“我爱学习人工智能”,编码后为:

        “我”:[1,0,0,0]

        “爱”:[0,1,0,0]

        “学习”:[0,0,1,0]

        “人工智能”:[0,0,0,1]

        独热编码存在问题:缺少词与词之间的关系,由于单词量巨大而产生的维度爆炸和词向量稀疏。

2、Bag of words

        将每个单词在语料库中出现的次数加到one-hot编码中。

        存在问题:仍没有解决词与词之间关系问题和维度爆炸问题,单词顺序也没有考虑。

3、TF-IDF表示

        将罕见的单词加上高权重,常见的加上低权重,其实跟上面一种方法类似。

        Weight=log(1+\frac{N}{n_t})

        上述公式中,N为文档总数,n_t表示词t的文档数。

        存在问题:同上

4、Bi-gram和N-gram

        将两个单词再次组成单词表,或多个单词组成单词表。

        存在问题:仍没有解决词义关系问题。

三、词向量分布式表示

       一般以Word2Vec作为分布式表示的示例。

        Word2Vec:从大量文本中以无监督学习方式训练语义知识的模型,通过学习文本来用词向量的方式表征词的语义信息,也就是在嵌入空间中两个词的空间距离近,则相似度更高。

1、Skip-Gram表示

        通过中心词预测上下文词,在中心词已知情况下,预测上下文词出现概率

2、CBOW表示 

        通过上下文词,推理中心词,预测中心词出现的概率。在具体实现中,会使用滑动窗口的方式,读取上下文的词,来计算输出的中心词的极大似然值,训练输出词与真实中心词的相关性,利用梯度下降来进行迭代训练。

四、RNN

        RNN:循环神经网络,指在全连接神经网络的基础上增加了前后时序上的关系。RNN的目的是用来处理序列数据,通过在网络中引入循环连接,使得RNN可以记忆之前的信息,并用于当前的输入。

        RNN结构:输入层+隐藏层+输出层。RNN结构中的隐藏层,会在每个时间点进行更新,作为网络对序列数据的内部表示,也会收到当前输入和之前隐藏层的影响。

        RNN的优点:适用于处理序列数据,具有记忆能力,可以处理变长序列数据。

        RNN的缺点:处理长期依赖性问题时,容易产生梯度消失或梯度爆炸问题。由于每个时间点都要进行计算隐藏层和输出,计算效率过低,在长序列数据中会面临资源爆炸问题。

        如何解决梯度消失:合理的初始化权重,保证避免梯度消失(有点好笑了),使用ReLU函数作为激活函数,使用LSTM等新型结构。

五、Seq2Seq

        Seq2Seq:序列到序列模型,根据给定的序列,通过特定的生成方法生成另一个序列的方法,这两个序列可以不等长。这种结构又叫做Encoder-Decoder模型(编码-解码模型),也可以称为RNN的一个变种,解决了RNN序列等长的问题。

        Seq2Seq由三部分构成,Encoder编码器,语义编码c,Decoder解码器构成,编码器通过学习将输入序列编码成一个固定大小的向量c,解码器通过对c的学习进行输出。一般来说编码器和解码器都会代表一个RNN,如LSTM或GRU。(也有一般的RNN模型)

         另外另一种方式下,语义编码c将参加解码的每一个过程,而不是只作为初始化参数。

 六、自注意力机制

1、注意力机制和自注意力机制

        传统注意力机制发生在Target元素和Source元素的所有元素中,权重的计算需要Target来参与。

        自注意力机制存在于输入语句内部元素之间或者输出语句内部元素之间,计算权重时也不需要Target来参与。

2、单个输出

        对于每一个输入向量a1,经过self-attention后都会输出一个向量b1,而这个b1是考虑了所有的输入向量a1,a2,...对a1产生的作用才得到的。首先我们将计算两个输入向量之间的α也就是相关性。

        下图中两个绿框,可以代表任意两个输入,比如a1和a2,左侧方法为,a1经过一个W^q矩阵得到q(乘积运算),a2经过一个W^k矩阵得到k(乘积运算),将q和k做内积运算得到\alpha_{1,2},也就是图中的α。右侧方法为,a1经过一个W^q矩阵得到q,a2经过一个W^k矩阵得到k,将q和k做concat运算后投射到tanh激活函数,在与W矩阵(权重矩阵)做一次乘积得到\alpha _{1,2}

        接下来的操作计算每一个相关性α,下图中为\alpha_{1,1},\alpha_{1,2}\alpha_{1,3},\alpha_{1,4}

        几个注意点:W^q,W^k,W^v都是超参数,是输入进去的,通过与不同的a进行乘积运算得到的q^i,k^i,v^i也是不同的。

        将\alpha_{1,1},\alpha_{1,2}\alpha_{1,3},\alpha_{1,4}放入softmax中进行归一化处理,获得\alpha'_{1,1},\alpha'_{1,2}\alpha'_{1,3},\alpha'_{1,4},softmax的数学公式如下图右上角。

          最后将每一个a^i乘以矩阵W^v得到v^i,v^i再与α进行相乘,将每一个相乘后的值相加求和,得到输出的b。b的计算公式如下图的右上角。        

3、矩阵计算

        首先可以将一个序列sequence的每一个a都进行concat这样形成了一个矩阵I,分别与W^q,W^k,W^v进行矩阵乘法,就可以得到相应的q,k,v。      

        再将生成的每一个q和每一个k分别在x轴和y轴进行concat,形成Q和K^T(K的转置),K^T与Q进行矩阵乘法,就得到了A(也就是所有α所构成的二维矩阵),经过softmax就得到了A'(α'所构成的二维矩阵)

        第三步,将每一个v进行concat操作得到V,将V与A'做矩阵乘法,就得到了O(b进行concat构成的矩阵) 

        ​​​​​​​​​​​​​​

 

        整体来看,就是下图这样的一个矩阵运算操作。

4、multi-head self-attention     

        多头自注意力机制,由于相关性可能有不同的形式,有不同的定义,所以可以有多个q,k,v来表示多种类型的相关性,也就是在超参数W^{q}中存在W^{q,1}   ​​​​​​,W^{q,2},...。对应的k,v也有多个。

        计算每一个b^{i}的方式如下,最后需要对多个b^{i,j}进行y轴方向的concat,也就是b^T,将b^T乘上权重矩阵W,得到b^i

5、positional encoding

        对于训练self-attention时,存在位置信息缺失的问题,位置信息引入到训练数据中,所以我们可以在Self-attention中加入位置信息。

        通过设置一个新的positional vector,用e^i表示,对于不同的a^i处都有一个e^i体现位置信息,vector的长度时人为规定,也可以通过大量数据训练出适合数据的vector。

参考视频:

37.39、 自注意力机制P37_哔哩哔哩_bil​​​​​​ibili

3-注意力机制的作用_哔哩哔哩_bilibili

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jQuery成功之路——jQuery事件和插件概述

一、jQuery的事件 1.1常用事件 jQuery绑定事件,事件名字没有on。 事件名称事件说明blur事件源失去焦点click单击事件源change内容改变keydown接受键盘上的所有键(键盘按下)keypress接受键盘上的部分键(ctrl,alt,shift等无效)(键盘按下)key…

【数据结构练习】栈的面试题集锦

目录 前言: 1.进栈过程中可以出栈的选择题 2.将递归转化为循环 3.逆波兰表达式求值 4.有效的括号 5. 栈的压入、弹出序列 6. 最小栈 前言: 数据结构想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题&#x…

动态规划:路径和子数组问题(C++)

动态规划:路径和子数组问题 路径问题1.不同路径(中等)2.不同路径II(中等)3.下降路径最⼩和(中等)4.地下城游戏(困难) 子数组问题1.最大子数组和(中等&#xf…

【Java】关于JDK 8的HashMap

文章目录 HashMap 简介数据结构Hash构造方法get(key)方法步骤一:通过key获取所在桶的第一个元素是否存在步骤二:该节点的hash和key是否与要查询的hash和key匹配步骤三:当对应桶中不止一个节点时,根据不同节点类型查询 put(key,value)为什么树化&#xff…

4.正则提取html中的img标签的src内容

我们以百度贴吧的1吧举例 目录 1 把网页搞下来 2 收集url 3 处理url 4 空的src 5 容错 6 不使用数字作为文件名 7 并不是所有的图片都用img标签表示 8 img标签中src请求下来不一定正确 9 分页 1 把网页搞下来 搞下来之后,双击打开是这样的 2 收…

leetcode 143. 重排链表

2023.9.5 先将链表中的节点存储到数组中,再利用双指针重新构造符合条件的链表。代码如下: /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNod…

java八股文面试[数据库]——Page页的结构

mysql中数据是存储在物理磁盘上的,而真正的数据处理又是在内存中执行的。由于磁盘的读写速度非常慢,如果每次操作都对磁盘进行频繁读写的话,那么性能一定非常差。为了上述问题,InnoDB将数据划分为若干页,以页作为磁盘与…

了解下iVX,它可能会刷新你对传统软件开发的认知!

知识目录 前言一、聊聊传统编程语言二、iVX的诞生三、iVX VS 传统编程语言3.1 图形化 vs 文本化3.2 逻辑与语法的解耦3.3 组件与库3.4 编译与代码生成3.5 IDE与语言设计的整合3.6 面向群体3.7 灵活性与便利性 四、iVX提供多样模板,快来 ~五、iVX VS 其他低代码平台结…

面试中的自我介绍:首印象决定一切

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

MES系统来料检验:优化制造业质量控制

一、MES系统来料检验的定义: MES系统来料检验是指制造执行系统中的质量管理模块,用于对供应商提供的原材料和零部件进行质量检查和验证。该模块涵盖了来料质量数据的采集、分析、报告和追溯等功能,以确保来料符合质量要求,并提供…

【web知识清单】你想要的都有:网络、HTTP、会话保持、认证授权......持续更新中

作者简介: 目录 1.网络 2.HTTP 2.1.报文结构 2.1.1.请求报文 2.1.2.响应报文 2.2.方法 2.3.HTTPS 2.4.跨域 3.会话保持 3.1.概述 3.2.cookie 3.3.session 4.认证授权 4.1.Token 4.2.JWT 4.3.oauth 1.网络 计算机网络: 计算机网络&…

Lesson4-1:OpenCV图像特征提取与描述---角点特征

学习目标 理解图像的特征知道图像的角点 1 图像的特征 大多数人都玩过拼图游戏。首先拿到完整图像的碎片,然后把这些碎片以正确的方式排列起来从而重建这幅图像。如果把拼图游戏的原理写成计算机程序,那计算机就也会玩拼图游戏了。 在拼图时&#xff…

Problem: 205. 同构字符串;力扣;python

题目描述 代码展示 # class Solution: # def isIsomorphic(self, s: str, t: str) -> bool: # dict {} # flag 0 # for i in range(len(s)): # #记录,s # if s[i] not in dict.keys(): # …

【真题解析】系统集成项目管理工程师 2023 年上半年真题卷(综合知识)

本文为系统集成项目管理工程师考试(软考) 2023 年上半年真题(全国卷),包含答案与详细解析。考试共分为两科,成绩均 ≥45 即可通过考试: 综合知识(选择题 75 道,75分)案例分析(问答题 4 道,75分)综合知识(选择题*75)1-10 题11-20 题21-30 题31-40 题41-50 题51-60 …

让GPT成为您的科研加速器丨GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图

GPT对于每个科研人员已经成为不可或缺的辅助工具,不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域:1、编程建议和示例代码:无论你使用的编程语言是Python、R、MATLAB还是其他语言,都可以为你提供相关的代码示例。​2、数据可视化…

vs code调试rust乱码问题解决方案

在terminal中 用chcp 65001 修改一下字符集,就行了。有的博主推荐 修改 区域中的设置,这会引来很大的问题。千万不要修改如下设置:

宁德时代龙头,比亚迪榜眼:1-7 月全球电动汽车电池市场份额公布

根据SNE Search公布的数据显示,今年1-7月全球电动汽车电池的消费总量为362.9 千兆瓦时(GWh),比去年同期的243.2 千兆瓦时(GWh)增长了49.2%。这表明电动汽车市场的增长势头依然强劲。 在这些数据中&#xff…

QuantLib学习笔记——InterestRate的应用

⭐️ 单利还是复利 巴菲特老爷子有句名言:“人生就像滚雪球,重要的是发现很湿的雪和很长的坡。” 很湿的雪,指的就是复利。很长的坡,指的就是时间。很湿的雪和很长的坡组合起来,就能滚成巨大的雪球。 哈哈&#xff0…

南京市玄武区委常委、组织部部长任宁一行率企业家研修班莅临麒麟信安调研交流

为学习在先进科学技术、人才引育等方面的领先经验,进一步加强交流合作,9月4日上午,南京市玄武区委常委、组织部部长任宁,玄武区委组织部副部长、两新工委书记鲁琳,玄武区委组织部人才综合服务科科长韩静玮等领导一行带…

Apache NIFI将Json数据转为SQL语句并插入到数据库表中

说明 本文中的NIFI是使用docker进行安装的,所有的配置参考:docker安装Apache NIFI 需求背景 现在有一个文件,里面存储的是一些json格式的数据,要求将文件中的数据存入数据库表中,以下是一些模拟的数据和对应的数据库…