Bert模型及变体

news2024/11/14 3:09:21

ALBert

ALBERT就是为了解决模型参数量大以及训练时间过长的问题。ALBERT最小的参数只有十几M, 效果要比BERT低1-2个点,最大的xxlarge也就200多M。可以看到在模型参数量上减少的还是非常明显的,但是在速度上似乎没有那么明显。最大的问题就是这种方式其实并没有减少计算量,也就是受推理时间并没有减少,训练时间的减少也有待商榷。

整个模型的结构还是依照了BERT的骨架,采用了Transformer以及GELU激活函数。
具体的创新部分应该有三个:

  1. 一个是将embedding的参数进行了因式分解,
  2. 然后就是跨层的参数共享,
  3. 最后是抛弃了原来的NSP任务,现在使用SOP任务。

这三个更新前两个的主要任务就是来进行参数减少的,第三个更新这已经算不上什么更新了,之前已经有很多工作发现原来BERT中的下一句话预测这个任务并没有什么积极地影响。根据文章的实验结果来看似乎参数共享对参数降低的影响比较大,同时也会影响模型的整体效果。后面就来详细的说一下这三个改动。

Factorized embedding parameterization

原始的BERT模型以及各种依据transformer来搞的预训练语言模型在输入的地方我们会发现它的E是等于H的,其中E就是embedding size,H就是hidden size,也就是transformer的输入输出维度。

  • 这就会导致一个问题,当我们的hidden size提升的时候,embedding size也需要提升,这就会导致我们的embedding matrix维度的提升。
  • 所以这里作者将E和H进行了解绑,具体的操作其实就是在embedding后面加入一个矩阵进行维度变换。E是永远不变的,后面H提高了后,我们在E的后面进行一个升维操作,让E达到H的维度。这使得embedding参数的维度从 O ( V × H ) O(V×H) O(V×H)到了 O ( V × E + E × H ) O(V×E + E×H) O(V×E+E×H), 当E远远小于H的时候更加明显。

Cross-layer parameter sharing

之前transformer的每一层参数都是独立的,包括self-attention 和全连接,这样的话当层数增加的时候,参数就会很明显的上升。
之前有工作试过单独的将self-attention或者全连接进行共享,都取得了一些效果。

  • 这里作者尝试将所有的参数进行共享,这其实就导致多层的attention其实就是一层attention的叠加。同时作者通过实验还发现了,使用参数共享可以有效地提升模型的稳定程度。实验结果如下图:
    在这里插入图片描述

Inter-sentence coherence loss

这里作者使用了一个新的loss,其实就是更改了原来BERT的一个子任务NSP, 原来NSP就是来预测下一个句子的,也就是一个句子是不是另一个句子的下一个句子。

  • 这个任务的问题出在训练数据上面,正例就是用的一个文档里面连续的两句话,但是负例使用的是不同文档里面的两句话。这就导致这个任务包含了主题预测在里面,而主题预测又要比两句话连续性的预测简单太多。

  • 新的方法使用了sentence-order prediction(SOP), 正例的构建和NSP是一样的,不过负例则是将两句话反过来。实验的结果也证明这种方式要比之前好很多。但是这个这里应该不是首创了,百度的ERNIE貌似也采用了一个这种的。


Embedding的size影响:
在这里插入图片描述
对于参数不共享的版本,随着E的增加,效果是不断提升的。

但是在参数共享的版本似乎不是这样的,效果最好的版本并不是E最大的版本。同时我们也可以发现参数共享对于效果可能带来1-2个点的下降

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

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

相关文章

Kubernetes 之CNI 网络插件对比

介绍 网络架构是Kubernetes中较为复杂、让很多用户头疼的方面之一。Kubernetes网络模型本身对某些特定的网络功能有一定要求,但在实现方面也具有一定的灵活性。因此,业界已有不少不同的网络方案,来满足特定的环境和要求。 CNI意为容器网络接…

Java是什么?为什么众多编程语言要学习Java?Java有哪些特点?

Java 是近 十几 年来计算机软件发展过程中的传奇,其在众多开发者心中的地位可谓“爱不释手”,与其他一些计算机语言随着时间的流逝影响也逐渐减弱不同,Java 随着时间的推移却依然坚挺。 从首次发布开始,Java 就跃到了 Internet 编…

「开源项目」强大易用的开源建站工具-halo

建站工具halo 基本介绍 Halo 作为一款好用又强大的开源建站工具,配合上不同的模板与插件,可以很好地帮助你构建你心中的理想站点。它可以是你公司的官方网站,可以是你的个人博客,也可以是团队共享的知识库,甚至可以是一…

通过Filebeat进行日志监控

对系统的日志监控,通用做法是使用ELK(Elasticsearch、Logstash、Kibana)进行监控和搜索日志,这里给出另一种方案:通过Filebeat接收日志到Kafka,监控平台接收Kafka,并通过WebSocket实时展示。 这…

Java枚举类的构造函数

Java枚举类可以定义构造函数 Java枚举类可以定义构造函数,枚举常量后面括号中的参数值就是传递给构造函数的参数。 代码示例: package com.thb;public enum Constant {// 枚举常量后面括号中的参数值就是传递给构造函数的参数值REGISTER((byte)0x01),…

windows版docker部署springcloud项目

材料: 1.windows版docker环境(其他版教程可能道理一样但是比如文件后坠名上可能有差异) 2.运行好的数据库容器(实现教程) 3.所有jar包 实现: 最后整好的文件夹结构图(原工程文件机密&#xf…

教你一文教你使用自己的域名远程访问内网群晖NAS+6.X【内网穿透】

文章目录 使用自己的域名远程访问内网群晖NAS 6.X【内网穿透】 使用自己的域名远程访问内网群晖NAS 6.X【内网穿透】 在之前的文章中,我们向大家演示了如何使用cpolar,创建一条固定的、能够在公共互联网登录内网群晖NAS的数据隧道。这条隧道已经能够应对…

医学案例|ROC曲线之面积对比

一、案例介绍 为评价CT和CT增强对肝癌的诊断效果,共检查了32例患者,每例患者分别用两种方法检查,由医生盲态按4个等级诊断,最后经手术病理检查确诊其中有16例患有肝癌,评价CT个CT增强对肝癌是有有诊断效果并且试着比较…

cpolar内网穿透工具

文章目录 cpolar内网穿透工具 cpolar内网穿透工具 科学技术的发展日新月异,电子设备在人们的生活中已成为不可或缺的工具,甚至在很多情况下,各类型的电子设备已经成为工作的核心,虽然移动设备越来越小巧,功能也越来越…

Lab1 datalab

修改bits.c,使其满足btest的测试,代码规范./dlc bits.c 测试 make cleanmake btest./btest bitXor 思路 题目的意思是用按位&和取反~实现异或^操作。即x和y的同一位置如果都是1或者都是0,那么异或之后是0,否则是1 x & …

C#学习系列之System.Windows.Data Error: 40报错

C#学习系列之System.Windows.Data Error: 40报错 前言报错内容解决总结 前言 在用户界面使用上,代码运行没有问题,但是后台报错,仔细研究了报错内容,解决问题,所以记录一下。 报错内容 System.Windows.Data Error: 4…

【小波尺度谱】从分段离散小波变换计算小波尺度谱研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Python 进阶(二):操作字符串的常用方法

❤️ 博客主页:水滴技术 🌸 订阅专栏:Python 入门核心技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 文章目录 一、索引和切片二、字符串长度三、查找和替换四、大小写转换五、分割和连接六、去除空…

【深度解析】蓝牙室内定位方案优势介绍

万物互联时代,数据的价值进一步凸显,在海量数据中,位置数据成为万物互联产业中的基础坐标。室内空间结构越来越复杂,人们对位置的实时性和精确度要求不断提高,室内定位的需求也空前高涨。卫星信号对障碍物的穿透性较弱…

国内好用的企业级在线文档有哪些?

在当今数字化时代,企业级在线文档已经成为了现代办公环境中不可或缺的一部分。它不仅能够提高工作效率,还能够实现多人协同编辑,满足团队协作的需求。那么,在国内市场上,哪些企业级在线文档产品备受企业青睐呢&#xf…

【深度学习】WaveMix: A Resource-efficient Neural Network for Image Analysis 论文

论文:https://arxiv.org/abs/2205.14375 代码:https://github.com/pranavphoenix/WaveMix 文章目录 ABSTRACTIntroductionBackground and Related WorksWaveMix Architectural FrameworkOverall architectureWaveMix block Experiments and ResultsTasks…

计算机图形学十五菲涅尔方程

菲涅尔效应 菲涅尔效应在我们的日常生活中无处不在,下面来个例子三连: 我们去公园的池塘喂鲤鱼,当爆米花丢的比较近的时候,我们可以看见水底下成群的鲤鱼在抢吃的。但是当我们把爆米花丢的很远时,却看不见水底下那些如…

多线程面试题--使用场景

目录 线程池使用场景 多线程使用场景一( es数据批量导入) 多线程使用场景二(数据汇总) 多线程使用场景三(异步调用) 总结 如何控制某个方法允许并发访问线程的数量 总结​编辑 对ThreadLocal的理解 实现…

1200*A. Cheap Travel

#include<bits/stdc.h> using namespace std; typedef long long ll; int n,m,a,b,res; int main(){cin>>n>>m>>a>>b;if(a*m<b) resa*n;else{if(n%m0) resn/m*b;else{resn/m*b;resmin(n%m*a,b);}}cout<<res;return 0; }

「动态规划dp」

文章目录 0 概览1 步骤1.1 框架 2 刷题2.1 斐波那契数列2.1.1 题解2.1.2 Code2.1.3 结果 2.2 零钱兑换2.2.1 题解2.2.2 Code2.2.3 结果 0 概览 动态规划的题型&#xff0c;一定是要求解最值的&#xff0c;比如最短编辑距离&#xff0c;最长递增子序列&#xff0c;最长公共子序…