BERT:自然语言处理的开源培训技术
在最近的一篇博客文章中,谷歌宣布拥有开源BERT,这是他们针对NLP应用程序的最先进的培训技术。谷歌决定这样做的部分原因是缺乏可供开发者使用的公共数据集。BERT还包括一项新的双向技术,以提高其在自然语言处理中的有效性。为了减少开发人员和研究人员训练NLP模型所需的时间,谷歌在Cloud Tensor Processing Unit (T PUs)中进行了优化,将训练一个模型所需的时间减少到30分钟,而使用一个GPU只需要几个小时。
谷歌觉得开发者缺乏NLP训练数据。谷歌研究科学家雅各布德夫林(Jacob Devlin)和明伟变化(Ming-Wei Change)解释了为什么分享他们的数据集很重要:
自然语言处理最大的挑战之一是缺乏训练数据。由于自然语言处理是一个多样化的领域,有许多不同的任务,大多数特定任务的数据集只包含数千或数十万个人类标记的训练例子。然而,基于现代深度学习的自然语言处理模型从大量数据中获益。当训练数百万或数十亿个带注释的训练实例时,效果会有所提高。
谷歌的研究人员还开发了一项名为“来自变形金刚的双向编码器表示(BERT)”的新技术,用于训练具有非常大数据集的通用语言表示模型,其中包括来自网络的通用文本,也称为预训练。德夫林解释了为什么这种预培训很重要:
然后,预训练的模型可以对小数据的自然语言处理任务进行微调,如问答和情感分析。与从头开始训练这些数据集相比,精度有了很大的提高。
包括基于TensorFlow的BERT源代码、开源机器学习框架和一系列预先训练好的语言表示模型。谷歌发表了一篇相关论文,展示了他们在11个NLP任务上的最新结果,包括如何回答斯坦福问题数据集(SQuA Dv1.1)。
BERT与其他方法的区别在于它在训练前的上下文表示中是如何工作的,包括半监督序列学习、预生成训练、ELMo和ULMFIT。然而,真正让BERT与众不同的是第一个深度双向无监督语言表示,它只使用纯文本语料库进行预训练。德夫林解释了为什么这种方法是独一无二的:
预训练表示可以是上下文无关的或上下文敏感的,上下文表示可以是单向的或双向的。一个上下文无关的模型,如Word2vec或GloVe,为词汇表中的每个单词生成一个单词嵌入表示。例如,“银行”一词在“银行账户”和“河流银行”中具有相同的上下文无关表示。
上下文模型基于句子中的其他单词生成每个单词的表示。例如,在“我访问了银行账户”这句话中,单向上下文模型将基于“我访问了”而不是“账户”来表示“银行”。然而,BERT代表“银行”,使用它的上一个和下一个上下文——“我访问过。account”-要从深层神经网络的底层开始,使其深度双向化。
单向模型的工作原理是根据句子中以前的单词预测每个单词。从历史上看,双向训练是困难的,因为当“下一个”预测器返回到“上一个”预测器时,一个单词将不可避免地能够在多层模型中看到自己。BERT用蒙面词回应了这一挑战。
除了BERT中包含的新技术,谷歌还增强了云TPU,使开发人员和研究人员能够快速实验、调试和调整模型。这些投资使谷歌能够超越现有的预培训模式。
除了张量2传感器库,还可以从GitHub获得BERT。
标签: