前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谷歌ALBERT模型V2+中文版来了:之前刷新NLP各大基准,现在GitHub热榜第二

谷歌ALBERT模型V2+中文版来了:之前刷新NLP各大基准,现在GitHub热榜第二

作者头像
量子位
发布2020-02-11 08:41:12
9520
发布2020-02-11 08:41:12
举报
文章被收录于专栏:量子位量子位

比BERT模型参数小18倍,性能还超越了它。

这就是谷歌前不久发布的轻量级BERT模型——ALBERT

不仅如此,还横扫各大“性能榜”,在SQuAD和RACE测试上创造了新的SOTA。

而最近,谷歌开源了中文版本和Version 2,项目还登上了GitHub热榜第二

ALBERT 2性能再次提升

在这个版本中,“no dropout”、“additional training data”、“long training time”策略将应用到所有的模型。

与初代ALBERT性能相比结果如下。

从性能的比较来说,对于ALBERT-base、ALBERT-large和ALBERT-xlarge,v2版要比v1版好得多。

说明采用上述三个策略的重要性。

平均来看,ALBERT-xxlarge比v1略差一些,原因有以下2点:

额外训练了1.5M步(两个模型的唯一区别就是训练1.5M和3M步); 对于v1,在BERT、Roberta和XLnet给出的参数集中做了一点超参数搜索;对于v2,只是采用除RACE之外的V1参数,其中使用的学习率为1e-5和0 ALBERT DR。

总的来说,Albert是BERT的轻量版, 使用减少参数的技术,允许大规模的配置,克服以前的内存限制。

Albert使用了一个单模型设置,在 GLUE 基准测试中的性能:

Albert-xxl使用了一个单模型设置,在SQuaD和RACE基准测试中的性能:

中文版下载地址

Base https://storage.googleapis.com/albert_models/albert_base_zh.tar.gz

Large https://storage.googleapis.com/albert_models/albert_large_zh.tar.gz

XLarge https://storage.googleapis.com/albert_models/albert_xlarge_zh.tar.gz

Xxlarge https://storage.googleapis.com/albert_models/albert_xxlarge_zh.tar.gz

ALBERT v2下载地址

Base [Tar File]: https://storage.googleapis.com/albert_models/albert_base_v2.tar.gz [TF-Hub]: https://tfhub.dev/google/albert_base/2

Large [Tar File]: https://storage.googleapis.com/albert_models/albert_large_v2.tar.gz [TF-Hub]: https://tfhub.dev/google/albert_large/2

XLarge [Tar File]: https://storage.googleapis.com/albert_models/albert_xlarge_v2.tar.gz [TF-Hub]: https://tfhub.dev/google/albert_xlarge/2

Xxlarge [Tar File]: https://storage.googleapis.com/albert_models/albert_xxlarge_v2.tar.gz [TF-Hub]: https://tfhub.dev/google/albert_xxlarge/2

预训练模型

可以使用 TF-Hub 模块:

Base [Tar File]: https://storage.googleapis.com/albert_models/albert_base_v1.tar.gz [TF-Hub]: https://tfhub.dev/google/albert_base/1

Large [Tar File]: https://storage.googleapis.com/albert_models/albert_large_v1.tar.gz [TF-Hub]: https://tfhub.dev/google/albert_large/1

XLarge [Tar File]: https://storage.googleapis.com/albert_models/albert_xlarge_v1.tar.gz [TF-Hub]: https://tfhub.dev/google/albert_xlarge/1

Xxlarge [Tar File]: https://storage.googleapis.com/albert_models/albert_xxlarge_v1.tar.gz [TF-Hub]: https://tfhub.dev/google/albert_xxlarge/1

TF-Hub模块使用示例:

代码语言:javascript
复制
tags = set()
if is_training:
  tags.add("train")
albert_module = hub.Module("https://tfhub.dev/google/albert_base/1", tags=tags,
                           trainable=True)
albert_inputs = dict(
    input_ids=input_ids,
    input_mask=input_mask,
    segment_ids=segment_ids)
albert_outputs = albert_module(
    inputs=albert_inputs,
    signature="tokens",
    as_dict=True)

# If you want to use the token-level output, use
# albert_outputs["sequence_output"] instead.
output_layer = albert_outputs["pooled_output"]

预训练说明

要预训练ALBERT,可以使用run_pretraining.py:

代码语言:javascript
复制
pip install -r albert/requirements.txt
python -m albert.run_pretraining \
    --input_file=... \
    --output_dir=... \
    --init_checkpoint=... \
    --albert_config_file=... \
    --do_train \
    --do_eval \
    --train_batch_size=4096 \
    --eval_batch_size=64 \
    --max_seq_length=512 \
    --max_predictions_per_seq=20 \
    --optimizer='lamb' \
    --learning_rate=.00176 \
    --num_train_steps=125000 \
    --num_warmup_steps=3125 \
    --save_checkpoints_steps=5000

GLUE上的微调

要对 GLUE 进行微调和评估,可以参阅该项目中的run_glue.sh文件。

底层的用例可能希望直接使用run_classifier.py脚本。

run_classifier.py可对各个 GLUE 基准测试任务进行微调和评估。

比如 MNLI:

代码语言:javascript
复制
pip install -r albert/requirements.txt
python -m albert.run_classifier \
  --vocab_file=... \
  --data_dir=... \
  --output_dir=... \
  --init_checkpoint=... \
  --albert_config_file=... \
  --spm_model_file=... \
  --do_train \
  --do_eval \
  --do_predict \
  --do_lower_case \
  --max_seq_length=128 \
  --optimizer=adamw \
  --task_name=MNLI \
  --warmup_step=1000 \
  --learning_rate=3e-5 \
  --train_step=10000 \
  --save_checkpoints_steps=100 \
  --train_batch_size=128

可以在run_glue.sh中找到每个GLUE任务的default flag。

从TF-Hub模块开始微调模型:

代码语言:javascript
复制
albert_hub_module_handle==https://tfhub.dev/google/albert_base/1

在评估之后,脚本应该报告如下输出:

代码语言:javascript
复制
***** Eval results *****
  global_step = ...
  loss = ...
  masked_lm_accuracy = ...
  masked_lm_loss = ...
  sentence_order_accuracy = ...
  sentence_order_loss = ...

在SQuAD上微调

要对 SQuAD v1上的预训练模型进行微调和评估,请使用 run SQuAD v1.py 脚本:

代码语言:javascript
复制
pip install -r albert/requirements.txt
python -m albert.run_squad_v1 \
  --albert_config_file=... \
  --vocab_file=... \
  --output_dir=... \
  --train_file=... \
  --predict_file=... \
  --train_feature_file=... \
  --predict_feature_file=... \
  --predict_feature_left_file=... \
  --init_checkpoint=... \
  --spm_model_file=... \
  --do_lower_case \
  --max_seq_length=384 \
  --doc_stride=128 \
  --max_query_length=64 \
  --do_train=true \
  --do_predict=true \
  --train_batch_size=48 \
  --predict_batch_size=8 \
  --learning_rate=5e-5 \
  --num_train_epochs=2.0 \
  --warmup_proportion=.1 \
  --save_checkpoints_steps=5000 \
  --n_best_size=20 \
  --max_answer_length=30

对于 SQuAD v2,使用 run SQuAD v2.py 脚本:

代码语言:javascript
复制
pip install -r albert/requirements.txt
python -m albert.run_squad_v2 \
  --albert_config_file=... \
  --vocab_file=... \
  --output_dir=... \
  --train_file=... \
  --predict_file=... \
  --train_feature_file=... \
  --predict_feature_file=... \
  --predict_feature_left_file=... \
  --init_checkpoint=... \
  --spm_model_file=... \
  --do_lower_case \
  --max_seq_length=384 \
  --doc_stride=128 \
  --max_query_length=64 \
  --do_train \
  --do_predict \
  --train_batch_size=48 \
  --predict_batch_size=8 \
  --learning_rate=5e-5 \
  --num_train_epochs=2.0 \
  --warmup_proportion=.1 \
  --save_checkpoints_steps=5000 \
  --n_best_size=20 \
  --max_answer_length=30

传送门

GitHub项目地址: https://github.com/google-research/ALBERT

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量子位 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ALBERT 2性能再次提升
  • 预训练模型
  • 预训练说明
  • GLUE上的微调
  • 在SQuAD上微调
  • 传送门
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档