Softmax反向传播推导、Bert的模型架构

日萌社

人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)


fasttext模型在大量类别上能够快速训练的原因、为了提升fasttext模型的评估指标做了哪些优化 

简述BERT模型的训练过程、BERT模型在推断过程中做了哪些性能优化、BERT模型在训练过程中做了哪些性能优化 

在某个模型训练过程中遇到的难题及其解决办法、对自动超参数调优方法的理解、模型部署时如何实现热更新、说一说最近看过的一篇论文

Softmax反向传播推导、Bert的模型架构


Softmax反向传播推导 


Bert的模型架构

2: 关于Bert训练过程中的关键点.
2.1: 四⼤关键词: Pre-trained, Deep, Bidirectional Transformer, Language
Understanding
a: Pre-trained: ⾸先明确这是⼀个预训练的语⾔模型, 未来所有的开发者可以直接继承!
整个Bert模型最⼤的两个亮点都集中在Pre-trained的任务部分。
b: Deep:
Bert_BASE: Layer = 12, Hidden = 768, Head = 12, Total Parameters = 110M
Bert_LARGE: Layer = 24, Hidden = 1024, Head = 16, Total Parameters = 340M
对⽐于Transformer: Layer = 6, Hidden = 2048, Head = 8, 是⼀个浅⽽宽, 说明
Bert这样深⽽窄的模型效果更好 (和CV领域的总体结论基本⼀致)。
c: Bidirectional Transformer: Bert的⼀个创新点, 它是⼀个双向的Transformer⽹络。
原始的Transformer其实是⼀个单向的⽹络, 和GPT⼀致, ⻅上图。
d: Language Understanding: 更加侧重语⾔的理解, ⽽不仅仅是⽣成 (Language
Generation)
2.2: Bert的语⾔输⼊表示包含了3个组成部分: (⻅上图)
词嵌⼊张量: word embeddings
语句分块张量: segmentation embeddings
位置编码张量: position embeddings
2.3: Bert的预训练中引⼊两⼤核⼼任务 (这两个任务也是Bert原始论⽂的两个最⼤的创新点)
a: 引⼊ Masked LM (带mask的语⾔模型训练)
a.1: 在原始训练⽂本中, 随机的抽取15%的token作为即将参与mask的对象。
a.2: 在这些被选中的token中, 数据⽣成器并不是把他们全部变成[MASK], ⽽是有
下列3个选择:
a.2.1: 在80%的概率下, ⽤[MASK]标记替换该token, ⽐如my dog is hairy ->
my dog is [MASK]
a.2.2: 在10%的概率下, ⽤⼀个随机的单词替换该token, ⽐如my dog is
hairy -> my dog is apple
a.2.3: 在10%的概率下, 保持该token 不变, ⽐如my dog is hairy -> my dog
is hairy
a.3: Transformer Encoder在训练的过程中, 并不知道它将要预测哪些单词? 哪些
单词是原始的样⼦? 哪些单词被遮掩成了[MASK]? 哪些单词被替换成了其他单词?
正是在这样⼀种⾼度不确定的情况下, 反倒逼着模型快速学习该token的分布式上
下⽂的语义, 尽最⼤努⼒学习原始语⾔说话的样⼦!!! 同时因为原始⽂本中只有15%
的token参与了MASK操作, 并不会破坏原语⾔的表达能⼒和语⾔规则!!!
b: 引⼊Next Sentence Prediction (下⼀句话的预测任务)
b.1: ⽬的是为了服务问答, 推理, 句⼦主题关系等NLP任务。
b.2: 所有的参与任务训练的语句都被选中参加。
50%的B是原始⽂本中实际跟随A的下⼀句话。(标记为IsNext, 代表正样本)
50%的B是原始⽂本中随机抽取的⼀句话。(标记为NotNext, 代表负样本)
b.3: 在该任务中, Bert模型可以在测试集上取得97-98%的准确率。
2.4: 关于基于Bert的模型微调(fine-tuning)
只需要将特定任务的输⼊, 输出插⼊到Bert中, 利⽤Transformer强⼤的注意⼒机制就可
以模拟很多下游任务。(句⼦对关系判断, 单⽂本主题分类, 问答任务(QA), 单句贴标签
(命名实体识别))
微调的若⼲经验:
batch size: 16, 32
epochs: 3, 4
learning rate: 2e-5, 5e-5
全连接层添加: layers: 1-3, hidden_size: 64, 128

 

3: Bert模型本身的优点和缺点。(没有标准答案)
优点: Bert的基础建⽴在transformer之上, 拥有强⼤的语⾔表征能⼒和特征提取能⼒。在11
项NLP基准测试任务中达到了state of the art。同时再⼀次证明了双向语⾔模型的能⼒更加
强⼤。
缺点:
1: 可复现性差, 基本没法做, 只能拿来主义直接⽤!
2: 训练过程中因为每个batch_size中的数据只有15%参与预测, 模型收敛较慢, 需要强
⼤的算⼒⽀撑!
引申:1:深度学习就是表征学习 (Deep learning is representation learning)
整个Bert在11项语⾔模型⼤赛中, 基本思路就是双向Transformer负责提取特征,
然后整个⽹络加⼀个全连接线性层作为fine-tuning微调。但即便如此傻⽠式的组
装, 在NLP中著名的难任务-NER(命名实体识别)中, 甚⾄直接去除掉了CRF层, 照样
⼤⼤超越BiLSTM + CRF的组合效果, 这去哪⼉说理去???
2: 规模的极端重要性 (Scale matters)
不管是Masked LM, 还是下⼀句预测Next Sentence Prediction, 都不是⾸创的概
念, 之前在其他的模型中也提出过, 但是因为数据规模 + 算⼒局限没能让世⼈看到
这个模型的潜⼒, 那些Paper也就不值钱了。但是到了⾕歌⼿⾥, 不差钱的结果就
是Paper值钱了!!!!!!
3: 关于进⼀步的研究展示了Bert在不同的层学习到了什么。
低的⽹络层捕捉到了短语结构⽅⾯的信息。
单词和字的特征表现在3-4层, 句法信息的特征表现在6-9层, 句⼦语义信息的特征
表现在10-12层。
主谓⼀致的特征表现在8-9层 (属于句法信息的⼀种)。

1: 串讲Bert的时候已经提到了很多细节。
2: 关于特征提取器的差异
2.1: ELmo采⽤双向LSTM提取
2.2: Bert采⽤双向Transformer提取
2.3: GPT采⽤单向Transformer提取
3: 关于语⾔模型的差异
3.1: ELmo采⽤双向语⾔模型, 可以同时采集前后语义的关系和含义
3.2: Bert采⽤双向语⾔模型, 相当于只⽤了Transformer中的Encoder, 可以看⻅完整的句⼦,
是三者中提取特征能⼒最强⼤的
3.3: GPT采⽤单向语⾔模型, 相当于只⽤了Transformer中的Decoder, 看不⻅完整的句⼦, 特
征采集能⼒不如Bert
知识图谱是NLP⼀个单独的细分领域, 需要专⻔做, ⽐较窄, 除⾮特别有兴趣专攻, 不然不建议押注
这个领域。Neo4j就是主要针对知识图谱的。
词义消歧, 语义消歧:
    雷军对⼩⽶有特别的感情。
    那家店卖的⼩⽶特别棒。
    我昨天刚买了⼀个苹果。
1: 基于词典的语义消歧
2: 有监督的深度学习语义消歧 (类似于词性标注, NER任务)
3: ⽆监督 (但是依赖于在⼀个⼤规模语料库上的句法分析结果)
4: https://www.bbsmax.com/A/E35pl6QE5v/

句向量:
    1: 词的叠加
    2: Bert (Transformer)
⽂档向量:
    1: LDA (⽂档主题模型)
    2: Bert

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章