Attention的理解,Bert以及其变型总结

原文出处为这里,张老师关于注意力的讲解 非常的通俗易懂,读了这篇文章之后,写下这篇博客作为笔记。极其推荐看一下这篇原文。

此外,本篇文章还涉及了Bert的原理以及变形总结,是对这个视频做的总结bert及其变种原理

关于key,value,query

其中对于机器翻译来说,将source翻译为target,在注意力机制中可写作
source中是key和value的键值对,对于翻译每一个target的单词,就是向source中进行一次query。其中key为source中的词向量,value为在encoder端的每个单词的hj。
Attention(query, source) = ∑ s i m i l a r i t y ( q u e r y , k e y i ) ∗ v a l u e i \sum similarity(query, keyi) * value_i similarity(query,keyi)valuei

Embedding简述

embedding是一种词的表示形式,它允许机器学习算法理解具有相似含义的词。
用一个地位向量表示一个事物

  • word embedding
  • item embedding
  • graph embedding

word Embedding

代表方法:word2vec, GloVe
word2vec:两层神经网络,CBOW, Skip-gram

Transformer

看上面推荐的transformer文章

Bert

1.1 预训练模型
定义:首先用大量无监督语料进行语言模型预训练(Pre-training),再使用少量标注语料进行微调(Fine-tuning)来完成具体的NLP任务(分类,序列标注,句间关系判断和机器阅读理解等)
优势:

  • 近乎无限量的优质数据
  • 无需人工标注
  • 一次学习多次复用
  • 学习到的表征可在多个任务中进行快速迁移

1.2 基本特征
bert结构
1.4 bert输入
token embedding, segment embedding, position embedding
1.5 预训练
MLM(mask language model)
在训练是随机从输入语料上mask掉一些单词,通过上下文预测该单词。MLM任务可以解决语言模型中上下文语境缺失的问题
NSP
将句子A和B输入BERT,预测B是否是A的下一句,使用[CLS]编码信息进行预测。
A与B的关系:50%的句子保留抽取到的连续两句话(next),50%将B替换为从模型中随机抽取的句子(not next)
1.6 BERT 微调
微调的各种模型 这个链接当中包含了各种BERT微调模型以及结果。

RoBERTA(Robustly Optimized BERT pre-training Approach)

主要贡献

  1. 在MLM任务中,使用dynamic masking而不是static masking
  2. 仅用MLM任务,丢弃NSP任务
  3. 更多的与训练数据集
  4. 更大的批次以及更多的steps
  5. 更大的词表,使用byte-level BPE(BBPE)作为tokenizer

bert: 随机15%的token进行mask,这个过程是在数据预处理阶段进行的,而非模型训练阶段
RoBERTa: 复制同一语句10次,对每一句进行随机15%的token进行mask,假设训练40轮,美以乱读入一个不同的sentence。
特点: 当与寻来你轮数较大或者数据量较大时,动态掩码方法能够提高数据的复用效率,泛化能力更强

在roberta中,进一步将与寻来你数据的规模扩展至160G是bert的10倍

更多批次和steps:roberta采用8k的批次大小,并且进一步将训练步长加大至500k
使用更大的批次能够有效减小训练时长,当固定批次大小并增加训练步数之后,也能得到更好的实验结果

使用更大的词表,使用BBPE的方法作为tokenizer
BERT里:采用一个30k大小的wordPiece词表,wordPiece就是将单词进行简单分割,比如把looking——>look, ing大致意思还是接近的。这种词表的弊端是如果输入文本无法通过词表中的wordPiece字词进行拼接组合,则会映射到“unknown”这种未登录词的表示

RoBERTa里:采用SentencePiece这种字节级别的Byte-level的PBPE词表的好处是能够编码任意输入文本,因此不会出现未登录词的情况。
具体可参考深入理解NLP Subword算法:BPE、WordPiece、ULM, NLP三大Subword模型详解:BPE、WordPiece、ULM
浅谈Byte-Level BPE

区别: BPE选择频数最高的相邻子词合并,而WordPiece选择能够提升语言模型概率最大的相邻字词加入词表

ALBERT(A Lite Bert)

  1. cross-layer parameter sharing 跨层参数共享
    引入跨层参数共享机制,使每一层Tranformer的权重都是一样的。 其中有三种共享选择:1)共享multi-head layer 2) 共享feed forward layer 3)上面两者均共享。从而提升了训练速度
  2. factorized embedding layer of parameterization 词向量因式分解
    引入词向量饮食分解方法解耦词向量维度E和Transformer隐含层维度H
    效果:引入词向量饮食分解后,词向量部分的计算复杂度从O(VH)降低至O(VE + EH)。当Transformer隐含层维度H远大于词向量维度E时,参数量降幅尤为明显。
    例子: 假设Transformer的隐含层维度H=1024,词向量维度为E=128,词表大小为V=30000
    在原始的BERT中,由于H=E,词向量矩阵的参数两计算为:V x H = 30000 x 1024 = 30720000
    引入词向量因式分解后,词向量矩阵的参数量计算为: V x E + E x H = 30000 x 128 + 128 x 1024 = 3971072
  3. Sentence Order Prediction 句子顺序预测
    ALBERT的预训练任务包含2个:MLM和SOP(Sentence Order Prediction)句子顺序预测。
    SOP是一个二分类任务,目标是寻来你模型来预测给定句子对中的句子顺序是否被交换
    在SOP任务中,正例的构成与NSP一致,而负例的构成是直接对调两个文本片段的位置
    目标:让模型能够学习到席位的语义差别及语篇连贯性,相比于NSP任务难度更大。
    句子A -> 句子B :正例
    句子B -> 句子A :负例

参考论文阅读ALBERT

DistillBERT( a distilled version of BERT)

knowledge distillation 知识蒸馏
一种常用的知识迁移方法,通常由教师(Teacher)模型和学生(Student)模型构成
该技术能够将较大的模型压缩到一个较小的模型,同时基本保持原模型的效果
贡献:

  1. Student Model (即DistillBERT), 的基本结构是一个6层的BERT模型,(原BERT用了12层)同时去掉了标记类型向量(Token-type Embedding)和池化模块(Pooler)
  2. 训练与BERT基本一致,只是在计算LOSS时有区别(Triple Loss 三重损失)
  3. DistillBERT采用了MLM进行预训练,丢弃了NSP

distillBERT
用一个简单的模型(DistillBert, Student)去不断逼近原本复杂的模型(Bert, Teacher)

损失:
Triple loss
page2

XLNET

参考XLNET详解

参考Bert及其变形

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值