今天来聊聊谷歌的自然语言处理框架 BERT,BERT 已经对自然语言处理有着显著的变革,那么 BERT 到底是什么呢?
bert.png根据 BERT 论文 中定义,BERT (Bidirectional Encoder Representations from Transformers) 是一种基于 Transformer 结构的双向编码器,通过联合调节所有层的左右上下文来预训练深度双向表示。因此,经过预训练的 BERT 模型,只需要一个额外的输出层,就可以进行微调,从而可以为各种自然语言处理任务生成最先进的模型,无需对该任务进行大量模型结构的修改。
1. 数据量
BERT 的预训练数据一共 33 亿个字,包含了整个维基百科的大量语料库和图书语料库。
2.模型大小
BERT 模型的标准版有 1 亿的参数量,大号版本有 3 亿多的参数量
3. 硬件资源
谷歌用了 16 个 TPU 集群(一共 64 块 TPU)来训练大号版本的 BERT,花了 4 天时间。TPU 速度比 GPU 要快 15~30 倍左右。
4. 深度双向表示
BERT 是一个深度双向表示的模型,双向意味着 BERT 在训练阶段会从所选文本的左右上下文中汲取消息,比如:
We went to the river bank.
I need to go to the bank to make a deposit.
第 一句表示:我们走到了河边,这里的 bank
表示岸边的意思;第二句话是指,我需要去趟银行存个钱,这里的 bank
表示银行的意思。
如果仅仅汲取左上下文或右上下文,那么 bank
的意思在刚才的例子中,至少要出错一个,解决这个问题的方法就是:像 BERT 一样,在做出预测之前,同时考虑左右上下文。
网友评论