首页 > 其他分享 >BERT模型

BERT模型

时间:2023-12-25 18:00:07浏览次数:27  
标签:BERT 模型 语义 embedding 文本 句子

BERT模型介绍

BERT模型的全称是:BidirectionalEncoder Representations from Transformer。从名字中可以看出,BERT模型的目标是利用大规模无标注语料训练、获得文本的包含丰富语义信息的Representation,即:文本的语义表示,然后将文本的语义表示在特定NLP任务中作微调,最终应用于该NLP任务

 

模型输入、输出

BERT 模型中每个 token 的输入表示由三个 Embedding 向量求和得来,即:

  • token embedding: 每个词本身的 embedding。
  • segment embedding:每个词所在句子的标记 embedding,来自同一个句子的词它们的segment embedding是相同的,也就是说,该embedding本意在于区分词的来源,它向最终的输入表示提供了句子来源信息,有助于文本对的训练任务。
  • position embedding:句子中每个词位置的 embedding,类似于 Transformer 中的 positional encoding,不同之处在于,BERT模型会直接学习每个词的位置表示,而 Transformer 是利用双曲函数对其位置进行固定编码。
 对于中文来说,一个字就是一个token,但是对于英文来说,会将英文词汇作进一步切割,划分为更细粒度的语义单位(WordPiece),例如:将playing分割为play和##ing

对于不同的NLP任务,模型输入会有细微调整,例如:

  • 单文本分类任务:对于文本分类任务,BERT模型在文本前插入一个[CLS]符号,并将该符号对应的输出向量作为整篇文本的语义表示,用于文本分类,如下图所示。可以理解为:与文本中已有的其它字/词相比,这个无明显语义信息的符号会更“公平”地融合文本中各个字/词的语义信息。

  

  • 语句对分类任务:该任务的实际应用场景包括:问答(判断一个问题与一个答案是否匹配)、语句匹配(两句话是否表达同一个意思)等。对于该任务,BERT模型除了添加[CLS]符号并将对应的输出作为文本的语义表示,还对输入的两句话用一个[SEP]符号作分割,并分别对两句话附加两个不同的文本向量以作区分,如下图所示。

 

预训练任务

在预训练阶段,模型有两个任务,即Masked Language Model (简称MLM) 和Next Sentence Prediction (简称NSP) 

MLM

MLM的任务描述为:给定一句话,随机抹去这句话中的一个或几个词,要求根据剩余词汇预测被抹去的几个词分别是什么

具体来说,文章作者在一句话中随机选择15%的词汇用于预测。对于在原句中被抹去的词汇,80%情况下采用一个特殊符号[MASK]替换,10%情况下采用一个任意词替换,剩余10%情况下保持原词汇不变。这么做的主要原因是:在后续微调任务中语句中并不会出现[MASK]标记,而且这么做的另一个好处是:预测一个词汇时,模型并不知道输入对应位置的词汇是否为正确的词汇(10%概率),这就迫使模型更多地依赖于上下文信息去预测词汇,并且赋予了模型一定的纠错能力。

NSP

NSP的任务描述为:给定一篇文章中的两句话,判断第二句话在文本中是否紧跟在第一句话之后

假设选取句子对A和B:

  • 有 50% 的概率选取的句子B就是句子A的下一句(将句子对标记为IsNext)
  • 有 50% 的概率句子B是从语料库中随机选取的句子 (将句子对标记为NotNext)

 

模型结构

BERT用的是transformer的encoder结构(下图的红色部分)

把多个Transformer Encoder一层一层地堆叠起来,就得到了BERT模型

 

BERT Fine-tuning

 BERT的fine-tuning,与GPT的第二阶段类似,通常是根据任务在pre-training模型上再加一层简单的网络层

 

参考资料

https://cloud.tencent.com/developer/article/1389555

https://zhuanlan.zhihu.com/p/558393190?utm_id=0

标签:BERT,模型,语义,embedding,文本,句子
From: https://www.cnblogs.com/xumaomao/p/17926633.html

相关文章

  • YOLOV8解读--分类模型训练与预测
    YOLOV8命名不同于V5系列,V8不强调yolo这一模型,更加强调其框架属性,所以V8在github上的项目名为 ultralytics。所以在下载代码时不要怀疑,就是这个地址:https://github.com/ultralytics/ultralytics下边写基于V8模型做分类的方法数据集部分分类模型的数据集与V5的检测或分割最大的不用......
  • 鸿蒙原生应用/元服务开发-Stage模型能力接口(十)上
    @ohos.app.form.FormExtensionAbility(FormExtensionAbility)FormExtensionAbility为卡片扩展模块,提供卡片创建、销毁、刷新等生命周期回调。本模块首批接口从APIversion9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。本模块接口仅可在Stage模型下使用。一、......
  • 科技云报道:开源才是大模型的未来?
    科技云报道原创。一年前,ChatGPT横空出世;7个多月后,Meta宣布开源LLaMA2,并且可免费商用。这一天,也成为大模型发展的分水岭。短时间内,LLaMA2对一些闭源的大模型厂商造成了致命性的打击。随后,全球头部厂商和创业公司纷纷加入开源浪潮中。目前,国内也有近一半的大模型选择了开源的方式:今......
  • 中工互联加入元脑生态,携手浪潮信息加速工业大模型落地
    近日,中工互联(北京)科技集团有限公司(简称“中工互联”)与浪潮信息签署元脑生态战略合作协议。双方将充分发挥各自优势打造联合解决方案,推动工业大模型实践,加速人工智能在智能工厂、智慧能源、综合能源优化等工业领域的落地。中工互联是一家工业大模型、工业软件、工业互联网平台及工业......
  • 共建共享,创新同行!飞桨星河社区助力大模型时代开发者砥砺前行
    大模型引领AI新浪潮,助力人工智能实现从感知理解到生成创造的飞跃。飞桨星河社区,覆盖深度学习初学者、在职开发者、企业开发者、高校教师、创业者等,是国内最大的AI开发者社区,以飞桨和文心大模型为核心,集开放数据、开源算法、云端GPU算力及大模型开发工具于一体,为开发者提供模型与应......
  • PMP塔克曼阶梯模型
    塔克曼阶梯模型布鲁斯·塔克曼(BruceTuckman)的团队发展阶段(StagesofTeamDevelopment)模型可以被用来辨识团队构建与发展的关键性因素,并对团队的历史发展给以解释。团队发展的五个阶段是:组建期(Forming)、激荡期(Storming)、规范期(Norming)、执行期(Performing)和休整期(Adjourni......
  • 大模型加持下,AI招聘的“下一站”
    导读随着生成式AI进入企业招聘领域,很多人都会心生疑虑:“什么?刚才为我面试的竟然不是真人?AI确定能招人?靠谱吗?用机器人招人,我是不是要失业了?”其实,在传统以流程为中心的ATS (ApplicantTrackingSystem)中,企业通过自动化提高招聘效率,降低HR的负担,确保招聘的公平性和透明度。而随着TR......
  • 利用Prompt学习更多示例,提高大模型性能
    随着人工智能技术的不断发展,大型语言模型(如GPT-3、BERT等)在自然语言处理领域的应用越来越广泛。然而,这些模型通常需要大量的训练数据才能达到较高的性能。为了解决这个问题,一种有效的方法是使用prompt学习,即通过向模型提供示例来引导其生成输出。在prompt学习中,关键在于如何选择和......
  • Prompt Tuning:大模型微调的实战技巧
    随着深度学习技术的不断发展,大模型在各个领域的应用越来越广泛。然而,训练和调整大模型需要大量的时间和计算资源。为了解决这个问题,研究人员提出了PromptTuning方法,这是一种基于预训练模型进行微调的技术。本文将重点介绍PromptTuning大模型微调实战中的重点词汇或短语。一、大模......
  • Prompt-Tuning:大模型微调技术
    随着深度学习技术的不断发展,大模型(如GPT、BERT等)在各种自然语言处理(NLP)任务中取得了显著的成功。然而,训练和部署大模型需要大量的计算资源和时间,这限制了其在一些资源有限场景中的应用。为了解决这个问题,研究人员提出了各种大模型微调技术,以减少模型的大小和计算复杂度,同时保持模型......