赞
踩
- 1、传统缺点:seq2seq使用循环网络固有的顺序特性阻碍样本训练的并行化,这在更长的序列长度上变得至关重要,因为有限的内
- 存限制样本的批次大小;传统的seq2seq 处理时刻数 0-50,bert可以处理 几百个时刻长度的序列。
- 2、新结构:Transformer,这种模型架构避免循环并完全依赖于attention机制来绘制输入和输出之间的全局依赖关系。 Transf
- ormer允许进行更多的并行化
- 3、优势总结:
- ① bert、transformer 引入 位置嵌入 的思想,因此可以保证前后关系依赖的前提下实现并行化,bert网络比传统的r
- nn网络运行速度快很多
- ② 就算LSTM 引入了更新门、遗忘门,它不能完美解决 state 方向的梯度消失问题,因此LSTM处理的序列长度通常不超过
- 50,bert网路可以处理更长的序列。
- ③ 传统的word2vec训练完词向量以后,RNN网络不会考虑相同的词在不同语境之间的含义不同,而bert网络 会将同一个词的上下语境
- 加入词当中。
- ④ 打破了传统seq2seq解码器的输出 太过于依赖 编码器attention向量。
-
- 4、bert、transformer、传统rnn的缺点:
- 虽说 他们 结构有差异,但是都属于 FC 类型的网络。
Self-attention:有时称为intra-attention,是一种attention机制,它关联单个序列的不同位置以计算序列的表示。 Self-attention已成功用于各种任务,包括阅读理解、摘要概括、文本蕴涵和学习与任务无关的句子表征。
- 1、self-attention的理解:
- 顾名思义,就是自己对自己的attention,它主要是为了 找出 当前时刻的词 对于当前整个序列其他时刻的词之间的位置关系
- 和依赖的权重关系,self-attention 编码器输出该时刻的结果 就不单单是该时刻该单词的信息,而是融合了整个序列 其他词与该
- 词权重依赖关系与位置关系的融合信息。 它的表现结果如下:
- 1、transformer 在训练时,解码器的每个输入已知(即标签),所以可以直接 位置嵌入并行输入,进行self-attention 提取特
- 征后 用 改训练时刻的位置的 向量 进行 linear + softmax,而下一个刻训练则用下一时刻对应位置的 解码器输出向量 进
- 行linear + softmax训练。
- 1、在预测过程中,transformer解码器也是一个并行输入,一次只能预测一个词语,但是每一时刻输入需要参考前面时刻输出,但
- 是要记得的是需要参考前面所有已知预测的时刻进行self-attention,而当前时刻词语后面的时刻词语 则用 masked 的方式
- 将其掩盖掉进行linear+ argmax测试。最后,和 训练过程一样,每次预测都要选取对应位置的解码器输出的向量进行
- linear + argmax 预测。
1、encode 中的 Value Key 矩阵 构建方式 与 self-attention 中 key value 相同
- 1、注意:
- ① 编码器的输出维度结构:
- 输入多少时刻的词,输出就是多少时刻的词,它们的时刻数相同,用于 与解码器 之间的attention做准备
执行过程:
- 1、模型还没有描述词之间的顺序关系,也就是如果将一个句子打乱 其中的位置,也应该获得相同的注意力,为了解决这个问题,
- 论 文加入了自定义位置编码,位置编码和word embedding长度相同 的特征向量,然后和word embedding进行求和操作。
- 2、位置嵌入的作用
- transformer 网络编码器的输入是 多时刻 词embeding,为了使得并行执行的网络学习到词与词前后顺序,因此在词向
- 量输入网络前用 位置向量 进行标记。
例: 我 是 中国 人
0 1 2 3
将 位置 0,1,2,3..... 余弦信号 的方式进行 嵌入。
1、一个head相当于提取一种特征,类似于CNN的多输出通道一样吧,muti-head可以提取文本更多的特征。
Mask:遮挡掩盖的意思,比如:把需要预测的词给挡住。出现出 现在OpenAI GPT和Bert中。
- Q:我|困|了 A:早点|休息 随机干扰句:你|该|吃饭|了
- Input = [CLS] 我 [MASK] 了 [SEP] 早点 [MASK] [SEP]
- Label = IsNext
- Input = [CLS] [MASK] 困了 [SEP] 你该 [MASK] 饭了 [SEP]
- Label = NotNext
-------- FNN 层计算方式
- 1、FFN层目的:
- 将 self-attention 提取的特征向量 做 FC 特征转换,增加的模型的可表达能力。
- 残差结构的作用:
- 类似 resnet 的思想,随着模型的层数递增,防止模型学习效果反而变差,提供模型方向BP一种额外的道路,至少让模
- 型的效果不会比原来差。
- 1、作用:
- ① 无量纲化,使得数据 zero-center,防止zigzag现象,加快模型的收敛速度。
- ② 一定程度上缓解过拟合
- 详情:
- 目的类似于 BN 层的三个作用,具体看
- https://blog.csdn.net/qq_16555103/article/details/89914946
transformer 结构用的是 layer normaliztion
- 1、放缩点积attention:
- self-attention 权重α计算方式
多头attention的Query,Key,Value首先进过一个线性变换,然后输入到放缩点积attention,注 意这里要做h次,其实也就是所谓的多头,每一次算一个头。而且每次Q,K,V进行线性变换的参 数W是不一样的。然后将h次的放缩点积attention结果进行拼接,再进行一次线性变换得到的值作 为多头attention的结果。
- 1、bert是一个语言模型,其目的就像是利用transformer encoder 的部分,它是transformer结构训练过程 encode 的一个产
- 物,对序列的 每一个词都加入了 上下文的权重信息(self-attention),最终获得一个包含 全文各处不同 权重的 向量。
- 至于后续对该向量做什么操作就不是bert的范畴了(实际上任务常常融入bert模型,两者同时训练)。
- 2、bert 训练词向量与 word2vec 有何不同?
- word2vec 词向量一旦预训练完成,后续相同的词在不同语境的含义不会发生变化。
- bert 训练的词向量会考虑到相同的词在不同语境中含义不同,词向量训练过程会参考上下文语境的权重关系 进行 融合输出。
- 1、BERT语言模型优势
- ① BERT 使用 Masked(掩码) 语言模型(也称为 “完形填空” 任务)来实现预训练好的深度双向表征。
- ② BERT 使用的是一个双向的全连接结构,从图中可以看出是在所有的网络层中都受到左右文本的共同作用。
- ③ BERT 使用的是 transformer 结构,因此它是一个并行执行的结构,它的运行速度较快
- ④ BERT 是一种 12/24 ... 层transformer 结构(muti-head-attention),提取的文本信息特征比较丰富
- CLS:每个序列的第一个 token 始终是特殊分类嵌入(special classification embedding)向量,选择该向量做任务,即 CLS。
- 对应于该 token的最终隐藏状态(即,Transformer的输出)被用于分类任务的聚合序列表示。如果没有分类任务的话,这个
- 向量是被忽略的。
- SEP:用于分隔一对句子的特殊符号。有两种方法用于分隔句子:第一种是使用特殊符号 SEP;第二种是添加学习句子 A 嵌入到
- 第一个句子的每个 token 中,句子 B 嵌入到第二个句子的每个 token 中。如果是单个输入的话,就只使用句子 A 。
token:令牌,相当于输入端口
- 1、用 bert masked 的位置所抽取的词向量 做一个 简单的 linear + softmax 分类,如果 分类成功找到 被masked的词,
- 这表明 bert 模型 训练成功。
思考:用bert 做任务(情感分析等分类任务)需要用bert先训练好 词向量表达,然后用这个向量做分类模型训练吗?
答案: 任务 会融入 bert 中,词向量表达与分类模型是同时训练的
(1)single 序列的分类问题:
(2)single 序列 每一个词的分类问题:
(3)double 序列 分类问题: 判断 回答/推论 是对还是错还是unknow
(4)double 序列 阅读理解:QA
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。