【NLP】大型语言模型,ALBERT — 用于自监督学习的 Lite BERT

  🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎

📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​

📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】

 🖍foreword

✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。

如果你对这个系列感兴趣的话,可以关注订阅哟👋

文章目录

介绍

ALBERT

1.因式分解参数嵌入

2. 跨层参数共享

3. 句子顺序预测

BERT vs ALBERT

结论

资源


介绍

近年来,大型语言模型的发展突飞猛进。BERT 成为最流行、最高效的模型之一,可以高精度地解决各种 NLP 任务。BERT 之后,一系列其他模型随后出现,也表现出了出色的效果。

显而易见的趋势是,随着时间的推移,大型语言模型 (LLM) 往往会变得更加复杂,因为它们所训练的参数和数据的数量呈指数级增加。深度学习研究表明,此类技术通常会带来更好的结果。不幸的是,机器学习世界已经解决了有关法学硕士的几个问题,可扩展性已成为有效训练、存储和使用它们的主要障碍。

因此,最近开发了新的LLM来解决可扩展性问题。在本文中,我们将讨论 2020 年发明的 ALBERT,其目标是显着减少 BERT 参数。

ALBERT

要了解 ALBERT 的底层机制,我们将参考其官方论文。在很大程度上,ALBERT 源自 BERT 的相同架构。模型架构的选择存在三个主要差异,下面将讨论和解释这些差异。

ALBERT 中的训练和微调过程与 BERT 中的类似。与 BERT 一样,ALBERT 在英语维基百科(2500M 单词)和 BookCorpus(800M 单词)上进行了预训练。

1.因式分解参数嵌入

当输入序列被标记化时,每个标记都会被映射到词汇嵌入之一。这些嵌入用于 BERT 的输入。

V为词汇量(可能嵌入的总数),H为嵌入维数。然后,对于每个V嵌入,我们需要存储H值,从而生成V x H嵌入矩阵。实践证明,这个矩阵通常尺寸很大,需要大量内存来存储。但一个更普遍的问题是,大多数时候嵌入矩阵的元素是可训练的,并且模型需要大量资源来学习适当的参数。

例如,让我们以 BERT 基础模型为例:它有 30K 个标记的词汇表,每个标记由 768 个组件嵌入表示。总共需要存储和训练 2300 万个权重。对于较大的型号,这个数字甚至更大。

使用矩阵分解可以避免这个问题。原始词汇矩阵V x H可以分解为一对大小为V x EE x H的较小矩阵。

词汇矩阵分解 

因此,分解不会使用O(V x H)参数,而是仅产生O(V x E + E x H)权重。显然,当H >> E时,该方法有效。

矩阵分解的另一个重要方面是它不会改变获取标记嵌入的查找过程:左侧分解矩阵V x E的每一行以与原始相同的简单方式将标记映射到其相应的嵌入矩阵V x H。这样,嵌入的维数从H减少到E

然而,在分解矩阵的情况下,为了获得 BERT 的输入,需要将映射的嵌入投影到隐藏的 BERT 空间中:这是通过将左矩阵的相应行乘以右矩阵的列来完成的。

2. 跨层参数共享

减少模型参数的方法之一是使它们可共享。这意味着他们都拥有相同的价值观。在大多数情况下,它只是减少了存储权重所需的内存。然而,反向传播或推理等标准算法仍然必须对所有参数执行

当权重位于模型的不同但相似的块中时,共享权重的最佳方法之一就是发生。将它们放入相似的块中会导致前向传播或反向传播期间可共享参数的大多数计算相同的可能性更高。这为设计高效的计算框架提供了更多机会。

上述想法在 ALBERT 中实现,ALBERT 由一组具有相同结构的 Transformer 块组成,使得参数共享更加高效。事实上,Transformer 中存在多种跨层参数共享的方式:

  • 只共享注意力参数;
  • 仅共享前向神经网络(FNN)参数;
  • 共享所有参数(在 ALBERT 中使用)。

不同的参数共享策略

一般来说,可以将所有变压器层划分为 N 个大小为 M 的组,每个组共享其所拥有的层内的参数。研究人员发现,群体规模M越小,结果就越好。然而,减小组大小 M 会导致总参数显着增加。

3. 句子顺序预测

BERT 在预训练时重点关注掌握两个目标:掩码语言建模(MSM)和下一句预测(NSP)。总的来说,MSM 的目的是提高 BERT 获取语言知识的能力,NSP 的目标是提高 BERT 在特定下游任务上的性能。

然而,多项研究表明,与 MLM 相比,摆脱 NSP 目标可能是有益的,主要是因为它的简单性。遵循这个想法,ALBERT 研究人员还决定删除 NSP 任务,并将其替换为句子顺序预测(SOP)问题,其目标是预测两个句子的位置是否正确或相反。

说到训练数据集,输入句子的所有正对都在同一文本段落中按顺序收集(与 BERT 中的方法相同)。对于否定句,除了两个句子的顺序相反之外,原理是相同的。

                                                BERT 和 ALBERT 中正负训练对的组成 

结果表明,使用 NSP 目标训练的模型无法准确解决 SOP 任务,而使用 SOP 目标训练的模型在 NSP 问题上表现良好。这些实验证明 ALBERT 比 BERT 更适合解决各种下游任务。

BERT vs ALBERT

BERT 和 ALBERT 的详细比较如下图所示。

 BERT 和 ALBERT 模型不同变体之间的比较。在相同配置下测量的速度显示了模型迭代训练数据的速度。每个模型的速度值都是相对显示的(以 BERT Large 作为速度等于 1x 的基线)。准确度分数是在 GLUE、SQuAD 和 RACE 基准测试上测量的。

以下是最有趣的观察结果:

  • 由于只有 BERT Large 70% 的参数,ALBERT 的 xxlarge 版本在下游任务上取得了更好的性能。
  • 与 BERT Large 相比,ALBERT Large 实现了可比的性能,并且由于大量参数大小压缩,速度快了 1.7 倍。
  • 所有 ALBERT 模型的嵌入大小均为 128。正如论文中的消融研究所示,这是最佳值。增加嵌入大小(例如增加到 768)可以改进指标,但绝对值不会超过 1%,这与模型复杂性的增加并没有多大关系。
  • 尽管 ALBERT xxlarge 处理单次数据迭代的速度比 BERT Large 慢 3.3 倍,但实验表明,如果训练这两个模型相同的时间,则 ALBERT xxlarge 在基准测试中表现出比 BERT Large 更好的平均性能(88.7% vs 87.2%)。
  • 实验表明,具有较宽隐藏尺寸(≥ 1024)的 ALBERT 模型并不会从层数的增加中获益匪浅。这就是层数从 ALBERT Large 中的 24 层减少到 xxlarge 版本中的 12 层的原因之一。

ALBERT Large(18M参数)随层数增加的性能。图中≥3层的模型是根据之前模型的检查点进行微调的。可以观察到,达到12层后,性能提升变慢,24层后逐渐下降。 

  • 随着隐藏层大小的增加,也会出现类似的现象。将其值增加到大于 4096 会降低模型性能。

随着隐藏层大小的增加,ALBERT Large(上图中的 3 层配置)的性能。隐藏大小 4096 是最佳值。 

结论

乍一看,ALBERT 似乎比原始 BERT 模型更可取,因为它在下游任务上的表现优于它们。然而,由于 ALBERT 的结构较长,因此需要更多的计算。这个问题的一个很好的例子是 ALBERT xxlarge,它有 235M 参数和 12 个编码器层。这些 235M 重量中的大部分属于单个变压器块。然后为 12 层中的每一层共享权重。因此,在训练或推理过程中,算法必须在超过 20 亿个参数上执行!

由于这些原因,ALBERT 更适合解决可以牺牲速度以获得更高准确度的问题。最终,NLP 领域永远不会停止,并且不断向新的优化技术发展。ALBERT 的速度很可能在不久的将来会得到提高。该论文的作者已经提到了稀疏注意力块注意力等方法作为 ALBERT 加速的潜在算法。

资源

  • ALBERT:用于语言表示自监督学习的 Lite BERT

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于正余弦算法优化概率神经网络PNN的分类预测 - 附代码

基于正余弦算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于正余弦算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于正余弦优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…

【Linux】第十五站:环境变量

文章目录 一、进程相关的一些概念1.一些常见的概念2.对于并发3.**进程切换** 二、环境变量1.PATH环境变量2.HOME环境变量3.SHELL环境变量4.env5.系统调用接口与环境变量6.什么是环境变量?7.命令行参数8.main函数的第三个命令行参数9.如何验证环境变量是可以被继承的…

2、工厂模式的实现

工厂模式概念 工厂模式是一种常用的设计模式,它主要用于实例化对象。这种模式的主要思想是在不暴露具体的实现细节的情况下,让客户端能够创建具有特定接口的对象。它可以让我们在运行时决定实例化哪个类。 在C语言中,实例化对象意味着创建一…

使用LLM-Tuning实现百川和清华ChatGLM的Lora微调

LLM-Tuning项目源码: GitHub - beyondguo/LLM-Tuning: Tuning LLMs with no tears💦, sharing LLM-tools with love❤️.Tuning LLMs with no tears💦, sharing LLM-tools with love❤️. - GitHub - beyondguo/LLM-Tuning: Tuning LLMs wit…

eNSP毕业设计系列-《大型企业网》-BGP网络无nat

客户主要需求:需要有三栋楼,每栋楼有三个业务。 又新增了要求,要双核心、双防火墙。 所以我根据客户的需求,完成了如下组网设计。 主要技术,MSTPVRRP链路聚合OSPF传统纵网,(万金油组合&#…

企业计算机中了eking勒索病毒如何解毒,eking勒索病毒文件恢复

网络技术的不断发展,为企业的生产生活提供了极大便利,但随之而来的网络安全威胁也不断增加,近期,很多企业的计算机服务器遭到了eking勒索病毒攻击,导致企业的计算机服务器所有数据被加密,无法正常使用&…

Swagger3 GET请求,使用对象接收 Query 参数,注解怎么写?

简中互联网上就没一个靠谱的答案,最终翻到了 Github Issue 上才解决,真 TMD…… CSDN 就一坨 shit mountain 解决方案 原文:https://github.com/swagger-api/swagger-core/issues/4177 太长不看: 请求方法参数上加 ParameterObj…

RabbitMQ实战

文章目录 1、简介2、MQ优点缺点MQ的应用场景AMQP工作原理市面上常见的MQ 3、Linux安装RabbitMQ3.1 版本对应3.2 安装socat3.3 下载 Erlang/OTP、安装、验证 erlang方法一:1. 下载2. 将下载的Erlang服务上传到服务器上面3. 解压4. 编译erlang的依赖环境5. 安装Erlang…

Pensoul AI大更新!图生图功能日趋完善

Pensoul AI上线刚半个月,程序猿们已经做好了二期更新内容。 让我们一起来看看具体有哪些内容吧~ PensoulAI一期上线内容中,“文生图”功能已经比较完善, PensoulAI二期主要是针对图生图功能进行优化。 首先,新增加了线稿渲染功…

2023亚太杯数学建模C题思路

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料5 最后 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 2023年第十三…

修改django开发环境runserver命令默认的端口

runserver默认8000端口 虽然python manage.py runserver 8080 可以指定端口,但不想每次runserver都添加8080这个参数 可以通过修改manage.py进行修改,只需要加三行: from django.core.management.commands.runserver import Command as Ru…

ESP32 BLE特征值示例

键盘特征值初始化示例 void BleKeyboard::begin(void) {BLEDevice::init(deviceName);BLEServer* pServer BLEDevice::createServer();pServer->setCallbacks(this);hid new BLEHIDDevice(pServer);inputKeyboard hid->inputReport(KEYBOARD_ID); // <-- input R…

Vue基于html2canvas和jspdf生成pdf文件,解决jspdf中文乱码及自动换行等问题

在做项目时有这么一个需求&#xff0c;需要将当前页面指定区域的内容导出pdf到本地。借助了两个插件分别是html2canvas.js和pdf.js来实现。使用过程中遇到的问题及解决方法 解决一些问题&#xff1a; 导出按A4纸大小排列预留页面边距的问题内容过多自动分页的问题直接使用jsp…

Mistral 7B 比Llama 2更好的开源大模型 (一)

Mistral 7B 简介 Mistral 7B Mistral 7B 是一个 7.3B 参数模型: 在所有基准测试中优于 Llama 2 13B在许多基准测试中优于 Llama 1 34B接近 CodeLlama 7B 的代码性能,同时保持擅长英语任务使用分组查询注意力 (GQA) 加快推理速度使用滑动窗口注意力 (SWA) 以更低的成本处…

加一000

题目链接 加一 题目描述 注意点 0 < digits[i] < 9 解答思路 根据数学思想&#xff0c;对最后一位进行加一&#xff0c;任意位置进一会对下一位有影响当digits中所有元素都为9时&#xff0c;整个数字都会加一位&#xff0c;也就是10000…&#xff0c;需要特殊考虑 …

淘宝API接口成为淘宝商家及企业ERP系统不可或缺的重要因素

API全称为Application Programming Interface&#xff0c;中文是应用程序编程接口。它其实是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细节。 那如果…

30岁之前透支,30岁之后还债。

前言 看到不少私信问我为啥没有更新了&#xff0c;我没有一一回复&#xff0c;实在是身体抱恙&#xff0c;心情沉重&#xff0c;加上应付于工作&#xff0c;周旋于家庭&#xff0c;自然挤压了自我空间。 今天思来想去&#xff0c;重新执键&#xff0c;决定久违地又一次写点分…

低代码、零代码开源与不开源:区别解析

在如今日益发展的数字时代&#xff0c;程序开发变得越来越重要。为了实现日益提高的业务需求&#xff0c;开发人员必须能够以更高效、更灵活的方式构建和交货软件解决方案。低代码和零代码开源是近几年流行的两种开发方法。本文将探讨它们与传统非开源程序开发的差别&#xff0…

NSSCTF web刷题记录5

文章目录 [HZNUCTF 2023 preliminary]ezlogin[MoeCTF 2021]地狱通讯[NSSRound#7 Team]0o0[ISITDTU 2019]EasyPHP[极客大挑战 2020]greatphp[安洵杯 2020]Validator [HZNUCTF 2023 preliminary]ezlogin 考点&#xff1a;时间盲注 打开题目&#xff0c;在源码出得到hint 注入点很…

【陈老板赠书活动 - 18期】- 计算机考研精炼1000题

陈老老老板&#x1f9b8; &#x1f468;‍&#x1f4bb;本文专栏&#xff1a;赠书活动专栏&#xff08;为大家争取的福利&#xff0c;免费送书&#xff09; &#x1f468;‍&#x1f4bb;本文简述&#xff1a;生活就像海洋,只有意志坚强的人,才能到达彼岸。 &#x1f468;‍&am…