【深入浅出】深入浅出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的整体嵌入表示。

相关推荐
代立冬几秒前
927 个 PR:Apache SeaTunnel 3.0.0 正式发布!AI 时代,数据集成正在迎来新的可能
人工智能·apache
程序员清风2 分钟前
让 AI 编写与运行测试:从样例通过到回归验证
人工智能·数据挖掘·回归
qinglongcn8 分钟前
Agent 可能出什么事——五类异常与应对
人工智能·编辑器·ai编程
小易老师11 分钟前
用中间件把任务规划嵌入 Agent 循环:告别把计划写死在 Prompt 里
人工智能·agent
Ai-_Man19 分钟前
Coze扣子还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·1024程序员节
机器学习之心30 分钟前
基于贝叶斯物理信息神经网络的矿产预测与不确定性量化,MATLAB代码及复现报告
人工智能·神经网络·matlab·贝叶斯物理信息神经网络
weixin_4492293834 分钟前
Skill应用11:详细设计自动生成|强制“文字先行”,杜绝AI只堆代码不讲设计
人工智能·agent·架构设计·详细设计·trae·skill应用
AiNightVision34 分钟前
电力巡检夜视方案选型指南——无人机/机器人/固定监测三种场景怎么选
人工智能·科技·车载系统·机器人·无人机·边缘计算·视频
涛声依旧-底层原理研究所37 分钟前
拆解 AI Agent 的四个内核:Loop、Tools、Memory 与 Harness
人工智能·架构
田里的水稻1 小时前
FA_CNN卷积神经网络十八---感知机到多层感知机PyTorch
人工智能·pytorch·python