资源|最强预训练模型BERT的Pytorch实现(非官方)
消息来源:baojiabao.com 作者: 发布时间:2026-05-22

选自GitHub
作者:
Junseong Kim
机器之心编译
参与:路雪、张倩
近期,Google AI 公开了一篇 NLP 论文,介绍了新的语言表征模型 BERT,该模型被认为是最强 NLP 预训练模型,刷新了 11 项 NLP 任务的当前最优性能记录。今日,机器之心发现 GitHub 上出现了 BERT 的 Pytorch 实现,出自 Scatter Lab 的 Junseong Kim。
简介
谷歌 AI 关于 BERT 的论文展示了该模型在多个 NLP 任务上取得的惊艳结果,包括在 SQuAD v1.1 QA 任务上的 F1 得分超过人类。该论文证明,基于 Transformer(自注意力)的编码器可以有力地替代之前以合理方式训练的语言模型。更重要的是,该论文表明这一预训练语言模型可用于任何 NLP 任务,而无需针对任务定制模型架构。
本文主要阐述 BERT 的实现。它的代码非常简单、易懂。一些代码基于《
Attention is All You Need》一文中的 annotated Transformer。
该项目目前还在进展阶段。代码尚未得到验证。
语言模型预训练
在这篇论文中,作者展示了语言模型训练的新方法,即“遮蔽语言模型”(masked language model,MLM)和“预测下一句”。
Masked LM
见原论文:3.3.1 Task #1: Masked LM
withInput Sequence : The man went to [MASK] store
Target Sequence : the his
规则:
基于以下子规则,随机 15% 的输入 token 将被改变:
80% 的 token 是 [
MASK
] token。
10% 的 token 是 [
RANDOM
] token(另一个单词)。
10% 的 token 将维持不变,但是需要预测。
预测下一句
见原论文:3.3.2 Task #2: Next Sentence Prediction
ofInput : [CLS] the man went to the store [SEP] he bought a gallon
Label : Is Next
Input = [CLS] the man heading to the store [SEP] penguin [MASK] are flight ##less birds [SEP]
Label = NotNext
“这个句子可以继续和下一个句子联系起来吗?”
理解两个文本句子之间的关系,这是无法通过语言建模直接获取的。
规则:
下一句有 50% 的可能是连续的句子。
下一句有 50% 的可能是无关的句子。
使用
注意:你的语料库一行应该有两个句子,中间用 ( ) 分隔符隔开。
Welcome to the the jungle
I can stay here all night
1. 基于自己的语料库构建 vocab
python build_vocab.py -c data/corpus.small -o data/corpus.small.vocab
usage: build_vocab.py [-h] -c CORPUS_PATH -o OUTPUT_PATH [-s VOCAB_SIZE]
[-e ENCODING] [-m MIN_FREQ]
optional
arguments
:-h, --help show
this
help message and exit-c CORPUS_PATH, --corpus_path CORPUS_PATH
-o OUTPUT_PATH, --output_path OUTPUT_PATH
-s VOCAB_SIZE, --vocab_size VOCAB_SIZE
-e ENCODING, --encoding ENCODING
-m MIN_FREQ, --min_freq MIN_FREQ
2. 使用自己的语料库构建 BERT 训练数据集
python build_dataset.py -d data/corpus.small -v data/corpus.small.vocab -o data/dataset.small
usage: build_dataset.py [-h] -v VOCAB_PATH -c CORPUS_PATH [-e ENCODING] -o
OUTPUT_PATH
optional
arguments
:-h, --help show
this
help message and exit-v VOCAB_PATH, --vocab_path VOCAB_PATH
-c CORPUS_PATH, --corpus_path CORPUS_PATH
-e ENCODING, --encoding ENCODING
-o OUTPUT_PATH, --output_path OUTPUT_PATH
3. 训练自己的 BERT 模型
python train.py -d data/dataset.small -v data/corpus.small.vocab -o output/
usage: train.py [-h] -d TRAIN_DATASET [-t TEST_DATASET] -v VOCAB_PATH -o
OUTPUT_DIR [-hs HIDDEN] [-n LAYERS] [-a ATTN_HEADS]
[-s SEQ_LEN] [-b BATCH_SIZE] [-e EPOCHS]
optional
arguments
:-h, --help show
this
help message and exit-d TRAIN_DATASET, --train_dataset TRAIN_DATASET
-t TEST_DATASET, --test_dataset TEST_DATASET
-v VOCAB_PATH, --vocab_path VOCAB_PATH
-o OUTPUT_DIR, --output_dir OUTPUT_DIR
-hs HIDDEN, --hidden HIDDEN
-n LAYERS, --layers LAYERS
-a ATTN_HEADS, --attn_heads ATTN_HEADS
-s SEQ_LEN, --seq_len SEQ_LEN
-b BATCH_SIZE, --batch_size BATCH_SIZE
-e EPOCHS, --epochs EPOCHS
原文链接:https://github.com/codertimo/BERT-pytorch
相关文章
B站怎么炸崩了哔哩哔哩服务器今日怎么又炸挂了?技术团队公开早先原因2023-03-06 19:05:55
苹果iPhoneXS/XR手机电池容量续航最强?答案揭晓2023-02-19 15:09:54
华为荣耀两款机型起内讧:荣耀Play官方价格同价同配该如何选?2023-02-17 23:21:27
google谷歌原生系统Pixel3 XL/4/5/6 pro手机价格:刘海屏设计顶配版曾卖6900元2023-02-17 18:58:09
科大讯飞同传同声翻译软件造假 浮夸不能只罚酒三杯2023-02-17 18:46:15
华为mate20pro系列手机首发上市日期价格,屏幕和电池参数配置对比2023-02-17 18:42:49
小米MAX4手机上市日期首发价格 骁龙720打造大屏标准2023-02-17 18:37:22
武汉弘芯遣散!结局是总投资1280亿项目烂尾 光刻机抵押换钱2023-02-16 15:53:18
谷歌GoogleDrive网云盘下载改名“GoogleOne” 容量提升价格优惠2023-02-16 13:34:45
巴斯夫将裁员6000人 众化工巨头裁员潮再度引发关注2023-02-13 16:49:06
人手不足 韵达快递客服回应大量包裹派送异常没有收到2023-02-07 15:25:20
资本微念与李子柒销声匿迹谁赢? 微念公司退出子柒文化股东2023-02-02 09:24:38
三星GalaxyS8 S9 S10系统恢复出厂设置一直卡在正在检查更新怎么办2023-01-24 10:10:02
华为Mate50 RS保时捷最新款顶级手机2022多少钱?1.2万元售价外观图片吊打iPhone142023-01-06 20:27:09
芯片常见的CPU芯片封装方式 QFP和QFN封装的区别?2022-12-02 17:25:17
华为暂缓招聘停止社招了吗?官方回应来了2022-11-19 11:53:50
热血江湖手游:长枪铁甲 刚猛热血 正派枪客全攻略技能介绍大全2022-11-16 16:59:09
东京把玩了尼康微单相机Z7 尼康Z7现在卖多少钱?2022-10-22 15:21:55
苹果iPhone手机灵动岛大热:安卓灵动岛App应用下载安装量超100万次2022-10-03 22:13:45
苹果美版iPhone可以在中国保修 从哪看怎么查询iPhone的生产日期?2022-09-22 10:00:07










