【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

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

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

相关文章

什么是OpenCL?

什么是OpenCL? 1.概述 OpenCL(Open Computing Language 开放计算语言)是一种开放的、免版税的标准,用于超级计算机、云服务器、个人计算机、移动设备和嵌入式平台中各种加速器的跨平台并行编程。OpenCL是由Khronos Group创建和管理的。OpenCL使应用程序…

为什么打开idea时,没有启动页面,如何解决?

更新idea2021.2后,当双击idea打开时,发现没有启动界面,直接进入IDEA界面,中间等待时间,让人误以为没有打开idea成功,使得多次点击idea图标。 解决方案就是 在idea界面菜单栏中找到帮助(Help)&a…

(论文阅读32/100)Flowing convnets for human pose estimation in videos

32.文献阅读笔记 简介 题目 Flowing convnets for human pose estimation in videos 作者 Tomas Pfister, James Charles, and Andrew Zisserman, ICCV, 2015. 原文链接 https://arxiv.org/pdf/1506.02897.pdf 关键词 Human Pose Estimation in Videos 研究问题 视频…

挂耳式运动耳机哪个品牌好?5款公认好用的运动耳机推荐

​在现代社会,耳机已经成为了人们生活中必不可少的数码设备。在运动的时候,佩戴耳机更是成为了很多人的标配。但是,市面上的运动耳机种类繁多,如何选择一款适合自己的呢?今天我为大家挑选了5款公认好用的运动耳机&…

PyTorch技术和深度学习——四、神经网络训练与优化

文章目录 1.神经网络迭代概念1)训练误差与泛化误差2)训练集、验证集和测试集划分3)偏差与方差 2.正则化方法1)提前终止2)L2正则化3)Dropout 3.优化算法1)梯度下降2)Momentum算法3)RM…

​软考-高级-系统架构设计师教程(清华第2版)【第4章 信息安全技术基础知识(P160~189)-思维导图】​

软考-高级-系统架构设计师教程(清华第2版)【第4章 信息安全技术基础知识(P160~189)-思维导图】 课本里章节里所有蓝色字体的思维导图

LeetCode(10)跳跃游戏 II【数组/字符串】【中等】

目录 1.题目2.答案3.提交结果截图 链接: 45. 跳跃游戏 II 1.题目 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nu…

机器学习-搜索技术:从技术发展到应用实战的全面指南

在本文中,我们全面探讨了人工智能中搜索技术的发展,从基础算法如DFS和BFS,到高级搜索技术如CSP和优化问题的解决方案,进而探索了机器学习与搜索的融合,最后展望了未来的趋势和挑战,提供了对AI搜索技术深刻的…

表单提交是

首先&#xff0c;确保你已经安装了Vue 3、Element UI和axios&#xff08;用于发送HTTP请求&#xff09;。你可以使用以下命令进行安装&#xff1a; bash复制代码 npm install vuenext element-ui axios --save <template> <el-form :model"form" :rules&q…

Java Stream 的常用API

Java Stream 的常用API 遍历&#xff08;forEach&#xff09; package com.liudashuai;import java.util.ArrayList; import java.util.List;public class Test {public static void main(String[] args) {List<Person> userList new ArrayList<>();userList.ad…

可视化技术专栏100例教程导航帖—学习可视化技术的指南宝典

&#x1f389;&#x1f38a;&#x1f389; 你的技术旅程将在这里启航&#xff01; &#x1f680;&#x1f680; 本文专栏&#xff1a;可视化技术专栏100例 可视化技术专栏100例领略各种先进的可视化技术&#xff0c;包括但不限于大屏可视化、图表可视化等等。订阅专栏用户在文章…

Stable Diffusion 是否使用 GPU?

在线工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D数字孪生场景编辑器 Stable Diffusion 已迅速成为最流行的生成式 AI 工具之一&#xff0c;用于通过文本到图像扩散模型创建图像。但是&#xff0c;它需…

解决:element ui表格表头自定义输入框单元格el-input不能输入问题

表格表头如图所示&#xff0c;有 40-45&#xff0c;45-50 数据&#xff0c;且以输入框形式呈现&#xff0c;现想修改其数据或点击右侧加号增加新数据编辑。结果不能输入&#xff0c;部分代码如下 <template v-if"columnData.length > 0"><el-table-colu…

一则DNS被重定向导致无法获取MySQL连接处理

同事反馈xwik应用端报java exception 获取MySQL连接超时无法连接到数据库实例 经过告警日志发现访问进来的IP地址数据库端无法被解析&#xff0c;这里可以知道问题出现在Dns配置上了 通过以上报错检查/etc/resolve.conf 发现namesever 被重定向设置成了114.114.114.114 域名 …

GoF之代理模式

2023.11.12 代理模式是GoF23种设计模式之一&#xff0c;其作用是&#xff1a;为其他对象提供一种代理以控制对这个对象的访问。在某些情况下&#xff0c;一个客户不想或者不能直接引用一个对象&#xff0c;此时可以通过一个称之为“代理”的第三者来实现间接引用。代理对象可以…

Linux组调度

为什么引入组调度可以参考这篇文章的讨论。核心原因是基础的调度算法都是基于任务的&#xff0c;如果用户A有10个任务&#xff0c;用户B只有1个任务&#xff0c;假设这些任务的优先级都相同&#xff0c;那么用户A得到的CPU时间将是用户B的10倍&#xff0c;这样从任务的角度看虽…

Zigbee智能家居方案设计

背景 目前智能家居物联网中最流行的三种通信协议&#xff0c;Zigbee、WiFi以及BLE&#xff08;蓝牙&#xff09;。这三种协议各有各的优势和劣势。本方案基于CC2530芯片来设计&#xff0c;CC2530是TI的Zigbee芯片。 网关使用了ESP8266CC2530。 硬件实物 节点板子上带有继电器…

java,springboot钉钉开发连接器,自定义连接器配合流程使用,流程加入连接器,连接器发送参数,然后你本地处理修改值,返回给流程

1.绘制连接器&#xff0c;注意出餐入参的格式&#xff0c; 2.绘制流程&#xff0c;绑定连接器&#xff0c;是提交后出发还是表单值变化后 3.编写本地接口&#xff08;内网穿透&#xff09;&#xff0c;绑定连接器 钉钉开发连接器&#xff0c;自定义连接器配合流程使用&#x…

学【Java多态】-- 写高质量代码

多态的实现条件 在java中要实现&#xff0c;必须要满足如下几个条件&#xff0c;缺一不可。 1.必须在继承体系下2.子类必须要对父类中的方法进行重写3.通过父类的引用调用冲写的方法。 想要真正的学好多态需要去学习一些前置知识&#xff0c;那我们直接开始吧&#xff01; …