当前位置:网站首页>预训练模型 Bert
预训练模型 Bert
2022-08-02 14:07:00 【lq_fly_pig】
本篇开启bert源码讲解系列,从bert模型的基础开始讲起,结合HuggingFace出品的 pytorch源码逐步分析,有些图片来自于网络,有冒犯的,麻烦告知下~
一、bert介绍
BERT,全称是 Bidirectional Encoder Representation from Transformers,基于语义理解的深度双向预训练Transformer, 重点在于以下5点,(nlp领域 效果大幅度提升,横扫各种比赛榜单)
1.Deep ,Bert 的神经网络层更深,通过叠加多层网络结构,提取更多的语义信息,更加丰富的表达语义
2. Bidirectional ,Bert 重点在于双向,通过双向模型,有效的获取目标词语的上下文信息,结合上下文更能学习到词语的语义信息,说的通俗一点,有点类似于完形填空的阅读理解任务,结合目标词语的上下文信息,预测目标词语
3.Transformer,Bert是基于 transformer的深度双向语言模型,使用了 transformer中的Encoder结构,通过叠加Encoder 结构 来加深模型层数,后面会讲到具体的模型结构。Bert 模型 输入和transformer有些差异,如 position id 是随机初始化。
4.pre-training,Bert是一个 pre-training 预训练模型,通过大量数据训练出embeding 的语义表征信息,在下游任务中 使用小样本的数据进行fine-tune 微调,通常在下游任务中 都能取得不错的效果
5.Language Understanding
Bert 是一个用 Transformer 作为特征抽取器的深度双向预训练语言理解模型,利用双向 Transformer,通过大量数据训练一个语言表征模型,通过小样本对其微调来适用下游任务,包括分类,回归,机器翻译,问答系统等等任务。如下图所示,“他们到河岸钓鱼“

二、bert模型结构
2.1bert模型输入

上文是经典的例子,表示Bert模型的输入
Token Embeddings : 指的是word Embeddings
Segment Embeddings : 为了将多个句子区分,第一个句子可能用0表示,第二个用1
Position Embeddings : 位置embedding是将位置用低维稠密向量表示,和Transformer不一样,不是三角函数而是学习出来的
2.2 bert模型预训练任务
任务一:Mask language model:遮掩语言模型
类似于完形填空的任务,通过上下文预测目标词汇,具体在bert的任务中,15% 的tokens 进行随机mask,也就是随机掩盖15%的 tokens,其中 这个15%的tokens也分为以下三种情况:
1. 80%的tokens使用'mask' 字符进行替换,如 “my dog is cute ” --> "my dog is [mask]"
2. 10% 的 tokens 使用其他随机字符进行替换,如 “my dog is cute ” --> "my dog is iphone"
3.10% 的字符替换成本身,也就是保持不动,如 “my dog is cute ” --> "my dog is cute "

在最后的预测中,使用的是softmax 预测 mask的 token 的概率,其中score最高的token 就是预测的单词
任务二:Next Sentence Prediction:预测下一个句子(关系)
NSP任务 更加关注两个句子之间的关系,相比较 MLM的任务,该任务较简单。训练输入数据格式为, <sentence1,sentence2>,任务是学习 sentence2是否 是sentence1的 下一句,Bert训练任务中,主要是以下两种情况:
1.50%的输入是一对连续句子
2.50%的输入是随机组合的不连续的句子

模型输入的时候,使用【CLS】 【SEP】来标记 ,句子开头插入 【CLS】符号, 句子结尾插入【SEP】.
【CLS】: classification Token ,主要是用于分类任务中,bert中CLS 放在第一位,其实 也可以放在中间,或者 后面
【SEP】Special Token 是用来区分两个句子
2.3 bert模型的使用
Bert推动了NLP 领域中的四大任务的发展,这四大任务分别为:单句子分类,句子对分类任务,问答任务,单个句子标注任务
1.单句子分类任务:

2. 句子对分类任务:

3. 问答任务:

4.序列标注任务

后续系列着重介绍,BERT源码分析
边栏推荐
猜你喜欢

App signature in flutter

NDK报错问题分析方案(一)

我理解的学习金字塔

MongoDB Compass 安装与使用

原码、补码、反码

线性代数期末复习存档

Using the cloud GPU + pycharm training model to realize automatic background run programs, save training results, the server automatically power off

In the Visual studio code solutions have red wavy lines

spark优化

宝塔搭建DM企业建站系统源码实测
随机推荐
电商项目常见连续登录,消费,日期等问题
spark写sql的方式
详解RecyclerView系列文章目录
ThinkPHP5.0内置分页函数Paginate无法获取POST页数问题的解决办法
国内IT市场还有发展吗?有哪些创新好用的IT运维工具可以推荐?
mysql常用函数
存储系统Cache(知识点+例题)
OpenCart迁移到其他服务器
宝塔搭建PESCMS-Ticket开源客服工单系统源码实测
MapReduce流程
Flink依赖汇总
YOLOv7 uses cloud GPU to train its own dataset
LLVM系列第二十七章:理解IRBuilder
华为防火墙
LLVM系列第二十四章:用Xcode编译调试LLVM源码
spark优化
spark on yarn
St. Regis Takeaway Notes - Lecture 05 Getting Started with Redis
宝塔面板搭建小说CMS管理系统源码实测 - ThinkPHP6.0
ABP,kendo后台接口,新增,查询