赞
踩
点击上方“AI遇见机器学习”,选择“星标”公众号
重磅干货,第一时间送达
作者:十三、发自、凹非寺
转自:量子位(QbitAI),未经允许不得二次转载
比BERT模型参数小18倍,性能还超越了它。
这就是谷歌前不久发布的轻量级BERT模型——ALBERT。
不仅如此,还横扫各大“性能榜”,在SQuAD和RACE测试上创造了新的SOTA。
而最近,谷歌开源了中文版本和Version 2,项目还登上了GitHub热榜第二。
在这个版本中,“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模块使用示例:
- 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:
- 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 进行微调和评估,可以参阅该项目中的run_glue.sh文件。
底层的用例可能希望直接使用run_classifier.py脚本。
run_classifier.py可对各个 GLUE 基准测试任务进行微调和评估。
比如 MNLI:
- 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模块开始微调模型:
albert_hub_module_handle==https://tfhub.dev/google/albert_base/1
在评估之后,脚本应该报告如下输出:
- ***** Eval results *****
- global_step = ...
- loss = ...
- masked_lm_accuracy = ...
- masked_lm_loss = ...
- sentence_order_accuracy = ...
- sentence_order_loss = ...
要对 SQuAD v1上的预训练模型进行微调和评估,请使用 run SQuAD v1.py 脚本:
- 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 脚本:
- 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
作者系网易新闻·网易号“各有态度”签约作者
- 推荐阅读
- 干货|学术论文怎么写
- 资源|NLP书籍及课程推荐(附资料下载)
-
- 干货|全面理解N-Gram语言模型
- 资源|《Machine Learning for OpenCV》书籍推荐
-
- 欢迎关注我们,看通俗干货!
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。