Bert模型精讲

news2024/12/24 9:49:54

1.Autoregressive语言模型与Autoencoder语言模型

1.1 语言模型概念介绍

Autoregressice语言模型:指的是依据前面(或后面)出现的单词来预测当前时刻的单词,代表有ElMo, GPT等。

Autoencoder语言模型:通过上下文信息来预测被mask的单词,代表有BERT,Word2vec(CBOW)。

1.2 二者各自的优缺点

Autoregressive语言模型:

-缺点:它只能利用单向语义而不能同时利用上下文信息。ELMo通过双向都做Autoregressive模型,然后进行拼接,但从结果来看,效果并不是太好。

-优点:对生成模型友好,天然符合生成式任务的生成过程。这也是为什么GPT能够编故事的原因。

Autoencoder语言模型:

-缺点:由于训练中采用了[MASK]标记,导致预训练数据与微调阶段数据不一致的问题。BERT独立性假设问题,即没有对被遮掩(MASK)的token之间的关系进行学习。此外对于生成式问题,Autencoder模型也显得捉襟见肘。

-优点:能够很好的编码上下文语义信息(即考虑句子的双向信息),在自然语言理解相关的下游任务表现突出。

2.DAE与Masked Language Model

2.1 AutoEncoder

如下图所示,AutoEncoer框架包含两个模块:编码过程和解码过程。通过encoder(g)讲输入样本x映射到特征空间z,即编码过程;然后再通过decoder(f)将抽象特征z抽象会原始空间得到重构样本 �~ ,即解码过程。优化目标则是通过最小化重构误差来同事优化encoder和decoder,从而学习得到针对输入样本x的抽象特征表示z.

这里我们可以看到,AutoEncoder在优化过程中无需使用样本的label,本质上是把样本的输入同时作为神经网络的输入和输出,通过最小化重构误差希望学习到样本的抽象特征表示z.这种无监督的优化方式大大提升了模型的通用性。

对于基于神经网络的AutoEncoder模型来说,则是encoder部分通过逐层降低神经元个数来对数据进行压缩;decoder部分基于数据的抽象表示逐层提升神经元数量,最终实现对输入样本的重构。

这里值得注意的是,由于autoencoder通过神经网络来学习每个样本的唯一抽象表示,这会带来一个问题:当神经网络的参数复杂到一定程度时AutoEncoder很容易存在过拟合的风险。

2.2 Denoising AutoEncoder(DAE)

为了缓解经典AutoEncoder容易过拟合的问题,一个办法时在输入中加入随机噪声,Vincent等人提出了Denoising AutoEncoder,即在传统AutoEncoder输入层加入随机噪声来增强模型的鲁棒性;另一个办法就是几何正则化思想,Rifai等人提出了Contractive AutoEncoder,通过在AutoEncoder目标函数中加上encoder的Jacobian矩阵范式来约束使得encoder能够学习具有抗干扰的抽象特征。

下图时Denoising AutoEncoder的模型框架。目前添加噪声的方式大多分为两种:

-添加服从特定分布的随机噪声;

-随机将输入x中特定比例的数值置为0

DAE模型的优势:

-通过与非破损数据训练得对比,破损数据训练出来得Weight噪声较小。因为擦除数据得时候不小心把输入噪声给擦掉了。

-破损数据一定程度上减轻了训练数据与测试数据得代沟。由于数据得部分被擦掉了,因而这破损数据一定程度上比较接近测试数据。

2.3 DAE与Masked Language Model联系

-BERT模型是基于Transformer Encoder来构建一种模型。

-BERT模型基于DAE(Denoising AutoEncoder,去噪自编码器)得,这部分在BERT中被称为Masked Language Model(MLM)

-MLM并不是严格意义上得语言模型,这仅仅是训练语言模型的一种方式。BERT随机把一些单词通过MASK标签来代替,并接着去预测被MASK得这个单词,过程其实就是DAE得过程。

3. Transformer模型回顾

Transformer模型使用经典得encoder-decoder架构,由encoder和decoder俩部分组成

-下图左侧用Nx框出来得,就是我们encoder得一层。encoder一共有6层这样得结构。

-下图右侧用Nx框出来得,就是我们把decoder得一层。decoder一共有6层这样得结构。

-输入序列经过Input Embedding和Positional Encoding相加后,输入到encoder中。

-输出序列经过Output Embedding和Positional Encoding相加后,输入到decoder中。

-最后,decoder输出得结果,经过一个线性层,然后计算softmax

3.1 Encoder部分

输入到原始词表中词得ID。接着进行Input Embedding,把词ID转换成分布式得表示。在语言模型中词得顺序还是很重要得,因此Transformer加入了Positional Encoding,也就是加入了词得位置信息。encoder得输入是Input Embedding加上对应位置得Positional Encoding.

Input Embedding加上对应位置得Positional Encoding作为encoder得输入,首先会经过Multi-Head Attention,学习输入中词与词之间得相关性。接着是Add&Norm层,Add残差得方式对不同得输出相加,是借鉴CV中得残差网络思想解决梯度消失问题;Norm 用得是Layer Norm.然后进行Feed Forward得前向计算,这一层就是全连接得神经网络。最后在接一层Add & Norm,防止梯度消失。

3.2 Decoder部分

通过encoder部分已经获得了所有输入得信息,把这些信息当作decoder后面Multi-Head Attention得输入,也就是self-attention得K,V来自输入得特征,Q来自decoder部分得输入。

decoder之前解码出得单词当作本次decoder得输入,也是通过Ouput Embedding加上对应位置得Positional Encoding输入到Masked Multi-Head Attention,再经过Add&Norm层,这里还把decoder输入和Masked Multi-head Attention输出做了残差连接,最后得到得输出就是我们上面提到得Q了。

把encoder部分获得得所有输入得信息和decoder前半部分得到得输入信息,一同送到后面这个Multi-head Attention中,它学习哪些输入信息和输出信息得特征更有利于解码,最后还经过了Add&Norm层、Feed Forward层和Add & Norm层,得到了decoder得最终输出。

解码这里要特别注意一下,编码可以并行计算,一次性全部encoding出来,但是解码不是一次把所有序列接出来得,而是像RNN一样一个一个解出来得,因为要用前几个位置单词得结果当作self-attention得query.

3.3 Linear和Softmax

拿到decoder得输出做一个线性变换,最后通过一个softmax计算对应位置得输出词得概率。Transformer本次得输出当作下一次decoder得输入。

思考:为什么NLP中一般使用Layer Norm,而不是Batch Norm?

回答:

-在CV中,深度网络中一般会嵌入批归一化(BatchNorm,BN)单元,比如ResNet;而NLP中,则往往向深度网络中插入层归一化(LayerNorm, LN)单元,比如Transformer。为什么在归一化问题上会有分歧?一个最直接得理由就是,BN用在NLP任务实在太差了(相比LN),此外,BN还难以直接用在RNN中,而RNN是前一个NLP时代得最流行模型。虽然有大量得实验观测,表面NLP任务里普遍BN比LN差太多,但是迄今为止,依然没有一个非常严谨得理论来正面LN相比BN在NLP任务里得优越性。

-基于文献,个人认为:BatchNorm就是通过对batch size这个维度归一化来让分布稳定下来,有助于训练深度神经网络,是因为它可以让loss曲面变得更加平滑。LayerNorm则是通过对Hidden Size这个维度归一化来让某层得分布稳定,主要作用是在训练初期缓解梯度消失和爆炸得问题,提升稳定性。

4. BERT模型

BERT得全称是Bidirectional Encoder Representation from Transformers,模型是基于Transformer中得Encoder并加上双向得结构,因此一定要熟练掌握Transformer得Encoder.BERT模型的主要创新点都在pre-train方法上,即用了Maksed Language Model和Next Sentence Prediction两种方法分别捕捉词语和句子级别得representation.

在用Masked Language Model方法训练BERT的时候,随机把语料库中15%的单词做Mask操作。对于这15%的单词做Mask操作分为三种情况:80%的单词直接用[Mask]替换,10%的单词直接替换成另一个新的单词,10%的单词保持不变。

因为涉及到Question Answering(QA)和Natural Language Inference(NLI)之类的任务,增加了Next Sentence Prediction预训练任务,目的是让模型理解两个句子之间的联系。与Masked Language Model任务相比,Next Sentence Prediction更简单些,训练的输入是句子A和B,B有一半的几率是A的下一句,输入这两个句子,BERT模型预测B是不是A的下一句。

因为注意力计算开销是输入序列长度的平方,较长的序列会影响训练速度,为了加快实验中的预训练速度,所以90%的steps都用序列长度为128进行预训练,余下10%的steps预训练为512长度的输入。

BERT预训练之后,会保存它的Embedding table和12层Transformer权重(bert-base)或24层 Transformer权重(bert-large).使用预训练好的bert模型可以对下游任务进行fine-tuing,比如:文本分类,相似度判断,阅读理解等。

5.BERT模型在实际场景的应用

BERT模型在现实中的应用:

-情感分类:通过用户对商品评价来对商品质量问题进行分析,比如是否新鲜,服务问题等;

-意图识别;

-问题匹配;

-槽位提取:BERT后接CRF来做命名实体识别;

6.BERT模型的预训练及其改进

7.BERT的fine-tuning不同训练方式及常见的改进策略

7.1 Fine-tuing的不同训练方式

7.2 BERT的Fine-tuning中常见的改进策略

如果机器不足、预料不足、一般都会直接考虑用原始的BERT、Roberta、XLnet等在下游任务中微调,这样我们就不能在预训练阶段进行改进,只能在fine-tuning阶段进行改进。改进方案如下图所示:

7.3 BERT在实践中的trick

-筛选训练数据,剔除过短或者过长的数据;

-尝试bert+conv,bert+conv+avg_max_pooling,best_last_layer_concat等方式;

-针对本场景数据,进行少步数的进一步预训练;

8.总结

BERT模型作为当今NLP应用大杀器,具有易于使用、稳定性强等诸多优点。本文深入了解BERT的原理,如何做到BERT的预训练改进以及Fine-tuning中所涉及到的常见改进策略。另外,本文也讲述了BERT模型在实际场景中的应用及在实践中的一些tricks.

Microstrong:BERT模型精讲

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/652894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux GCC,GDB,Shell脚本,Vim的简单使用

这里写目录标题 GCC命令GDB命令Shell脚本VIM指令 GCC命令 GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器 编译一个简单的.c程序: 四步分开写: gcc -E -o hello.i hello.c // 预处理 gcc -…

chatgpt赋能python:Python怎么绕过登录爬取数据

Python怎么绕过登录爬取数据 在进行网站爬取时,经常会发现需要登录才能访问所需要的数据,这给我们的爬虫程序带来了一定的难度。本文就介绍一些Python绕过登录的方法,让你获取到所需的数据。 1. Session维持登录状态 当我们登录一个网站时…

运维实践 | 运维打工人必备 CentOS-Linux/Stream-8 服务器系统基础安装与配置实践...

欢迎关注「全栈工程师修炼指南」公众号 点击 👇 下方卡片 即可关注我哟! 设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习! 专注 企业运维实践、网络安全、系统运维、应用开发、物联网实战、全栈文章 等知识分享 “ 花开堪折直须折&#xf…

【LeetCode】python 主要元素 摩根投票法

目录 题目: 题解: 1.纯暴力(字典) 2. 摩根投票法 题目: 数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空…

电脑中的个人私密视频该怎么加密?

因为电脑内存空间较大,所以很多人喜欢将拍摄的视频存放在电脑中,这其中就会有一些比较私密,不适合被其他人看到的视频。为了保护这些视频的安全,我们需要合适的方法对其进行加密保护。下面我们就一起来了解一下电脑中的个人私密视…

GAMES101笔记 Lecture 01

目录 Overview of Computer Graphics图形学的应用场景Video GamesMoviesAnimationsDesignVisualizationVirtual RealityDigital IllustrationSimulationGraphical User InterfacesTypography 为什么要学习计算机图形学?Fundamental Intellectual Challenges(图形学很…

Opencv-C++笔记 (5) : opencv-形态学

文章目录 1、形态学运算与结构2、腐蚀膨胀运算3、膨胀4、自定义结构元素5、开闭运算开运算闭运算 6、形态学梯度7、其他形态学-顶帽、黑帽、击中不击中8、核函数矩形核十字形核椭圆核 1、形态学运算与结构 形态学运算是针对二值图像依据数学形态学(Mathematical Morphology)的集…

Prefix-Tuning: Optimizing Continuous Prompts for Generation

《Prefix-Tuning: Optimizing Continuous Prompts for Generation》阅读笔记 论文题目:Prefix-Tuning: Optimizing Continuous Prompts for Generation论文链接:https://arxiv.org/pdf/2101.00190论文来源:Arxiv (2021&#xff0…

CentOS 7安装 Postgre

零、前置条件 系统CentOS 7,并已联网,已安装gcc或者g编译器,GNU make版本3.80或以上,系统有至少一个除root之外的普通用户user gcc安装-参考链接查看make命令的版本——make --version更新make版本-参考链接postgresql的使用一般…

【nginx】网页上传文件报错413 Request Entity Too Lange

前言 413 Request Entity Too Lange,由于您的请求实体太长,服务器无法处理。请尝试缩短请求体的内容或者采取其他方式进行操作。如果问题仍然存在,请检查您的请求是否符合服务器的限制和要求,并尝试联系服务器管理员寻求帮助 可以…

轻松掌握 Postman Newman API 测试技巧

目录 前言: Postman Newman 是什么? Postman Newman 的作用 如何使用 Postman Newman? 第一步:安装 Node.js 第二步:全局安装 Newman 第三步:导出集合或环境变量为 JSON 格式 第四步:使…

Python-Selenium-定位详解

目录 前言: 一、id定位 二、name定位 三、class_name定位 四、xpath定位 五、css_selector定位 六、tag_name定位 七、link_text 定位 八、Xpath&Css定位方法速查表 九、By定位 十、elements复数定位 十一、JS的定位 前言: Python是一种…

Jetpack Compose中的LaunchedEffect与rememberCoroutineScope

Jetpack Compose中的LaunchedEffect与rememberCoroutineScope 深入了解Compose副作用API LaunchedEffect和rememberCoroutineScope。 探索使用LaunchedEffect和rememberCoroutineScope的区别和使用场景。 什么是副作用? 副作用是指在可组合函数范围之外发生的任何…

2024考研408-计算机组成原理第三章-存储系统

文章目录 前言一、存储器概述1.1、层次结构1.2、存储器分类1.2.1、层次分类1.2.2、存储介质分类1.2.3、存取方式1.2.4、按照信息的可更改性(读写、只读区别) 1.3、存储器性能指标知识回顾 二、主存储器2.1、主存储器的基本组成(介绍DRAM&…

Axios和Spring MVC[前端和后端的请求和响应处理]

在前后端交互中,Axios和Spring MVC扮演着不同的角色,分别负责前端和后端的请求和响应处理。它们之间的作用如下: Axios(前端): 发送HTTP请求:前端使用Axios库发送HTTP请求到后端。可以使用Axi…

HarmonyOS 极客马拉松2023 正式启动,诚邀极客们用键盘码出无限可能!

原文:HarmonyOS 极客马拉松2023 正式启动,诚邀极客们用键盘码出无限可能!,点击链接查看原文进入报名通道。 2023年6月15日, HarmonyOS极客马拉松2023开赛!期待各位开发者极客朋友一起,探索移动应…

IT自动化运维工具优势与劣势分析-行云管家

随着自动化技术的进步,目前市面上出现了不少IT自动化运维工具。但很多人对于IT自动化运维工具优劣势不是很清楚,这里我们就来一起简单分析分析。 IT自动化运维工具优势 1、提高IT运维工作人员工作效率,提升整体项目效率; 2、提…

HQChart使用教程30-K线图如何对接第3方数据37-如何绘制圆点

HQChart使用教程30-K线图如何对接第3方数据37-如何绘制圆点 效果图步骤json格式nametypeDrawDraw.DrawTypeDraw.DrawData[] HQChart代码地址 效果图 步骤 步骤和第3方指标替换一样, 通过网络协议回调,知道需要执行的指标, 替换自己的数据。这…

chatgpt赋能python:Python中的整数筛选与小数筛选

Python中的整数筛选与小数筛选 Python是一种高级编程语言,常见于各种领域的编程工作中。在Python中,我们可以很方便地筛选整数和小数,用于数据分析、算法计算、图像处理等多个方向。本文将从Python中的整数筛选和小数筛选两个方面进行介绍和…

90%电子工程师都没学透的3W规则,这篇文章一次性告诉你

在PCB设计中,了解和应用3W规则是非常重要的,能帮助工程师在设计阶段时考虑到电路板的功率分布、热管理和可靠性,但很多电子工程师对3W规则只处于皮毛学习阶段,没有做到真正掌握,导致电子设计技术没长进,所以…