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

目录

一、词向量

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.rhkb.cn/news/123669.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows Server 系统各版本及授权说明(附下载地址

本文为Windows Server系统各版本差异对比及授权说明。 会对相关目前仍主流使用的相关Windows Server系统版本和相关授权进行对比和功能说明。 WindowsServer2012 R2 Windows Server 2012 R2授权方式是按照物理CPU数量进行授权,比如物理服务器CPU插槽数量2&#xff…

ChatGPT新增超强插件:文本直接生成视频、海报,支持自定义修改!

全球著名在线设计平台Canva,在ChatGPT Plus(GPT-4)上推出了插件功能,用户通过文本提示,几秒钟就能生成演示文稿、PPT插图、电子书封面、宴会邀请函等各种精美设计海报,同时支持生成视频。 该插件最强大的功…

《机器人学一(Robotics(1))》_台大林沛群 第 4 周【机械臂 逆运动学】 Quiz 4

待完善: 第5-7【暂时不清楚如何确定】 谁做出来了,麻烦指下路,谢谢! 第6-7: 连猜带蒙🤣 #################################################### 整个流程 走下来,只剩一个解了 不理解 第5-…

【力扣每日一题05】数组篇--加一

一、题目 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入&#xff1…

【HTML专栏3】!DOCTYPE、lang、字符集的作用

本文属于HTML/CSS专栏文章,适合WEB前端开发入门学习,详细介绍HTML/CSS如果使用,如果对你有所帮助请一键三连支持,对博主系列文章感兴趣点击下方专栏了解详细。 博客主页:Duck Bro 博客主页系列专栏:HTML/CS…

nginx请求接口转发-浏览器访问80端口,要把请求转发至8882

1、需求 浏览器访问80端口,要把请求转发至8882 2、实现 修改ngixn配置文件 ngin配置文件在nginx安装目录/nginx/conf文件夹下 cd /usr/local/nginx/confvi ngin.conf修改server配置 server {listen 80;server_name localhost;location / {proxy_pass …

怎么做手机App测试?app测试详细流程和方法介绍

APP测试 1、手机APP测试怎么做? 手机APP测试,主要针对的是android和ios两大主流操作系统,主要考虑的就是功能性、兼容性、稳定性、易用性(也就是人机交互)、性能。 手机APP测试前的准备: 1.使用同类型的…

docker容器运行成功但无法访问,原因分析及对应解决方案(最新,以Tomcat为例,亲测有效)

原因分析: 是否能访问当运行docker容器虚拟机(主机)地址 虚拟机对应的端口号是否开启或者防墙是否关闭 端口映射是否正确(这个是我遇到的) tomcat下载的是最新版,docker运行后里面是没有东西的&am…

Json“牵手”阿里巴巴商品详情数据方法,阿里巴巴商品详情API接口,阿里巴巴API申请指南

阿里巴巴平台是全球领先的网上B2B交易市场。阿里巴巴(B2B.com)是全球国际贸易领域内最大、最活跃的网上交易市场和商人社区。它拥有来自200余个国家和地区超过360万的注册用户,阿里巴巴中国站在中国地区拥有超过2100万的注册用户。 阿里巴巴…

【笔试强训选择题】Day35.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!! 文章目录 前言 一、Da…

Openvslam

文章目录 Openvslam 学习报告什么是Openvslam概念特点 安装和运行OpenVSLAM克隆源代码安装依赖库测试(环境已经安装成功)运行运行失败的总结运行成功 系统设计模块和函数接口调用流程流程图参考资料 Openvslam 学习报告 什么是Openvslam 概念 OpenVSL…

QT 初识多线程

1.QThread线程基础 QThread是Qt线程中有一个公共的抽象类,所有的线程类都是从QThread抽象类中派生的,需要实现QThread中的虚函数run(),通过start()函数来调用run函数。 void run()函数是线程体函数,用于定义线程的功能…

SW的stp文件转成CAD格式文件学习笔记

SW的stp文件转成CAD格式文件 如图一个STP文件,右上角标注是什么文件呢 另存为零件图,即另存为part 如图所示 用solidworks打开另存为的零件图,点击是,会识别特征 . 直接默认点对勾 之后会出现可编辑的零件图 另存为CA…

文件上传漏洞-upload靶场13-16关 (图片木马-文件包含与文件上次漏洞)

文件上传漏洞-upload靶场13-16关 (图片木马-文件包含与文件上次漏洞) 简介 upload靶场到了第十三关,难度就直线上升了,在最后这7关中,包含了图片木马、竞争条件等上传技巧,这些漏洞的本质,都是…

如何修复老照片?老照片修复翻新的方法

老旧照片,尤其是黑白照片,往往因为年代久远、保存方式不当等原因而出现褪色、污损、划痕等问题,会比较难以修复,就算是技术精湛的专业修复师,也是需要投入极大时间精力的,效果也是不可预料的。 修复老照片…

算法:数组常见套路1---双指针、取模、打擂台法

一、数组的合并–双指针[快慢指针] 1、题目: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺…

3、Spring 之IOC 容器 详解

IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容器来管理所有 Java 对象的…

数据向好,分析师预测美联储GDP或将翻一番?

KlipC报道:最新公布的一些数据显示,美国经济看起来十分稳健,华尔街人士认为,这可能促使美联储本月公布的将2023年经济增长预测提高一倍,同时下调明年降息的预期幅度。 KlipC的合伙人Andi D表示:“在从消费者…

高压放大器在机械制造领域的应用有哪些

在机械制造领域,高压放大器扮演着至关重要的角色。它们被广泛应用于各种机械设备和系统中,提供高压力、高精度的电信号放大。下面安泰电子将详细介绍高压放大器在机械制造领域的几个关键应用。 材料测试和强度试验 高压放大器广泛应用于材料测试和强度试…

什么是跨域问题 ?Spring MVC 如何解决跨域问题 ?Spring Boot 如何解决跨域问题 ?

目录 1. 什么是跨域问题 ? 2. Spring MVC 如何解决跨域问题 ? 3. Spring Boot 如何解决跨域问题 ? 1. 什么是跨域问题 ? 跨域问题指的是不同站点之间,使用 ajax 无法相互调用的问题。 跨域问题的 3 种情况&#x…