15. 自然语言处理:预训练

人类需要交流。出于人类生存的这一基本需求,我们每天都会产生大量的书面文本。鉴于社交媒体、聊天应用、电子邮件、产品评论、新闻文章、研究论文和书籍中丰富的文本,让计算机能够理解它们,从而根据人类语言提供帮助或做出决策,变得至关重要。

自然语言处理研究计算机与人类之间使用自然语言的交互。在实践中,使用自然语言处理技术来处理和分析文本(人类自然语言)数据非常普遍,例如第 9.3 节中的语言模型和第 10.5 节中的机器翻译模型。

为了理解文本,我们可以从学习其表示开始。利用大型语料库中现有的文本序列,自监督学习已被广泛用于预训练文本表示,例如通过使用文本周围的其他部分来预测文本的某个隐藏部分。通过这种方式,模型可以通过来自海量文本数据的监督进行学习,而无需昂贵的标注工作!

正如我们将在本章中看到的,当将每个单词或子词视为一个单独的词元时,可以使用 word2vec、GloVe 或子词嵌入模型在大型语料库上预训练每个词元的表示。预训练后,每个词元的表示可以是一个向量,但是无论上下文如何,它都保持不变。例如,“bank”的向量表示在“go to the bank to deposit some money”(去银行存钱)和“go to the bank to sit down”(去河岸坐下)中是相同的。因此,许多更新的预训练模型会根据不同的上下文调整相同词元的表示。其中之一是 BERT,一个基于 Transformer 编码器的更深层次的自监督模型。在本章中,我们将重点讨论如何预训练文本的这种表示,如图 15.1中所示。

../_images/nlp-map-pretrain.svg

图 15.1 预训练的文本表示可以输入到各种深度学习架构中,用于不同的下游自然语言处理应用。本章重点关注上游的文本表示预训练。

为了看到全局,图 15.1显示,预训练的文本表示可以输入到各种深度学习架构中,用于不同的下游自然语言处理应用。我们将在第 16 节中介绍它们。