NLP(4)--BERT

目录

一、自监督学习

二、BERT的两个问题

三、GLUE

四、BERT与Transformer的关系

五、BERT的训练方式

六、BERT的四个例子

1、语句分类(情感分析)

2、词性标注

3、立场分析 

4、问答系统 

七、BERT的后续

1、为什么预训练后的微调可以满足多场景

2、BERT在非自然语言领域应用

3、Multi-BERT

4、奇怪的Bias

 八、GPT


一、自监督学习

        为什么讲BERT要先提到自监督学习呢,因为BERT中的Mask language model思想就来自于自监督学习。

        自监督学习:通过使用无标签数据,通过利用自身数据的特征、关系来训练出一个满足数据特征的模型。但其实也并非用不到标签,而是构造辅助的数据集和标签来进行训练。

二、BERT的两个问题

        BERT主要研究两个问题Masking input和Next sentense prediction。        

        在NLP领域,做文字接龙时可以将数据集中一部分文字做随机的Mask,构造辅助的数据集和标签,来训练那些被删除掉的字或词。如下面这张图中,“湾”这个字就是被Mask掉的,可能输入是一个特殊的token,也有可能是一个随机的噪声字,输出时通过归一化后,做了一个分类,分类最高分就是我们要求训练的东西,也就是被删除的字。

        在NLP领域,还有一个句子序列是否相接正确问题。在BERT中,通过[SEP]划分两个句子,将[CLS]丢入BERT模型,再经过Linear后输出句子1和句子2是否连接的真值。但很多文献说这个方法并没有什么用。

        另一个模型ALBERT使用的是SOP而不是传统BERT的NSP方法,能达到更好的预训练效果。

三、GLUE

        在NLP领域分为NLU(自然语言理解)和NLG(自然语言生成)两个部分,为了寻求NLU的评判标准,诞生了GLUE(Gerenal Language Understanding Evaluation)这个涵盖多任务的自然语言理解基准和分析平台,GLUE包含CoLA、SST-2、MRPC、STS-B、QQP、MNLI、QNLI、RTE、WNLI九个任务涵盖自然语言推断、文本蕴含、情感分析等方面。

四、BERT与Transformer的关系

        其实BERT也是基于Transformer的架构的一种“预训练模型”,相比于传统Transformer有几个区别:

1、BERT是双向性的,可以利用context来进行预测每个词,而传统Transformer和GPT都是利用左侧的信息。

2、预训练任务,BERT采用了Masked Language Model任务,也就是随机Mask一些词,来预测被Mask掉的词。

3、NSP,判断两个句子是否相连,理解句子与句子之间的关系。

4、数据量更大,参数更多,层次更多,模型更大,相比于传统Transformer输入一串序列,输出一串序列,BERT可以生成更高质量的文本信息。

五、BERT的训练方式

        BERT训练分为两个阶段,预训练(Pre-training)和微调(Fine-tuning)。

        预训练,使用大量无标签的文本进行训练,并进行MLM和NSP两个部分,来学习到通用的语言表示,包括词的级别和句子级别的信息。

        微调,将带有标签的任务数据对BERT进一步训练,可以针对不同的下游任务,比如问答、情感分类等,将任务特定的输出层添加到BERT模型的顶部,利用标注数据进行监督学习。依靠不同的下游任务学习到更符合不同任务的模型。

六、BERT的四个例子

1、语句分类(情感分析)

        语句分类,也就是对于某一个句子分类他的感情色彩,比如positive和negitive。

        具体做法仍然是将一个句子的CLS扔入BERT中,输出向量做Linear+Softmax的归一化,得到的类别进行二分类问题。

2、词性标注

        对于每一个token的输出向量做Linear+Softmax操作,得到的向量进行多分类问题,来预测各个词的词性。

3、立场分析 

        输入两个句子,前提和假设,让模型去判断假设是与前提立场相同,或是反对,亦或是保持中立。

        在具体操作中,仍然是将CLS作为两个句子之间的立场关系,通过CLS的输出向量进入Linear+Softmax后进行多分类操作,预测立场。 (这一点与NSP类似)

4、问答系统 

        通过学习已知文章库,找出某个问题的答案,答案的内容必须在文章中,也就是说截一个片段,一个词语作为答案。问答系统中,通过输入问题和文章库,输出两个值s和e,则答案就是从第s到第e个词汇的片段。

        具体做法是,随机初始两个向量,为答案的开始和结束,分别在下图为橘色和蓝色框框,这个长度要与输出长度一致,通过分别和输出的向量做内积后判断最大值得到两个最大值的输出索引,分别就是s和e。

七、BERT的后续

1、为什么预训练后的微调可以满足多场景

        其实感觉还是有一定的玄学因素,下图是通过测量不同语境下同一个词的余弦相似度,做了混淆矩阵证明Pre-train确实可以让BERT在无标签文本数据中学会词与词,句子之间的信息关系,这样可以迁移到不同的下游任务中。

2、BERT在非自然语言领域应用

        将BERT应用于蛋白质、DNA、音乐等非自然语言领域的分类,通过每个氨基酸给定一个词汇、每一个音符给定一个词汇,将任何非文字的形式也可以转换成词向量,然后按照最开始语句分类来做。由于BERT模型在Pre-train中学习到了通用的语言表示,有一定的泛化能力,最后发现实验的效果很不错。

3、Multi-BERT

        更玄学的东西。

        使用中文甚至多种语言来进行Pre-train,利用Chinese+English进行微调,但测试Chinese竟然分数比单纯用Chinese的微调,竟然分数高。另外Pre-train中只是进行了完形填空,但微调做了中文的Q&A,也可以做到很好地Test Score。

        这也说明了虽然不同的语言,但在Pre-train Multi-Languages时其实已经学会了其中的语义,而不只是语言,可以理解为BERT一视同仁了。

4、奇怪的Bias

        通过微调学习中文的Q&A,但添加了中文微调Q&A与英文微调Q&A之间的Bias,就可以在不直接微调学习英文Q&A的情况下,得到微调学习英文Q&A的效果,间接学习!

 八、GPT

        GPT模型,仍然是一种无监督的进行预训练,有监督的下游任务微调的结构,是基于Transformer的一种预训练语言模型。

        GPT相较于Transformer来说,使用了多次迭代12次的decoder模块(且删除了中间的Multi-Head Attention模块)

        相比于BERT进行做完形填空,GPT目的是进行生成下一个token。

        另外就是,GPT也是只知道上文不知道下文的注意力机制,要不然就出现了漏题的效果。

参考视频:2021 - 自监督式学习 (三) – BERT的奇闻轶事_哔哩哔哩_bilibili

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

北京互联网营销服务商浩希数字科技申请1350万美元纳斯达克IPO上市

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于北京的互联网营销服务商浩希数字科技(Haoxi Health Technology Limited )近期已向美国证券交易委员会(SEC)提交招股书,申请在纳斯…

08-JVM垃圾收集器详解

上一篇:07-垃圾收集算法详解 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 虽然我们对各个收集器进行比较,但并非为了挑选出一个最好的收集器。因为直到现在为止还没有最好的垃圾收集器出现,更加没…

vue学习之条件渲染

条件渲染 用于控制组件显示创建 demo6.html,内容如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title&…

JavaScript-----jQuery

目录 前言&#xff1a; 1. jQuery介绍 2. 工厂函数 - $() jQuery通过选择器获取元素&#xff0c;$("选择器") 过滤选择器&#xff0c;需要结合其他选择器使用。 3.操作元素内容 4. 操作标签属性 5. 操作标签样式 6. 元素的创建,添加,删除 7.数据与对象遍历…

vue学习之事件绑定

事件绑定 创建 demo5.html,内容如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</…

jupyter 添加中文选项

文章目录 jupyter 添加中文选项1. 下载中文包2. 选择中文重新加载一下&#xff0c;页面就变成中文了 jupyter 添加中文选项 1. 下载中文包 pip install jupyterlab-language-pack-zh-CN2. 选择中文 重新加载一下&#xff0c;页面就变成中文了 这才是设置中文的正解&#xff…

目标检测笔记(十五): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)

文章目录 一、目标检测介绍二、YOLOX介绍三、源码获取四、环境搭建4.1 环境检测 五、数据集准备六、模型训练七、模型验证八、模型测试 一、目标检测介绍 目标检测&#xff08;Object Detection&#xff09;是计算机视觉领域的一项重要技术&#xff0c;旨在识别图像或视频中的…

Jmeter进阶使用指南-使用参数化

Apache JMeter是一个广泛使用的开源负载和性能测试工具。在进行性能测试时&#xff0c;我们经常需要模拟不同的用户行为和数据&#xff0c;这时候&#xff0c;参数化就显得尤为重要。此文主要介绍如何在JMeter中使用参数化。 什么是参数化&#xff1f; 参数化是一种将静态值替…

注意力机制讲解与代码解析

一、SEBlock(通道注意力机制) 先在H*W维度进行压缩&#xff0c;全局平均池化将每个通道平均为一个值。 &#xff08;B, C, H, W&#xff09;---- (B, C, 1, 1) 利用各channel维度的相关性计算权重 (B, C, 1, 1) --- (B, C//K, 1, 1) --- (B, C, 1, 1) --- sigmoid 与原特征相…

Ubuntu终端指令

目录 目录 一、基本指令 1.命令行提示符 2.切换用户 3.修改密码 4.查看当前目录下的文件 5.修改文件权限---chmod 6.cd 切换路径 7.touch 8.cat 9.echo 10.mkdir 11. rm/rmdir 二、在线下载软件 1.更新软件源 2.更新软件列表 3.下载软件 三、离线安装软件 1. …

ansible搭建

一&#xff0c;ansible是一种由Python开发的自动化运维工具&#xff0c;集合了众多运维工具&#xff08;puppet、cfengine、chef、func、fabric&#xff09;的优点&#xff0c;实现了批量系统配置、批量程序部署、批量运行命令等功能 二&#xff0c;特点 * 部署简单 * **默认…

Docker:01 OverView

Docker&#xff1a;01 OverView 基本介绍 Docker是一个用于开发、交付、运行应用程序的开放平台&#xff0c;可以使应用程序与基础架构分开&#xff0c;以便快速交付软件。 Docker在一个被叫做容器的隔离环境下&#xff0c;提供了打包和运行的能力。 容器非常轻量化&#x…

时序分解 | MATLAB实现基于小波分解信号分解分量可视化

时序分解 | MATLAB实现基于小波分解信号分解分量可视化 目录 时序分解 | MATLAB实现基于小波分解信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于小波分解的分量可视化&#xff0c;MATLAB编程程序&#xff0c;用于将信号分解成不同尺度和频率的子信…

ARM DIY(十一)板子名称、开机 logo、LCD 控制台、console 免登录、命令提示符、文件系统大小

文章目录 前言板子名称uboot Modelkernel 欢迎词、主机名 开机 logoLCD 控制台console 免登录命令提示符文件系统大小 前言 经过前面十篇文章的介绍&#xff0c;硬件部分调试基本完毕&#xff0c;接下来的文章开始介绍软件的个性化开发。 板子名称 uboot Model 既然是自己的…

云备份——服务端客户端联合测试

一&#xff0c;准备工作 服务端清空备份文件信息、备份文件夹、压缩文件夹 客户端清空备份文件夹 二&#xff0c;开始测试 服务端配置文件 先启动服务端和客户端 向客户端指定文件夹放入稍微大点的文件&#xff0c;方便后续测试断点重传 2.1 上传功能测试 客户端自动上传成功…

【FPGA】通俗理解从VGA显示到HDMI显示

注&#xff1a;大部分参考内容来自“征途Pro《FPGA Verilog开发实战指南——基于Altera EP4CE10》2021.7.10&#xff08;上&#xff09;” 贴个下载地址&#xff1a; 野火FPGA-Altera-EP4CE10征途开发板_核心板 — 野火产品资料下载中心 文档 hdmi显示器驱动设计与验证 — …

《服务器无状态设计:为什么如何实现无状态API?》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

高速路自动驾驶功能HWP功能定义

一、功能定义 高速路自动驾驶功能HWP是指在一般畅通高速公路或城市快速路上驾驶员可以放开双手双脚&#xff0c;同时注意力可在较长时间内从驾驶环境中转移&#xff0c;做一些诸如看手机、接电话、看风景等活动&#xff0c;该系统最低工作速度为60kph。 如上两种不同环境和速度…

你参与的APP开发项目安全吗?

Android将安全设计贯穿系统架构的各个层面&#xff0c;覆盖系统内核、虚拟机、应用程序框架层以及应用层各个环节&#xff0c;力求在开放的同时&#xff0c;也恰当保护用户的数据、应用程序和设备的安全。Android安全模型主要提供以下几种安全机制&#xff1a; 进程沙箱隔离机…

【100天精通Python】Day59:Python 数据分析_Pandas高级功能-多层索引创建访问切片和重塑操作,pandas自定义函数和映射功能

目录 1 多层索引&#xff08;MultiIndex&#xff09; 1.1 创建多层索引 1.1.1 从元组创建多层索引 1.1.2 使用 set_index() 方法创建多层索引 1.2 访问多层索引数据 1.3 多层索引的层次切片 1.4 多层索引的重塑 2 自定义函数和映射 2.1 使用 apply() 方法进行自定义函…