1.1 认识BERT

  • 定义: 实质就是Transformer的encoder部分
  • 表现: 在阅读理解上会有更好的表现.
  • BERT分为三个模块
  • 最底层: Embedding
  • token embeding
  • Segment embeding 句子分段嵌入向量
  • position embeding
  • 中间层: Transformer
  • 只是用了encoder部分
  • 最上层: 预微调模块
  • 句子对关系的判断
  • 单文本的主题分类
  • QA问题模型 start end
  • 句子贴标签(NER命名实体识别任务)
  • BERT预训练任务
  • 任务一: MLM(带有mask的LM)
  • 随机选取15%token进行mask的训练任务
  • 80%进行mask
  • 10%进行token的替换
  • 10%是原有的token
  • 任务二: NSP(下一句预测任务)
  • 50%是真实的下一句话 IsNext
  • 50%是随机抽取的下一句话 notNext

1.2 Transformer的结构是什么样的? 各个子模块各有什么作用?

  • 输入部分
  • 编码器部分
  • 多头自注意力机制
  • 前馈全连接层
  • 解码器部分
  • 多头自注意力机制层(带有mask)
  • 多头注意力层
  • 前馈全连接层
  • 输出部分

1.3 Transformer结构中的Decoder端具体输入是什么? 在训练阶段和预测阶段一致吗?

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m9yJcEzR-1648561301352)(img/image-20220212151844243.png)]
  • Decoder端的训练
  • 使用了mask去模拟时间步的概念
  • decoder端的预测
  • sos —> Sos how —> sos how are ….

1.4 Transformer中一直强调的self-attention是什么? 为什么能发挥如此大的作用? 计算的时候如果不使用三元组(Q, K, V), 而仅仅使用(Q, V)或者(K, V)或者(V)行不行?

  • Self-attention: 自注意力机制
  • (QKV)目前为止数学意义更加完备,

1.5 Transformer为什么需要进行Multi-head Attention? Multi-head Attention的计算过程是什么?

  • 原因: 进行多头是为了划分多个子空间, 让模型关注不同方面的语义维度, 提升模型的效果
  • 计算过程
  • embedding_dim维度进行分割—> 有多少个头
  • 计算完成之后还需要进行concat操作, 将语义进行融合.

1.6 Transformer相比于RNN/LSTM有什么优势? 为什么?

  • Transformer优点: 第一: 并行运算的能力 第二: 特征提取的能力强

1.7 为什么说Transformer可以代替基于传统模型的seq2seq架构?

  • seq2seq缺点:
  • 中间语义张量是固定, 信息损耗多
  • 不能并行
  • Transformer:
  • 根据不同的步骤, 提取更完备的语义信息
  • 并行计算

1.8 self-attention公式中的归一化有什么作用? 为什么要添加scaled?[难点]

  • q * k 之后的结果会变大, softmax之后的梯度会变的非常小, 以至于可能照成梯度消失
  • 为了防止梯度消失, 要在q * K 之后除以根号d_k

1.9 Transformer架构的并行化是如何进行的? 具体体现在哪里?

  • encoder部分 训练过程和预测过程并行化是一样的
  • embedding层, feed forward层, norm和add是实现正真意义上的并行
  • self-attention层实现的是数据技巧上的并行化运算[矩阵运算]
  • decoder部分
  • 训练过程 并行化同encoder部分一样
  • 预测过程 不能并行化[需要有时间步类似的过程]

1.10 BERT模型的优点和缺点?

  • 优点;
  • 并行化计算
  • 可以使用双向的深度计算 self-attention
  • 缺点:
  • 模型大, 参数多 12层 768维度 12头 / 24层 1024维度 16头
  • mask在训练阶段出现, 但是在预测阶段不出现, 会造成信息出现偏差
  • bert收敛速度比较慢

1.11 BERT的MLM任务中为什么采用了80%, 10%, 10%的策略?

  • mask如果在训练阶段是100的出现,会造成部分语义空间的消失, 为了防止这种情况的出现,调整策略选用80% 10% 10%

1.12 长文本预测任务如果想用BERT来实现, 要如何构造训练样本?

  • 处理文本的长度是512个, 但是需要留出头和尾各一个, 所以正真处理的是510个
  • 方式:
  • 第一种方式就是只保留前面510个token.
  • 第二种方式就是只保留后面510个token.
  • 第三种方式就是前后分别保留一部分token, 总数是510.