【深入浅出】深入浅出Bert(附面试题)

本文的目的是为了帮助大家面试Bert,会结合我的面试经历以及看法去讲解Bert,并非完整的技术细致讲解,介意请移步。

深入浅出】深入浅出Bert(附面试题)

提到Bert网络模型,首先离不开的应该是Transformer网络?由此引出第一个问题

  1. Bert和Transformer有什么不同?

    • 结构不同
      1. Bert网络网络结构是一个双向的Transformer网络,Bert的双向结构使得每个单词能够同时看到句子前后的单词,极大的增强了上下文理解的效果
      2. Bert则仅使用了Transformer的编码器部分,专注于双向上下文的语言理解任务
    • 任务不同。与Transformer网络原用于翻译的任务不同,Bert一开始只做了两种任务。
      1. 完形填空(随机Masked一些单词,用于推理缺失的单词)
      2. 句子推理(判断前后两个句子是否有关联关系)
  2. Bert和同时期的GPT2(后面会讲)有什么不同?

    • 结构不同。Gpt2采用采用单向Transformer解码器架构。

    • 场景不同

      双向上下文理解能力让BERT在自然语言理解(NLU)任务中表现出色,适用于需要上下文理解和信息提取的任务,例如问答、文本分类、命名实体识别等。

      自回归文本生成架构的单向性使GPT-2擅长自然语言生成

网络结构

观察这个网络结构,可以发现Bert模型的训练是通过预训练和微调两部分组成的。这两部分分别是什么?

Pre-Training

  1. Pre-Training阶段的作用?

    预训练阶段是一个无监督任务。在Bert模型中的预训练阶段中,有15%的词语被换成了[MASK]。

    在这15%中,还有80%的内容被替换成[MASK],有10%是随机换一个词,10%是不换的(原文真这么写的,有点烧脑是吧,别急,等我慢慢讲)

替换成[MASK]比较好理解,就是为了通过前后文关联来对[MASK]的内容进行预测进而更好的帮助模型理解语义信息

**随机换成其他的token其实是为了增加模型的鲁棒性。**你想想,大家使用GPT的时候每次提问的内容都是完全正确的吗?会不会经常出现一些错别字什么的?

Fine-Tuning

  1. Fine-Tuning是做什么的?

    Bert预训练好后,他没有具体的任务。而现实生活中我们需要它去做具体的任务,比如文本分类、问答系统、情感分析等,因此需要微调bert使得模型在任务上表现得更好。

    微调会保留BERT的预训练权重,但在任务数据上继续训练,并加上适应该任务的头部层(output head),这样Bert可以适用于特定的任务。

  2. Fine-Tuning具体是怎么做的?

    • 分类任务 :将Bert的[CLS]标记输出嵌入向量接一个全连接层,用于句子分类
    • 句子关系判断任务 :类似分类任务,用[CLS]嵌入接全连接层输出句对关系
    • 序列标注任务:如命名实体识别(NER),Bert会针对每个token的输出都连接一个分类层,预测每个token的标签。

不知道大家看着一段内容的时候有没有注意到有的任务是[CLS]而有的任务用的是每个token的输出

  1. CLS标签在预测过程中是做什么的?或者说使用Bert做句子分类任务和实体识别任务有什么不同?高频问题

    Bert在预训练时,[CLS]标记被设计为整个句子或句对的表示,它可以在微调过程中学习到句子的整体信息。因此CLS代表的是整个句子的全局向量,将这个向量用于分类即可。

    在Bert中,每个token的输出代表其对应的上下文信息,能够更精细地反映局部语义,从而更适合逐个token的预测。使用每个token的输出,模型可以为每个词单独生成标签或确定其在句中的位置。

输入编码

词向量编码

用于判断有没有被【mask】

吃饭了【mask】?--》吃饭 了 【mask】--》[cls] 1 1 0 [seq]相当于三个token

句子编码

区分句子a 和 b**,用在两个句子中间

这里不分词了啊,麻烦。

今天天气怎么样?很晴朗。

[cls] 0 0 0 0 0 0 0 0 [seq] 1 1 1 [seq]

位置编码

在最初训练的时候,Bert随机赋值位置编码。Bert使用可训练的位置嵌入 ,即位置编码和token的embedding一样,作为模型参数的一部分,在训练过程中被更新。用于表示每个token在序列中的位置,定义每个位置的向量,这些位置向量是可学习的。

面试题

好啦,终于到这里了,看看你学废了吗?

  1. Bert分为什么任务?作用是什么?

  2. 在参与损失函数的计算时,参与计算的Token有哪些?是全部的15%吗?

    只有被真正mask的才会参与计算。15%的80%

  3. 在实现损失函数的时候,怎么确保那些填充(padding)的token不参与损失计算?

    计算损失时,将每个token中的损失值与mask位相乘,确保填充位损失变成0。

  4. Bert的优缺点有什么?

  5. Bert的三个Embedding为什么直接相加?

    BERT的三个Embedding(Token Embedding、Position Embedding和Segment Embedding)直接相加是因为它们分别表示输入信息的不同方面,合并后形成了每个token的整体嵌入表示。

相关推荐
ZHOU_WUYI3 小时前
3.langchain中的prompt模板 (few shot examples in chat models)
人工智能·langchain·prompt
如若1233 小时前
主要用于图像的颜色提取、替换以及区域修改
人工智能·opencv·计算机视觉
老艾的AI世界4 小时前
AI翻唱神器,一键用你喜欢的歌手翻唱他人的曲目(附下载链接)
人工智能·深度学习·神经网络·机器学习·ai·ai翻唱·ai唱歌·ai歌曲
DK221514 小时前
机器学习系列----关联分析
人工智能·机器学习
Robot2514 小时前
Figure 02迎重大升级!!人形机器人独角兽[Figure AI]商业化加速
人工智能·机器人·微信公众平台
浊酒南街5 小时前
Statsmodels之OLS回归
人工智能·数据挖掘·回归
畅联云平台5 小时前
美畅物联丨智能分析,安全管控:视频汇聚平台助力智慧工地建设
人工智能·物联网
加密新世界5 小时前
优化 Solana 程序
人工智能·算法·计算机视觉
hunteritself6 小时前
ChatGPT高级语音模式正在向Web网页端推出!
人工智能·gpt·chatgpt·openai·语音识别
Che_Che_6 小时前
Cross-Inlining Binary Function Similarity Detection
人工智能·网络安全·gnn·二进制相似度检测