【NLP】1、BERT | 双向 transformer 预训练语言模型

这篇具有很好参考价值的文章主要介绍了【NLP】1、BERT | 双向 transformer 预训练语言模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【NLP】1、BERT | 双向 transformer 预训练语言模型,NLP,自然语言处理,bert,transformer

论文:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

出处:Google

一、背景

在 BERT 之前的语言模型如 GPT 都是单向的模型,但 BERT 认为虽然单向(从左到右预测)预测任务符合语言模型的建模过程,但对一些语言理解任务不太友好,因为要理解一句话说的是什么意思的话(如 VQA), 同时看到一整句话也是可以的,是符合逻辑的,而不是只能一个单词一个单词的来逐个看。

所以 BERT 打破了语言模型单向的限制,做了一个双向的模型,就是做完形填空的时候运行看左边也运行看右边,而且是受 Cloze (1953年的论文)这个方法的启发

具体的做法就是每次随机选一些 token 然后 mask 掉这些信息,目标是预测这些 token,这样就允许训练一个双向且深的 transformer 模型结构

此外,BERT 还做了一个任务——下一个句子的预测(next sentence prediction),就是给模型两个句子,让模型判断这两个句子在原文中是不是相邻的,能让模型学习句子层面的信息

二、方法

BERT 的两个步骤:

  • 预训练:使用 无标注 的数据训练的预训练模型(下图左侧),由两个任务共同组成预训练
    • mask model:预测被 mask 掉的 token,类似完形填空的方式。预测的过程相当于做多分类,类别的个数是词汇的总个数,将 mask 的词的 embedding 经过 MLP 变成在每个类别词汇上的 logits 概率,label 是 mask 位置上真实词汇在整个词汇上的 one-hot 编码,将 logits 和 lable 计算交叉熵,然后所有的预测做加权平均,就能得到 MLM 的 loss 了

      输入的是句子对儿,会把句子先进行拆词,并在序列首位放置 [CLS] 在句子中间放置 [SPE] 这两个特殊的 token,然后对普通的 token(除过特殊 token 之外的从句子中拆出来的 token)进行 15% 概率的擦除,然后在这 15% 的 token 中选择 80% 的直接用 [MASK] 替换掉这个 token,10%的随机放置 token,10% 不改变 token。

    • next sentence prediction:预测下一个句子
      在 VQA 和 语言推理中都是句子对,所以使用这种方法对这两个任务类似的理解的任务有提升。输入的数据中有 50% 真的是下一个句子,50% 是随机拿来的句子。

  • 微调:针对不同的下游任务,还会使用有标签的数据来微调,使用预训练模型参数初始化,所有权重都会参与训练(右边)

模型超参数:base 共 110M 参数(也就是 1.1亿)对标的是 GPT 模型大小,large 共 340M 参数(也就是 3.4亿)

  • transformer block 个数:base 12 层,large 24 层
  • hidden 层大小:base 768,large 1024
  • 多头注意力机制 head 的个数:base 12 头,large 16 头
    【NLP】1、BERT | 双向 transformer 预训练语言模型,NLP,自然语言处理,bert,transformer

输入和输出:

  • 输入是一个序列,可以是一个句子,也可以是两个句子,两个句子也会并成一个序列
  • 序列的构成方式:使用的切词方法是 WordPiece,因为如果按照空格切词的话会导致词典很大,WordPiece 是说如果一个词出现频率不高的话,那么就切开看它的子序列,子序列出现多的话保留子序列就可,可以使用 30000 token vocabulary 就能表示一个大的文本了。切好词之后就要把两个句子整合成一个序列,序列的第一个词用于都是 [CLS],bert 希望这个 token 表示整个序列的特征。还有一个 [SEP] token 表示将两个句子在这里切开,因为毕竟每个句子还是独立的个体,所以要有标志将其切开。在图 1 左侧就展示了,将句子切成 token,然后将求每个 token 的 embedding,
  • 每个 token 还要加 位置的 embedding 和 segment embedding,如图 2 所示

【NLP】1、BERT | 双向 transformer 预训练语言模型,NLP,自然语言处理,bert,transformer文章来源地址https://www.toymoban.com/news/detail-661895.html

  • BERT 的每个 token 的输入是由三个部分相加得到的
  • token embedding:就是输入 transformer 之前的一次简单 embedding
  • segment embedding:表示第一句话还是第二句话
  • position embedding:token 在序列中的位置

到了这里,关于【NLP】1、BERT | 双向 transformer 预训练语言模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自然语言处理实战项目8- BERT模型的搭建,训练BERT实现实体抽取识别的任务

    大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目8- BERT模型的搭建,训练BERT实现实体抽取识别的任务。BERT模型是一种用于自然语言处理的深度学习模型,它可以通过训练来理解单词之间的上下文关系,从而为下游任务提供高质量的语言表示。它的结构是由多

    2024年02月07日
    浏览(35)
  • 自然语言处理 Paddle NLP - 预训练语言模型及应用

    基础 自然语言处理(NLP) 自然语言处理PaddleNLP-词向量应用展示 自然语言处理(NLP)-前预训练时代的自监督学习 自然语言处理PaddleNLP-预训练语言模型及应用 自然语言处理PaddleNLP-文本语义相似度计算(ERNIE-Gram) 自然语言处理PaddleNLP-词法分析技术及其应用 自然语言处理Pa

    2024年02月08日
    浏览(62)
  • 自然语言处理从入门到应用——动态词向量预训练:双向语言模型

    分类目录:《自然语言处理从入门到应用》总目录 对于给定的一段输入文本 w 1 w 2 ⋯ w n w_1w_2cdots w_n w 1 ​ w 2 ​ ⋯ w n ​ ,双向语言模型从前向(从左到右)和后向(从右到左)两个方向同时建立语言模型。这样做的好处在于,对于文本中任一时刻的词 w t w_t w t ​ ,可以

    2024年02月10日
    浏览(32)
  • 2023年!自然语言处理(NLP)10 大预训练模型

    来源: AINLPer 公众号 (每日干货分享!!) 编辑: ShuYini 校稿: ShuYini 时间: 2022-10-23 语言模型是构建NLP应用程序的关键。现在人们普遍相信基于预训练模型来构建NLP语言模型是切实有效的方法。随着疫情阴霾的散去,相信NLP技术会继续渗透到众多行业中。在此过程中,肯定有很

    2024年02月16日
    浏览(40)
  • 【预训练语言模型】 使用Transformers库进行BERT预训练

    基于 HuggingFace的Transformer库,在Colab或Kaggle进行预训练。 鉴于算力限制,选用了较小的英文数据集wikitext-2 目的 :跑通Mask语言模型的预训练流程 注意:在Kaggle上训练时,最好将datasets更新到最新版(再重启kernel),避免版本低报错 colab和kaggle已经预安装transformers库 加载数据

    2024年03月14日
    浏览(32)
  • 自然语言处理 Paddle NLP - 基于预训练模型完成实体关系抽取

    基础 自然语言处理(NLP) 自然语言处理PaddleNLP-词向量应用展示 自然语言处理(NLP)-前预训练时代的自监督学习 自然语言处理PaddleNLP-预训练语言模型及应用 自然语言处理PaddleNLP-文本语义相似度计算(ERNIE-Gram) 自然语言处理PaddleNLP-词法分析技术及其应用 自然语言处理Pa

    2024年02月10日
    浏览(35)
  • 7个顶级开源数据集来训练自然语言处理(NLP)和文本模型

    推荐:使用 NSDT场景编辑器快速助你搭建可二次编辑的3D应用场景 NLP现在是一个令人兴奋的领域,特别是在像AutoNLP这样的用例中,但很难掌握。开始使用NLP的主要问题是缺乏适当的指导和该领域的过度广度。很容易迷失在各种论文和代码中,试图吸收所有内容。 要意识到的是

    2024年02月13日
    浏览(41)
  • 大语言模型的预训练[1]:基本概念原理、神经网络的语言模型、Transformer模型原理详解、Bert模型原理介绍

    预训练属于迁移学习的范畴。现有的神经网络在进行训练时,一般基于反向传播(Back Propagation,BP)算法,先对网络中的参数进行随机初始化,再利用随机梯度下降(Stochastic Gradient Descent,SGD)等优化算法不断优化模型参数。而预训练的思想是,模型参数不再是随机初始化的

    2024年02月17日
    浏览(38)
  • 自然语言处理(八):预训练BERT

    BERT(Bidirectional Encoder Representations from Transformers)是一种预训练的自然语言处理模型,由Google于2018年提出。它是基于Transformer模型架构的深度双向(双向指同时考虑上下文信息)表示学习模型。 BERT的目标是通过在大规模文本语料上进行自监督学习来学习通用的语言表示。在预

    2024年02月09日
    浏览(36)
  • 想要成为 NLP 领域的大牛?从 ChatGPT 的 5 大自然语言模型开始了解吧(LM、Transformer、GPT、RLHF、LLM)——小白也能看得懂

      如果想在自然语言处理(Natural Language Processing,NLP)领域内脱颖而出,那么你一定不能错过 ChatGPT 的 5 大自然语言模型:LM、Transformer、GPT、RLHF 和 LLM。这些模型是 NLP 领域中最为重要的基础,涵盖了 语言模型、预训练模型、生成模型 等关键知识点。即使你是一个 NLP 小白

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包