概述
本文基于 pytorch-pretrained-BERT(huggingface)版本的复现,探究如下几个问题:
pytorch-pretrained-BERT的基本框架和使用
如何利用BERT将句子转为词向量
如何使用BERT训练模型(针对SQuAD数据集的问答模型,篇幅问题,可能下篇再写)
因为已经有很多文章对BERT的结构和效果做了详尽的介绍,所以对于模型的效果和结构就不在这里赘述了。
基本框架和使用
环境
首先,利用pip安装包:
1 pip install pytorch-pretrained-bert
这种安装方法可能会导致一个编码问题,具体细节可以参考这里。作者已经把这个错误改了过来,但是没有发布新的版本(当前版本为0.1.2),因此需要我们先从github上下载源码,然后安装:
1 pip install [--editable] .
结构
Google提供了6种预训练的模型,具体细节如下:
bert-base-uncased: 12-layer, 768-hidden, 12-heads, 110M parameters
bert-large-uncased: 24-layer, 1024-hidden, 16-heads, 340M parameters
bert-base-cased: 12-layer, 768-hidden, 12-heads , 110M parameters
bert-base-multilingual: 102 languages, 12-layer, 768-hidden, 12-heads, 110M parameters
bert-base-chinese: Chinese Simplified and Traditional, 12-layer, 768-hidden, 12-heads, 110M parameters
作者对于每个预训练的模型都提供了6个model类和3个tokenizer类供我们使用。具体的模型简介和参数可以参照这里README中pytorch model和Tokenizer部分。
1 tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
2 model = BertModel.from_pretrained('bert-base-uncased')
初始化
上面就是对model和tokenizer进行初始化的代码,“BertTokenizer”和“BertModel”可以替换为自己需要的模型和分词器,后面函数的参数对应6中预训练的模型。由于是预训练的模型,所以肯定是要下模型和词表的,作者把资源放到了亚马逊的云上,链接写在了一个环境变量里,如果第一次使用,要提前下载,下载后的文件存放在cache文件夹:~/.pytorch_pretrained_bert/下。
1 PRETRAINED_MODEL_ARCHIVE_MAP = {
2 'bert-base-uncased':