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

Bert框架详解(上)

目录

一、传统的自然语言处理框架存在的问题

1、RNN网络计算时存在的问题

2、传统word2vec存在的问题

二、Bert模型机制

1、编码-解码框架(Encoder-Decoder)

(1)、编码器(Encoder)

(2)、解码器(Decoder)

2、自注意力机制(self attention)

(1)、注意力机制

(2)、自注意力机制

 3、多头机制(multi-headed)

4、三角函数位置编码


一、传统的自然语言处理框架存在的问题

1、RNN网络计算时存在的问题

(1)、串联,导致数据必须从h1-h2-…hm。数据训练时间变长,因为需要要等h1的结果出来才能计算h2;

(2)、并行计算效果不好,也就是不能多台服务器同时训练一个网络。

2、传统word2vec存在的问题

(1)、词向量一旦训练好了,就不会改变;

(2)、不同语境中的词含义不同,例如  【a、你真不是东西。 b、东西】 因此根据上下文不同的语境,应该有多个不同的词向量。 

 Bert模型的编码-解码框架就能解决上述问题

二、Bert模型机制

Encoder-Decoder:也就是编码-解码框架,目前大部分attention模型都是依附于Encoder-Decoder框架进行实现。 在NLP中Encoder-Decoder框架主要被用来处理序列-序列问题。也就是输入一个序列,生成一个序列的问题。这两个序列可以分别是任意长度。

比如:

文本摘要:输入一篇文章(序列数据),生成文章的摘要(序列数据)

文本翻译:输入一句或一篇英文(序列数据),生成翻译后的中文(序列数据)

问答系统:输入一个question(序列数据),生成一个answer(序列数据)

1、编码-解码框架(Encoder-Decoder)

(1)、编码器(Encoder)

 Encoder:编码器,对于输入的序列<x1,x2,x3…xn>进行编码,使其转化为一个语义编码C,这个C中就储存了序列<x1,x2,x3…xn>的信息。

编码方法:主要RNN/LSTM/GRU/BiRNN/BiLSTM/BiGRU,例如RNN中用h4直接作为语义编码C的值。

(2)、解码器(Decoder)

Decoder:解码器,根据输入的语义编码C,然后将其解码成序列数据,解码方式也可以采用RNN/LSTM/GRU/BiRNN/BiLSTM/BiGRU。 Decoder和Encoder的编码解码方式可以任意组合。

语义编码:例如当我们翻译法语中的“abandon”时,我们大脑是先将abandon所表达的概念意识提取出来,这也就是一个编码的过程。 然后提取出来的这个意识概念也就是我们的Feature Vector. 接下来我们的大脑就会基于这个意识概念,去我们大脑中的英语语言库中把与这个意识概念匹配的英文单词提取出来, 这也就是解码的过程。

2、自注意力机制(self attention)

(1)、注意力机制

注意力机制其实是源自于人对于外部信息的处理能力。人在处理信息的时候,会将注意力放在需要关注的信息上,对于其他无关的外部信息进行过滤,这种处理方式被称为注意力机制。

一句话中,哪些是重点?如何让计算机关注到话语中的重点?

(2)、自注意力机制

自注意力机制是注意力机制的变体,是输入语句内部元素之间或者输出语句内部元素之间发生的注意力机制。

如何实现slef attention呢?

<1>、首先输入经过编码后得到的词向量

<2>、构建三个矩阵,相当于cnn的卷积核, 分别为wQ、wK、wv矩阵。

<3>、将每一个词向量与矩阵相乘。得到QKV矩阵。

其中

Q:为需要查询的

K:为等着被查的

V:实际的特征信息

slef attention如何计算? 

<1>、计算一段话中每个词之间的匹配程度

<2>、通过匹配程度得到每个词的特征重要性。

 

每个词的Q会跟整个序列中的每一个K计算得分,然后基于得分再分配特征。

 

因此当和不同的词组合成序列,就会得到不同的特征值。因为不同的组合序列语句,注意力不同。

 

以上步骤,可通过并行计算,大大提高了计算速度。 

 3、多头机制(multi-headed)

multi-header(多头)机制:

(1)、通过不同的head得到多个特征表达,一般8个head

(2)、将所有特征拼接在一起

(3)、降维,将Z0~Z7连接一个FC全连接实现降维

将此类结构多层堆叠,就形成了多层网络

 

4、三角函数位置编码

前面的模型,并没有考虑词的顺序,只是单纯考虑一段话有哪些词。因此模型中需要加入位置编码bert模型运用了一种三角函数位置编码。

word embedding:是词向量,由每个词根据查表得到

pos embedding:就是位置编码。

composition:word embedding和pos embedding逐点相加得到,既包含语义信息又包含位置编码信息的最终矩阵。

pos:指当前字符在句子中的位置(如:”你好啊”,这句话里面“你”的pos=0)

dmodel:指的是word embedding的长度(例“民主”的word embedding为[1,2,3,4,5],则dmodel=5), 2i表示偶数,2i+1表示奇数。取值范围:i=0,1,...,dmodel−1。偶数使用公式(1),奇数时使用公式(2)。 当pos=3,dmodel=128时Positional Encoding(或者说是pos embedding)的计算结果为: 优点:

1、可以使PE分布在[-1,1]区间。

2、不同语句相同位置的字符PE值一样(如:当pos=0时,PE=0)。

 

 


http://www.kler.cn/a/388589.html

相关文章:

  • 区块链技术在电子政务中的应用
  • OSS文件上传
  • 工业通信协议对比:OPC-UA、Modbus、MQTT、HTTP
  • 由于找不到mfc120u.dll, 无法继续执行代码。重新安装程序可能解决引问题。
  • 第七部分:2. STM32之ADC实验--AD多通道(AD采集三路传感器模块实验:光敏传感器、热敏传感器、反射式传感器附赠温湿度传感器教程)
  • ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=2)
  • EM是什么?如何修复EM violation?
  • arm中内存读取延迟性能测试
  • goframe开发一个企业网站 rabbitmq队例15
  • 【网络面试篇】TCP 相关——重传机制、滑动窗口、流量控制、拥塞控制、Keep-Alive、KeepAlive
  • 优选算法 - 1 ( 双指针 移动窗口 8000 字详解 )
  • SpringFramework
  • VMware调整窗口为可以缩小但不改变显示内容的大小
  • 如何基于redis记录调用大模型问答的统一注册服务
  • Vue3 实现拖拽小图片覆盖大图片并下载合并后的图片
  • Flutter运行App时出现“Running Gradle task ‘assembleDebug“问题解决
  • Vue2 doc、excel、pdf、ppt、txt、图片以及视频等在线预览
  • 信创异构环境下审视云原生二层和三层容器网络
  • 共享汽车管理:SpringBoot框架的高效实现
  • Ubuntu 18在线安装Docker 实战 2024年11月
  • 访谈Sam Altman:他再次阐述对一个人AI公司的定义以及GPT系列规划
  • Java项目实战II基于Spring Boot的光影视频平台(开发文档+数据库+源码)
  • sql server 自动kill 查询超过20分钟的语句
  • MISRA C2012学习笔记(9)-Rules 8.14
  • 论文解读之SDXL: Improving Latent Diffusion Models forHigh-Resolution Image Synthesis
  • 简易入手《SOM神经网络》的本质与原理