【自然语言处理七】Bert模型及应用

1.Bert模型

简介

BERT的全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder,因为decoder是不能获要预测的信息的。模型的主要创新点都在pre-train方法上,即用了Masked LM和Next Sentence Prediction两种方法分别捕捉词语和句子级别的representation。
MLM任务
NSP任务

预训练和微调

你需要搭建一个网络模型来完成一个特定的图像分类的任务。首先,你需要随机初始化参数,然后开始训练网络,不断调整直到网络的损失越来越小。在训练的过程中,一开始初始化的参数会不断变化。当你觉得结果很满意的时候,你就可以将训练模型的参数保存下来,以便训练好的模型可以在下次执行类似任务时获得较好的结果。这个过程就是 pre-training。
之后,你又接收到一个类似的图像分类的任务。这时候,你可以直接使用之前保存下来的模型的参数来作为这一任务的初始化参数,然后在训练的过程中,依据结果不断进行一些修改。这时候,你使用的就是一个 pre-trained 模型,而过程就是 fine-tuning。
所以,预训练 就是指预先训练的一个模型或者指预先训练模型的过程;微调 就是指将预训练过的模型作用于自己的数据集,并使参数适应自己数据集的过程。

Bert的掩码机制

(1) 处理非定长的批次序列,让模型忽略Padding部分。
(2)防止标签泄露,在模型预测时,将后面的词遮住防止“偷看”。

2.Bert模型应用

这里分别介绍利用transformers库来进行完形填空和文本生成任务。

transformers库

在Bertology系列模型中,包含ELMO,BERT,Transformer-XL,GPT-3等多种预训练语言模型,这些模型代码接口不同,训练起来极耗算力资源,且使用复杂。为了解决这一问题,推出了transformers库。

完形填空
import torch
from transformers import BertTokenizer, BertForMaskedLM
from transformers import AutoModelWithLMHead
from transformers.models.auto.tokenization_auto import AutoTokenizer
#加载预训练模型 tokenizer (vocabulary)
tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')

#输入文本
text = "[CLS] Who is Li Jinhong ? [SEP] Li Jinhong is a programmer [SEP]"
tokenized_text = tokenizer.tokenize(text)
print(tokenized_text)

masked_index = 8 #掩码一个标记,用' B
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值