bert其他内容个人记录

Pre-training a seq2seq model

BERT只是一个预训练Encoder,有没有办法预训练Seq2Seq模型的Decoder?

在一个transformer的模型中,将输入的序列损坏,然后Decoder输出句子被破坏前的结果,训练这个模型实际上是预训练一个Seq2Seq模型。

 可以采用mass或BART手段损坏输入数据,mass是盖住某些数据(类似于masking),BART是综合了右边所有的方法(盖住数据、删除数据、打乱数据顺序、旋转词的顺序等等),BART的效果要比mass好。

 Training BERT is challenging

目前要训练BERT难度很大,一方面是数据量庞大,处理起来很艰难;另一方面是训练的过程需要很长的时间。

谷歌最早的BERT,它使用的数据规模已经很大了,包含了30亿个词汇。BERT有一个base版本和一个large版本。对于大版本,我们很难自己训练它,所以我们尝试用最小的版本来训练,看它是否与谷歌的结果相同。横轴是训练过程,参数更新多少次,大约一百万次的更新,用TPU运行8天,如果你在Colab上做,这个至少要运行200天。在Colab上微调BERT只需要半小时到一小时

 我们自己训练BERT后,可以观察到BERT什么时候学会填什么词汇,它是如何提高填空能力的? 论文的链接https://arxiv.org/abs/2010.02480

 为什么pre-train的BERT会做填空题,微调一下就能用作其他的应用呢?

输入一串文本,每个文本都有一个对应的输出向量,这个向量称之为embedding,代表了输入词的含义。意思越相近的字产生的向量越接近,如图右部分。同时,BERT会根据上下文,不同语义的同一个字产生不同的embedding

下图中,根据 "苹果 "一词的不同语境,得到的向量会有所不同。计算这些结果之间的cosine similarity,即计算它们的相似度。计算每一对之间的相似度,得到一个10×10的矩阵。相似度越高,这个颜色就越浅。前五个 "苹果 "和后五个 "苹果 "之间的相似度相对较低。BERT知道,前五个 "苹果 "是指可食用的苹果,所以它们比较接近。最后五个 "苹果 "指的是苹果公司,所以它们比较接近。所以BERT知道,上下两堆 "苹果 "的含义不同

 训练填空题BERT时,就是从上下文提取信息来填空,学会了每个汉字的
意思,也许它真的理解了中文,既然它理解了中文,在接下来的任务中只要微调即可。

使用BERT分类蛋白质、DNA链

和以前一样,Linear classification使用随机初始化,而BERT是通过预训练模型得到的参数初始化的,它已经学会了英语填空。

DNA是一系列的脱氧核团核酸,有四种,分别用A、T、C和G表示。用BERT来对DNA进行分类,例如,"A "是 "we","T "是 "you","C "是 "he","G "是 "she"。例如,"AGAC "变成了 "we she we he",不知道它在说什么,这个英文句子没意义,所以即使你给BERT一个无意义的句子,它仍然可以很好地对句子进行分类。

蛋白质是由氨基酸组成的,有十种氨基酸,给每个氨基酸一个随机的词汇

如果不使用BERT,你得到的结果是蓝色部分,如果你使用BERT,你得到的结果是红色部分

 Multi-lingual BERT(多语言BERT) 

Multi-lingual BERT是用许多不同的语言预训练的BERT。fine-tune是训练时输入的语言,test是测试时输入问题和文章的语言。

如果把一个Multi-lingual的BERT用英文问答数据进行微调,它就会自动学习如何做中文问答,有78%的正确率。BERT在预训练中学到了英文填空和中文填空,在微调中学到了做英文问答。 但BERT未接受过中文和英文之间的翻译训练,也从未用中文问答数据进行微调,就自动学会了做中文问答

 

为什么会自动学会呢?一个简单的解释是:也许对于多语言的BERT来说,不同的语言并没有那么大的差异。无论你用中文还是英文显示,对于具有相同含义的单词,它们的embedding都很接近。汉语中的 "跳 "与英语中的 "jump "接近,汉语中的 "鱼 "与英语中的 "fish "接近,汉语中的"游 "与英语中的 "swim "接近,也许在学习过程中它已经自动学会了。

可以用Mean Reciprocal Rank验证,缩写为MRR。MRR的值越高,不同embedding之间的Alignment就越好。更好的Alignment意味着,具有相同含义但来自不同语言的词将被转化为更接近的向量。

这条深蓝色的线是谷歌发布的104种语言的Multi-lingual BERT的MRR,它的值非常高,这说明不同语言之间没有太大的差别。Multi-lingual BERT只看意思,不同语言对它没有太大的差别。

数据量增加了五倍,才达到Alignment的效果。数据量是一个非常关键的因素,关系到能否成功地将不同的语言排列在一起。

 如果BERT认为不同语言之间没有区别,那么在英文填空中为什么不用中文符号填空呢?说明它知道语言的信息也是不同的,并没有完全抹去语言信息

 将所有中文的embbeding平均一下,英文的embbeding平均一下,发现两者之间存在着差距,这个差距用一个蓝色向量来表示。对一个Multi-lingual BERT输入英文问题和文章,他会输出一堆embedding,在embedding中加上这个蓝色的向量,这就是英语和汉语之间的差距。(此处是同义但不同语言,类比一下,所以同义的不同字代表的向量之间可能存在一个小小的偏差,改变偏差就能保证同义下改变字。)
 

参考:

李宏毅机器学习--self-supervised:BERT、GPT、Auto-encoder-CSDN博客

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

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

相关文章

Docker中安装Oracle11g和oracle增删改查

Docker中安装Oracle11g和oracle增删改查 Docker中安装Oracle11g数据库 Docker 安装oralce11g 1.拉取oracle_11g镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g2.创建oracle11g容器 docker run -d -p 1521:1521 --name oracle11g registry.cn-hang…

【LeetCode刷题】-- 79.单词搜索

79.单词搜索 方法:使用回溯 使用dfs函数表示判断以网格的(i.j)位置出发,能否搜索到word(k),其中word(k)表示字符串word从第k个字符开始的后缀子串,如果能搜索到,返回true,反之返回false 如果board[i][j]≠word[k]&am…

linux的权限管理

在Linux系统中,文件和目录的权限管理是通过用户、组以及其他用户对文件和目录的读(r)、写(w)和执行(x)权限来实现的。以下是有关Linux权限管理的详细解释: 文件和目录权限&#xff1…

Netty线程模型

Netty线程模型 Netty中两个线程池, 分别是BossGroup和WorkGroup, 线程模型如下图所示: 模型解释: Netty 抽象出两组线程池BossGroup和WorkerGroup,BossGroup专门负责接收客户端的连接, WorkerGroup专门负责网络的读写BossGroup和WorkerGr…

vue2 echarts饼状图,柱状图,折线图,简单封装以及使用

vue2 echarts饼状图,柱状图,折线图,简单封装以及使用 1. 直接上代码(复制可直接用,请根据自己的文件修改引用地址,图表只是简单封装,可根据自身功能,进行进一步配置。) …

【灰度发布】APP如何实现灰度发布

要实现Java后端服务的灰度发布,可以按照以下步骤进行: 1. **版本控制和构建**:使用版本控制系统(如Git)来管理代码,并确保每个发布版本都有唯一的标识。使用构建工具(如Maven或Gradle&#xff…

springcloud多环境部署打包 - maven 篇

背景 在使用 springboot 和sringcloudnacos开发项目过程中,会有多种环境切换,例如开发环境,测试环境,演示环境,生产环境等,我们通过建立多个 yml 文件结合 profiles.active 属性进行环境指定,但…

k8s 安装 Longhorn

Longhorn 的 helm 模板官网地址:Longhorn 加入仓库 helm repo add longhorn https://charts.longhorn.iohelm repo update开始部署 helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace --version 1.5.3检查pod运行状态是…

c语言上机小练(有点难)

1.题目 用指向数组的指针编程实现:输入一个字符串,内有数字和非数字符号,如:a123x456(此处一个空格)17960?302tab5876。将其中连续的数字作为一个十进制整数,依次存放到一个数组a中。例如&…

2023_Spark_实验二十七:Linux中Crontab(定时任务)命令详解及使用教程

Crontab介绍: Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρ…

最小斯坦纳树算法介绍

最小斯坦纳树 介绍解法例题 介绍 现在有一个图,将它们作为全集 G ( V , E ) G(V,E) G(V,E),我现在有一个这些点的子集 S S S, S S S大概有十几个点,现在想从 G G G中选出一个子图 G ′ ( V ′ , E ′ ) G(V,E) G′(V′,E′)&am…

C#无标题栏窗体拖动方法

在C#中,可以通过以下步骤实现无标题栏窗体拖动功能: 设置窗体的BorderStyle属性为None,这将隐藏窗体的标题栏和边框。 在窗体的MouseDown事件中,记录鼠标按下时的坐标。 在窗体的MouseMove事件中,计算鼠标移动的偏移…

【桑基图】绘制桑基图

绘制桑基图 一、绘制桑基图(1)方法一:去在线网站直接绘制(2)方法二:写html之后在vscode上运行 二、遇到的问题(1)当导入一些excel的时候,无法绘制出桑基图 一、绘制桑基图…

用23种设计模式打造一个cocos creator的游戏框架----(三)外观模式模式

1、模式标准 模式名称:外观模式 模式分类:结构型 模式意图:为一组复杂的子系统提供了一个统一的简单接口。这个统一接口位于所有子系统之上,使用户可以更方便地使用整个系统。 结构图: 适用于: 当你想为…

Nginx的安装、升级和管理

目录 一. nginx介绍 1. nginx简介 2. nginx和apache区别 二. nginx编译安装 1. 下载解压nginx安装包,并安装nginx依赖包 2. 创建运行用户和组 3. 编译安装并补全 4. 效验结果 三. 平滑升级nginx 1. 下载解压nginx安装包 2. 编译安装 3. 替换二进制文件 …

SpringMvc入坑系列(一)----maven插件启动tomcat

springboot傻瓜式教程用久了,回过来研究下SSM的工作流程,当然从Spring MVC开始,从傻瓜式入门处理请求和页面交互,再到后面深入源码分析。 本人写了一年多的后端和半年多的前端了。用的都是springbioot和vue,源码一直来…

机器学习实验六:聚类

系列文章目录 机器学习实验一:线性回归机器学习实验二:决策树模型机器学习实验三:支持向量机模型机器学习实验四:贝叶斯分类器机器学习实验五:集成学习机器学习实验六:聚类 文章目录 系列文章目录一、实验…

持续集成交付CICD: Sonarqube REST API 查找与新增项目

目录 一、实验 1.SonarQube REST API 查找项目 2.SonarQube REST API 新增项目 一、实验 1.SonarQube REST API 查找项目 (1)Postman测试 转换成cURL代码 (2)Jenkins添加凭证 (3)修改流水线 pipeline…

node切换版本

可打开黑窗口来进行命令输入操作: 1. node -v :查看当前版本 2.nvm list :查看已经下载的版本 3.nvm list available查看可用的node.js版本号: 4.nvm install node版本号(例如:nvm install 12.17.0)即可安装对应版本以及自动安装…

pgsql 判空并设置默认值

在 PostgreSQL 中,可以使用 COALESCE 函数来判断值是否为空并设置一个默认值。 例如,假设有一个表格 users,其中有一个列 username。如果 username 为空,则设置默认值为 ‘guest’,可以使用以下查询: SEL…