自然语言理解的四步框架

2 阅读3分钟

嵌入、编码、注意力、预测:理解神经网络处理自然语言理解问题的四步框架

尽管关于开发用于自然语言理解的神经网络的文献很丰富,但这些网络都具有相同的基本架构,该架构由语言输入的本质基本事实决定。本次演讲将命名并解释这四个组成部分(嵌入、编码、注意力、预测),简要介绍每个子问题解决方法的历史,并根据此框架解释两个复杂的网络——一个用于文本分类,另一个用于文本蕴涵识别。演讲假定听众具备神经网络和机器学习的一般知识。特别适合一直从事计算机视觉或其他问题研究的人员。

正如计算机视觉模型是围绕图像是连续值的二维或三维数组这一事实设计的,自然语言处理模型也是围绕文本是离散符号的线性序列这一事实设计的,这些符号形成层次结构:字母组成单词,单词组成更大的句法单位(短语、从句等),这些单位又组成更大的篇章结构(话语、段落、章节等)。

由于输入符号是离散的(字母、单词等),第一步是“嵌入”:将离散符号映射到连续的向量表示中。由于输入是一个序列,第二步是“编码”:根据周围的上下文更新每个符号的向量表示。你不能只通过查字典来理解一个句子——上下文很重要。由于输入具有层次性,句子的含义大于其各部分之和。这就引出了第三步,“注意力”:学习一个从可变长度矩阵到固定宽度向量的进一步映射,然后我们可以用它来预测关于文本含义的特定信息。

思考数据形状,而非应用细节

  • 整数 -> 类别标签
  • 向量 -> 单一含义
  • 向量序列 -> 多个含义
  • 矩阵 -> 上下文中的含义

对所有计算机而言,所有单词看起来都是唯一的

“dog”和“puppy”只是字母串。

  • 问题 #1:需要预测 P(id | "dog") 和 P(id | "puppy")。

学习密集嵌入

“观其伴而知其词。”

  • 解决方案 #1:word2vec、PMI、LSI 等。

我们正在丢弃上下文

  • 问题 #2:“我甚至不喜欢海鲜,但扇贝的味道很特别。” vs “你应该去别的地方。字面意义上的,任何其他地方。”

学习编码上下文

接收一个词向量列表,编码成一个句子矩阵。

  • 解决方案 #2

信息过多

好了,你得到了一个句子矩阵。现在怎么办?行显示了单个标记的含义,但没有整个句子的表示。

  • 问题 #3

学习关注什么

针对查询来总结句子,获得全局的、特定于问题的表示。

  • 解决方案 #3

我们需要一个特定的值,而不是一个通用的表示

好了,你得到了一个句子向量。现在怎么办?仍然在处理“表示”,而我们的应用正在寻找一个值。

  • 问题 #4

学习预测目标值

将通用架构转变为特定解决方案,为您的应用提供该值。

  • 解决方案 #4

实践应用

  • 用于文本分类的层次化神经网络模型
  • 预测文本之间的关系

如果我们没有 10,000 条评论怎么办?

使用尽可能多的知识初始化模型:词嵌入、上下文嵌入、迁移学习。将您的数据留给“注意力”和“预测”步骤。使用通用的语言知识进行“嵌入”和“编码”。

结论

神经网络让我们学会学习什么。知识必须来自某个地方,最好是未标记的文本(例如词嵌入)。你仍然需要标签来预测你真正感兴趣的内容。通用的数据形状现在已经很好地被理解——但还有很多组合和搭配的空间。FINISHED