每隔几周,加利福尼亚大学洛杉矶分校(UCLA)的 Adit Deshpande 就会在其博客上发表一篇深度解读的深度学习研究回顾博客。今天这篇是 Adit 的这一系列的第三篇博客,将主要介绍深度学习在自然语言处理当中的应用。 自然语言处理(NLP)是创造能够处理或是「理解」语言以完成特定的任务的系统。这些任务可能包括: 问答系统(也就是Siri、 Alexa和小娜所做的事情) 情感分析(判断一句话隐含的积极或消极意义) 图片题注(为输入的图像生成一个标题) 机器翻译(将一段文本翻译成另一种语言) 语音识别 词性标注 命名实体识别 传统的自然语言处理方法涉及到了很多语言学本身的知识。理解诸如音素(phonemes)和语素(morphemes)等术语都是非常必须的,为了学习这些专业知识,还要学习完整的语言学课程。接下来让我们看一些传统的自然语言处理是如何理解下面这一单词的。
假设我们的目标是要收集关于这一单词的一些信息(描述它的情感、寻找它的定义等)。利用我们在语言上的专业知识,我们把这个单词分为三部分。
我们知道这个单词的前缀「un」表示的是一种相对立的或是相反的概念,「ed」能够限定这个单词的时态(过去时)。通过对这个单词主干部分「interest」的理解,我们能够很容易地推断出整个单词的意思和情感。看起来是不是非常地简单?但是,当你要考虑到英语中所有不同的前缀和后缀的时候,可能就需要一位非常有技巧的语言学家才能理解所有可能的组合和意义。
如何将深度学习应用其中 深度学习,从其最基本的层面来说,是表征学习(representation learning)的一种方法。利用卷积神经网络,我们可以看到用来对事物进行分类的不同过滤器的组成。在这里,我们将要采取一种类似的方法,利用大数据集为词汇创造表征。 本文概述 这篇文章中,首先我们将了解为自然语言处理建立深度网络的基本构建模块,开奖,之后将对最近研究论文的一些应用进行讨论。大多数人都不明确了解为什么我们要使用循环神经网络(RNN)或者是长短期记忆(LSTM)为什么会有用,但是我希望在我们讨论完研究论文之后,你可以对为什么深度学习会为自然语言处理提供这么大的帮助有更好的理解。 词向量 因为深度学习和数学密不可分,我们将要把每一个单词都表征为一个d维向量。我们将d设定为6。
现在让我们想一想该如何填写值。我们希望填写值的方式可以让向量表征词,以及词的语境、意思或语义。一种方法就是建立一个共生矩阵(coocurence matrix)。以下面这一句话为例。
在这一句话中,我们想要给每一个词都建立一个词向量。
共生矩阵中包含了在语料库(或是训练集)中每一个词出现在其他词语旁边的次数。让我们看看下面这个矩阵。
将这个矩阵的行提取出来能够让我们对词向量有一个简单的初始化。
注意,通过这个简单的矩阵,我们将能收获非常有用的见解。例如,注意「love」和「like」,这两个词与名词(NLP 和dogs)相连的次数都是1。和「I」相连的次数也是1,所以这表明这两个单词一定是动词。如果说我们拥有更大的数据集,而不是简单的一句话,你可以想象,这种相似性就会变得越来越明显,就像是「love」和「like」一样,其它的一些同义词也会开始拥有相似的词向量,因为它们一般都会在相似的语境下使用。 (责任编辑:本港台直播) |