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

诸神缄默不语-个人CSDN博文目录
诸神缄默不语的论文阅读笔记和分类

论文全名:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
ArXiv下载地址:https://arxiv.org/abs/1810.04805

官方GitHub项目:google-research/bert: TensorFlow code and pre-trained models for BERT

本文是2019年NAACL论文。提出了BERT……别的背景懒得介绍了。

Transformer基础可参考我撰写的博文:Transformer原理纯享版

调用BERT的代码我写过好几篇博文了,看目录吧。
原版BERT是英文模型,但是现在有很多语言的BERT模型了。

1. 背景

当时的预训练模型已经取得了显著成效。分为两种:

  1. feature-based
    ELMo
    用预训练表征作为特征,对不同的任务使用不同的模型结构
  2. fine-tuning
    OpenAI GPT(Re45:读论文 GPT-1 Improving Language Understanding by Generative Pre-Training
    模型包含少量task-specific(就是你看图能发现GPT-1的下游任务微调还是有点复杂,不能像BERT、GPT-2这样一个模型干一切,就只换个输出头(T5和GPT-3都不换了))。在下游任务微调所有参数

这两种模型预训练时的损失函数都是单向语言模型,学习生成式语言表征。总之本文写了一些作者觉得这种方法的不好之处,GPT只用到前文表征,ELMo只对2个反向的、分别训练的单向LM的表征结合起来(BERT不采用类似的结构,因为缺点:1. 代价高 2. 对QA不直觉 3. 表现力不够)。

预训练语言模型表示向量:

  1. 无监督基于特征((非)基于神经网络)的词向量→粒度更粗的表征
    ElMo  context2vec  maskgan
  2. 无监督基于微调
    GPT-1
  3. 从有监督数据迁移学习(经典ImageNet)

BERT生成的token表征是动态的。它共享/迁移的是模型的架构和参数/权重。

2. BERT整体结构

在这里插入图片描述

在这里插入图片描述

BERT可以获取双向的上下文信息,只需要在预训练模型的基础上接一个输出头就可以应用于不同的任务。

预训练 + 微调 范式
预训练损失函数是平均MLM似然的总和 + NSP似然的平均值

模型是多层双向Transformer encoder

L:Transformer block数
H:隐藏层维度
A:attention头数
BERT BASE _{\text{BASE}} BASE L=12, H=768, A=12, Total Parameters=110M
BERT LARGE _{\text{LARGE}} LARGE L=24, H=1024, A=16, Total Parameters=340M
当年这个世界多么淳朴,大模型只有340M……

太常识的东西我就不写了。

2.1 输入/输出表征

分词:WordPiece

输入sequence
可以是一个sentence或者一个sentence对

开始:[CLS] 用于序列分类任务

句子对分隔符:[SEP]
并增加可学习的segment embedding:来区分每一个token属于哪个句子(transformers包中的token_type_ids入参)

广义来说所有输入都是句子对,如果输入单一句子(用于做文本分类或序列标注)可以视为degenerate text-∅ pair

输入表征由三部分加总:
在这里插入图片描述

输出中,token表征接输出层解决token-level任务,[CLS]表征接输出层解决序列分类任务(蕴含任务、情感分析等)

在这里插入图片描述

2.2 预训练目标:MLM

masked language model

完形填空 / Cloze task

随机选择15% token,[MASK] 80% 预测原token,10%随机替换成别的token,10%不变

2.3 预训练目标:NSP

next sentence prediction

[CLS]表征做二元分类任务

理解句子对之间的关系

3. 实验

实验在多个任务上进行,整体表现都挺好的,我懒得详写了。

文本分类任务

在这里插入图片描述

抽取式QA

在这里插入图片描述

引入 S S S E E E 选出概率最大的 start / end token 位置:在这里插入图片描述
span得分:在这里插入图片描述
选择所有 j ≥ i j≥i ji的span中得分最高的座位预测结果。
训练目标函数是 start / end token 位置对数似然和。

非抽取式QA也用抽取式方案硬上:
在这里插入图片描述

常识推理 / 多选题

在这里插入图片描述

给出4个由given sentence和possible continuation联接成的sequence,用共同vector与[CLS]表征点积→softmax得到选项得分

消融实验

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

模型尺寸的影响

在这里插入图片描述

Feature-based Approach with BERT

在这里插入图片描述
直接用BERT输出作为表征来训练Bi-LSTM。
直接用BERT时,用第一个sub-token的表征作为整个token的表征。

参考资料

  1. BERT论文翻译_bert 论文中文-CSDN博客
  • 24
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Sentence-transformers是一种基于深度学习的工具,用于将自然语言句子转换为向量表示。以下是该工具的帮助文档: 1. 安装 要安装Sentence-transformers,请使用以下命令: pip install sentence-transformers 2. 使用 使用Sentence-transformers很简单。只需导入相应的模型和tokenizer,并将文本传递给模型即可。以下是一个示例: from sentence_transformers import SentenceTransformer, util model = SentenceTransformer('bert-base-nli-mean-tokens') sentences = ['This is an example sentence', 'Each sentence is converted to a vector'] sentence_embeddings = model.encode(sentences) 3. 模型 Sentence-transformers包括许多不同的模型,包括基于BERT、RoBERTa和DistilBERT模型。您可以使用以下命令查看所有可用的模型: from sentence_transformers import SentenceTransformer models = SentenceTransformer.models print(models) 4. 相似度计算 Sentence-transformers还包括一些实用程序函数,可用于计算句子之间的相似度。以下是一个示例: from sentence_transformers import SentenceTransformer, util model = SentenceTransformer('bert-base-nli-mean-tokens') sentences = ['This is an example sentence', 'Each sentence is converted to a vector', 'Sentence embeddings are useful for many NLP tasks'] sentence_embeddings = model.encode(sentences) # 计算第一句话和第二句话之间的余弦相似度 cosine_scores = util.pytorch_cos_sim(sentence_embeddings[0], sentence_embeddings[1]) print(cosine_scores) 5. 参考文献 如果您想了解有关Sentence-transformers的更多信息,请参阅以下文献: - Reimers, N., & Gurevych, I. (2019). Sentence-BERT: Sentence embeddings using siamese BERT-networks. arXiv preprint arXiv:1908.10084. - Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2019). BERT: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸神缄默不语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值