ALBERT 怎么样

简介: ALBERT 怎么样

Transformer 101 个思考问题:


https://gitee.com/oatmeal3000/Transformer101Q


谷歌 Lab 发布的预训练模型 "ALBERT" 全面在 SQuAD 2.0、GLUE、RACE 等任务上超越了 BERT、XLNet、RoBERTa 再次刷新了排行榜。ALBERT 是一种轻量版本的 BERT,利用更好的参数来训练模型,但是效果却反而得到了很大提升!ALBERT的核心思想是采用了两种减少模型参数的方法,比 BERT 占用的内存空间小很多,同时极大提升了训练速度,更重要的是效果上也有很大的提升!


ALBERT 提出了三种优化策略,做到了比 BERT 模型小很多的模型,但效果反而超越了 BERT, XLNet。


  • Factorized Embedding Parameterization. 他们做的第一个改进是针对于 Vocabulary Embedding。在 BERT、XLNet 中,词表的 embedding size(E) 和transformer 层的 hidden size(H) 是等同的,所以 E=H。但实际上词库的大小一般都很大,这就导致模型参数个数就会变得很大。为了解决这些问题他们提出了一个基于factorization 的方法。


他们没有直接把 one-hot 映射到 hidden layer, 而是先把 one-hot 映射到低维空间之后,再映射到 hidden layer。这其实类似于做了矩阵的分解。


  • Cross-layer parameter sharing. Zhenzhong 博士提出每一层的 layer 可以共享参数,这样一来参数的个数不会以层数的增加而增加。所以最后得出来的模型相比BERT-large小 18 倍以上。


  • Inter-sentence coherence loss. 在 BERT 的训练中提出了 next sentence prediction loss, 也就是给定两个 sentence segments, 然后让 BERT 去预测它俩之间的先后顺序,但在 ALBERT 文章里提出这种是有问题的,其实也说明这种训练方式用处不是很大。 所以他们做出了改进,他们使用的是 setence-order prediction loss (SOP),其实是基于主题的关联去预测是否两个句子调换了顺序。


ALBERT 用 70% 的参数量,1.5M steps 时效果明显,就是训练时间比较长。


如果不到 xlarge 版,那么没必要用 ALBERT;


同一速度的 ALBERT 效果比 BERT 差;


同一效果的 ALBERT 速度比 BERT 慢。


BERT 也都有 tiny/small 版了,比如追一科技开源的,基本上一样快而且效果更好,除非你是真的需要体积小这个特点。


那 xlarge 版是什么概念?有些读者还没尝试过 BERT,因为机器跑不起来;多数读者显存有限,只跑过 base 版的 BERT,没跑过或者跑不起 large 版的。而 xlarge 是比 large 更大的,对设备的要求更高,所以对于很多读者来说也就没必要用 ALBERT了。


目录
相关文章
|
2月前
|
搜索推荐 API Python
DeepSeek-V3.1 发布,迈向 Agent 时代的第一步
今日发布DeepSeek-V3.1,支持混合推理架构,提升思考效率与Agent能力。编程与搜索智能体表现显著增强,API已升级并支持Anthropic格式,模型开源,上下文扩展至128K。
654 5
|
9月前
|
传感器 人工智能 物联网
智能戒指:小小指环,大大未来
智能戒指:小小指环,大大未来
531 21
|
人工智能 自然语言处理
【NLP自然语言处理】NLP中的常用预训练AI模型
【NLP自然语言处理】NLP中的常用预训练AI模型
|
关系型数据库 MySQL 数据库连接
DBeaver如何连接一个数据库
【10月更文挑战第27天】DBeaver 是一款功能强大的通用数据库管理工具,支持多种主流数据库。本文介绍了使用 DBeaver 连接数据库的基本步骤,包括下载安装、创建新连接、选择数据库类型、配置连接参数、测试连接以及最终连接到数据库。详细的操作指南帮助用户轻松管理和操作数据库。
4348 9
|
Java 关系型数据库 MySQL
JSP 教程 之 JSP 连接数据库 1
**JSP连接MySQL数据库教程**:确保有JDBC驱动,如MySQL 5或8的connector。将jar包放入Tomcat的lib目录。对于MySQL 8,驱动类改为`com.mysql.cj.jdbc.Driver`,URL示例:`jdbc:mysql://localhost:3306/baidu?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8`。创建数据库`baidu`和表`websites`,包含站点信息,然后插入测试数据。
264 4
|
自然语言处理 JavaScript 前端开发
JDK序列化原理问题之FuryJDK序列化性能问题的如何解决
JDK序列化原理问题之FuryJDK序列化性能问题的如何解决
256 2
|
存储 监控 Linux
windows下cpu和性能指标监控Top10的实现
windows下cpu和性能指标监控Top10的实现
windows下cpu和性能指标监控Top10的实现
|
Web App开发 JavaScript 前端开发
Node.js与Go语言的对比?
【8月更文挑战第4天】Node.js与Go语言的对比?
1224 3
|
存储 人工智能 搜索推荐
|
Java 应用服务中间件 Maven
SpringBoot(三)之打包方式
在 mainClass 元素中指定主类的完全限定名,这是可执行 JAR 文件的入口点。
877 0