从零开始NLP--task6

学习目标
• 了解Transformer的原理和基于预训练语言模型(Bert)的词表示
• 学会Bert的使用,具体包括pretrain和finetune
1.Transformer
1.1Transformer的编码部分和解码部分分别是一组编码器或者解码器的堆叠。
https://jalammar.github.io/illustrated-transformer/
1在这里插入图片描述
1.2Self-Attention中使用多头机制,使得不同的attention heads所关注的的部分不同在这里插入图片描述
1.3编码器结构中每个子层(Self-attention, FFNN),都有残差连接,并且紧跟着layer-normalization
在这里插入图片描述

2.BERT
全称是Bidirectional Encoder Representation from Transformers,即对Transformer的双向编码进行调整后的算法。这种预训练模型所针对的核心问题,就是NLP的效率难题。是一个基于Transformer的多层Encoder
在这里插入图片描述
BERT优势
BERT拥有一个深而窄的神经网络。transformer的中间层有2018,BERT只有1024,但却有12层。因此,它可以在无需大幅架构修改的前提下进行双向训练。由于是无监督学习,因此不需要人工干预和标注,让低成本地训练超大规模语料成为可能。

BERT模型能够联合神经网络所有层中的上下文来进行训练。这样训练出来的模型在处理问答或语言推理任务时,能够结合上下文理解语义,并且实现更精准的文本预测生成。

BERT只需要微调就可以适应很多类型的NLP任务,这使其应用场景扩大,并且降低了企业的训练成本。BERT支持包括中文在内的60种语言,研究人员也不需要从头开始训练自己的模型,只需要利用BERT针对特定任务进行修改,在单个云TPU上运行几小时甚至几十分钟,就能获得不错的分数。

BERT训练过程
首先,将语料中的某一部分词汇遮盖住,让模型根据上下文双向预测被遮盖的词,来初步训练出通用模型。

然后,从语料中挑选出连续的上下文语句,让transformer模型来识别这些语句是否连续。

这两步合在一起完成预训练,就成为一个能够实现上下文全向预测出的语言表征模型。

最后,再结合精加工(fine tuning)模型,使之适用于具体应用。
链接: https://genening.github.io/2020/07/26/NLP/nlp-6-%E5%9F%BA%E4%BA%8E%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%9A%84%E6%96%87%E6%9C%AC%E5%88%86%E7%B1%BB3/.
3实践
调用 transformer 库。
需要三个文件,一个vocab(构造一个词汇表即可),
一个model.bin,
一个config(这两个都可以下载到,不同的模型对应不同的bin和config,datawhale提供了bert-mini,可以说很不错了,我还真没找到mini的bin和config),三个文件放到同一个文件夹下面目录就可以了,载入靠transformer 库完成。
载入tokenize:
#bert_path 指的是目录,他要找到对应的config和vocab

#bert_path 指的是目录,他要找到对应的config和vocab
self.tokenizer = BertTokenizer.from_pretrained(bert_path)

2.做bert的预处理:
直接调库,获得embedding张量和 mask张量即可,这个预处理,mask、截断、cls、sep 都不需要重新做

encoded_dict = self.tokenizer.encode_plus(
            self.corpus[item],  # 输入文本
            add_special_tokens=True,  # 添加 '[CLS]''[SEP]'
            max_length=self.max_length,  # 填充 & 截断长度
            pad_to_max_length=True,
            return_attention_mask=True,
            return_tensors='pt',
            truncation=True
        )

# 要的是这两个张量
encoded_dict['input_ids'].squeeze(0)
encoded_dict['attention_mask'].squeeze(0)

链接: https://www.yuque.com/zzhijiki/ssgfub/yxv2ib.
https://zhuanlan.zhihu.com/p/156800832

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值