nlp bert(bert是语言模型吗)

来自新智元的报道
上周,Google AI团队开放了备受关注的“最强NLP模型”BERT的TensorFlow代码和预训练模型。不到一天就收获了3000多颗星!
今天Google又发布了BERT的多语言模型和中文模型!
BERT的全称是来自变形金刚的双向编码表示法,是一种新的预训练语言表示方法。
伯特到底有多厉害?它在机器阅读理解顶级测试SQuAD1.1中表现出惊人的成绩:在两项指标上都超过了人类!也在11个不同的NLP测试中取得了最好的成绩,包括将GLUE基准推高到80.4%(绝对提升7.6%),MultiNLI的准确率达到86.7%(绝对提升5.6%)。
最近,新智元对伯特模型做了详细的报告和专家解读:
如果你已经知道BERT是什么,只是想马上开始使用,你可以下载预先训练好的模型,你可以在几分钟内完成很好的调优。
戳这里直接用:
https://github . com/Google-research/Bert/blob/master/多语言. md
模型
目前有两种多语言模式可供选择。我们不打算发布更多的单语模型,但我们可能会在未来发布这两种模型的BERT-Large版本:
基于BERT,多语言: 102种语言,12层,768个隐藏,12个头,110M参数
BERT-Base,中文:简体中文和繁体中文,12层,768隐藏,12个头,110M参数
多语言模型支持的语言是维基百科上语料库最大的前100种语言(泰语除外)。多语言模型也包含中文(和英文),但是如果您的微调数据仅限于中文,那么中文模型可能会产生更好的结果。
结果
为了评估这些系统,我们使用了XNLI数据集,这是MultiNLI的一个版本,其中开发集和测试集已经被翻译成15种语言。应该注意,训练集是机器翻译的(我们使用XNLI提供的翻译,而不是谷歌NMT)。
以下6种主要语言的评估结果:
前两行是XNLI基线的结果,后三行是使用BERT的结果。
翻译训练是指机器将MultiNLI的训练集从英语翻译成外语。所以培训和评估都是用外语来做的。不幸的是,无法量化低准确率在多大程度上归因于机器翻译的质量和预训练模型的质量,因为训练是基于机器翻译的数据。
翻译测试是指XNLI测试集由机器从外文翻译成英文。因此,培训和评估是用英语进行的。然而,由于测试评估是在机器翻译的英语中进行的,准确性取决于机器翻译系统的质量。
Zero Shot表示多语言BERT模型在英语MultiNLI上进行了微调,然后在外语XNLI测试集上进行了评估。在这种情况下,预训练和微调的过程不涉及机器翻译。
请注意,英语的成绩比MultiNLI baseline的84.2差,因为这个训练用的是多语言的BERT模型,而不是纯英语的BERT模型。这意味着对于拥有大量语料资源的语言,多语言模型不如单语模型。然而,训练和维护几十个单语模型是不可行的。因此,如果您的目标是通过使用除英语和中文之外的语言来最大限度地提高性能,那么从我们的多语言模型中对您感兴趣的语言数据进行额外的预训练是有益的。
对于中文,使用多语言BERT-Base和纯中文BERT-Base训练的中文模型的结果比较如下:
与英语类似,单语模型比多语言模型好3%。
微调的示例
多语言模型不需要任何特殊考虑或API更改。我们更新了tokenization.py中BasicTokenizer的实现,支持汉字的标记化,但没有改变标记化API。
为了测试新模型,我们修改了run_classifier.py以添加对XNLI数据集的支持。这是MultiNLI的15种语言版本,其中开发/测试集已被手动翻译,训练集已被机器翻译。
要运行微调代码,下载XNLI dev/test set和XNLI机器翻译的训练集,然后解压这两个。将文件压缩到目录$XNLI_DIR中。
在XNLI上运行微调。语言硬编码为run_classifier.py(默认为中文),所以如果要运行其他语言,请修改XnliProcessor。
这是一个很大的数据集,所以在GPU上训练需要几个小时(在云TPU上大约30分钟)。要快速运行实验进行调试,只需将num_train_epochs设置为一个小值(比如0.1)。
export BERT _ BASE _ DIR=/path/to/BERT/Chinese _ L-12 _ H-768 _ A-12 #或multilingual _ L-12 _ H-768 _ A-12 export XNLI _ DIR=/path/to/XNLI python run _ classifier . py \-task _ name=XNLI \-do _ train=true \-do _ eval=true \-data _ DIR=$ XNLI _ DIR \-vocab _ file=$ BERT _ BASE _ DIR/vocab . txt
* * * * * eval results * * * * eval _ accuracy=0.774116 eval _ loss=0.83554 global _ step=24543 loss=0.74603培训详细信息
和取样。
我们选择的语言是维基百科上语料库最大的前100种语言。取每种语言的整个维基百科转储数据(不包括用户页面和讨论页面)作为每种语言的训练数据。
但对于具体的语言,维基百科的语料库规模差异很大,而在神经网络模型中,低资源语言可能会“代表性不足”(假设语言在一定程度上在有限的模型容量中“竞争”)。
维基百科的语料库规模也与该语言的用户数量有关,我们不希望在特定语言的小数据集上运行数千个时代,导致模型过度拟合。
为了平衡这两个因素,我们在预训练数据创建(以及单词块词汇创建)期间对数据进行了指数加权。换句话说,假设一种语言的概率是P(L),例如P(英语)=0.21,这意味着所有维基百科放在一起后,21%的数据是英语的。我们用某个因子s对每个概率取幂,然后再归一化,从这个分布中取样。
在这个例子中,我们假设S=0.7。因此,像英语这样的高资源语言将被欠采样,而像冰岛语这样的低资源语言将被过采样。比如在原始分布中,英语的采样率比冰岛语高1000倍,但平滑后,英语的采样率只高100倍。
标记化
对于标记化,我们使用110k共享单词表。单词的权重和数据的权重一样,所以低资源语言的权重会增加。我们故意不使用任何标记来表示输入语言(这样零射训练就能起作用)。
因为中文中没有空格,所以在使用WordPiece之前,我们在CJK Unicode范围内的每个字符周围添加了空格。这意味着汉语被有效地符号化了。请注意,CJK Unicode block只包含中文字符,不包含韩文/韩文或日文片假名/平假名,这些字符像其他语言一样标记有空格。
对于所有其他语言,我们应用与英语相同的方法:(a)小写重音删除,(b)标点符号分割,以及(c)空白标记。我们知道重音符号在某些语言中很重要,但我们认为减少有效词汇的好处可以弥补这一点。总的来说,BERT强大的语境模型应该可以弥补删除重音符号带来的歧义。
支持的语言
多语言模型支持维基百科中拥有最大语料库的前100种语言。
但是我们唯一要排除的语言是泰语,因为它是唯一不用空格来分词的语言(汉语除外),而且每个词的字符太多,不能用基于字符的记号化。
GitHub地址:
https://github . com/Google-research/Bert/blob/master/多语言. md
[加入社区]
在新智元AI技术产业社区招募中,欢迎有志于AI技术产业落地的同学加入群,一点助手微信号:aiera 2015 _ 3;获得批准后,我们将邀请您加入该群。加入社群后,一定要修改群备注(姓名-公司-职位;集团审核严格,请理解)。

如何确认客户需求(如何识别并且满足客户需求的产品)

2022-8-24 9:26:48

好玩下载

海贼无双3汉化下载,海贼无双3下载安卓版

2024-3-18 13:41:36

购物车
优惠劵
搜索