本文将首先介绍词嵌入模型及其基本原理,然后再进一步探讨词嵌入模型无法解决的问题——自然语言理解。首先,我们将讨论词嵌入模型的基本概念。
词嵌入模型是一种将词汇表中的词语转换为低维向量的技术。每个前向传播的神经网络都会将词汇表中的词语表示为低维空间中的向量。通过反向传播,模型会不断调整这些向量,最终得到词嵌入作为第一层的权重,通常称为“嵌入层”。
词嵌入模型与专门用于生成词嵌入的模型(如word2vec)的主要区别在于计算复杂度。对于大型词汇集,使用复杂的架构生成词嵌入的成本较高。这就是为什么直到2013年词嵌入才在自然语言处理领域得到广泛应用。计算复杂度是词嵌入模型的关键权衡因素,也是我们这篇概述中反复提到的主题。
另一个区别在于训练目标。word2vec和GloVe模型旨在生成具有广泛语义关系的词嵌入,这对许多下游任务非常有用。然而,这种词嵌入对于不依赖于语义关系的任务帮助较小。相比之下,传统的神经网络模型生成的词嵌入在其他任务中的表现往往较差。值得注意的是,依赖于语言建模的语义关系的模型可以生成类似的嵌入,这一点将在下文进一步讨论。
word2vec和GloVe模型类似于计算机视觉领域的VGGNet,它们提供了一种通用的权重初始化方法,可以提供有用的特征,而无需长时间训练。
我们可以将词嵌入模型与语言模型紧密联系起来。语言模型的质量取决于其学习词汇的概率分布的能力。实际上,许多现代词嵌入模型试图预测序列中下一个出现的词。此外,词嵌入模型的评估通常使用困惑度(perplexity),这是一个从语言模型借用的基于交叉熵的评价标准。
在进入词嵌入模型的细节之前,我们先简要介绍一下语言模型的基础知识。语言模型的目标是在给定前面的词语的情况下,计算一个词语的概率。使用链式法则和马尔可夫假设,可以通过之前出现的n个词的概率乘积来计算整个句子或文章的概率。
在神经网络中,我们通过Softmax层来计算相同的目的函数。内积计算了词的未标准化对数概率,然后通过所有词的对数概率之和进行标准化。h是倒数第二层的输入向量,v'w是词w的输入嵌入。
需要注意的是,虽然v'w可以表征词w,但它是从输入词嵌入vw独立学习的。这是因为v'w和vw的乘积对象不同。
Bengio等人在2013年提出的经典神经语言模型包含一个前向传播神经网络,用于预测文本序列中的下一个词。该模型的最大化目的是基于典型的神经语言模型的目的函数。
Bengio等人首次提出了词嵌入模型,这是一种在实数范围内表示词特征向量的模型。他们的架构非常经典,是许多改进方法的原型。他们原始模型中的基础模块仍然可以在许多神经网络和其他词嵌入模型中找到。
Collobert和Weston(称为C&W)在2008年展示了词嵌入模型在大型数据库中如何携带语法和语义信息,并提升性能。他们的模型避免了昂贵的softmax层计算,而是采用另一种目的函数。他们的模型架构类似于Bengio等人的模型,但计算成本更低。
Word2vec是目前最流行的词嵌入模型之一,源于Mikolov等人在2013年的研究。Word2vec提供了两种架构:连续的词袋(CBOW)和skip-gram。这两种架构都去除了昂贵的中间层,并更多地考虑上下文信息。
尽管词嵌入在自然语言处理任务中表现出色,但它们并不能直接获取实际意义。词嵌入是由语言样本驱动的,而这些语言样本是由意义驱动的。因此,词嵌入自然地反映了这些含义。但是,学习词嵌入的人工智能系统并没有直接获取实际意义。
对于自然语言处理任务来说,缺乏直接获取实际意义的方法并不重要。不了解句子中的代词指向并不会严重影响翻译的准确性,但在构建会话人工智能时,这仍然是一个挑战。理解代词的指代在持续对话中非常重要。用于训练NLP任务的人工智能训练数据不包括消除词义歧义所需的信息,这些信息主要来源于对世界的认知。
一些优秀的研究人员正在探索自然语言理解的问题。例如,OpenAI的研究者们在NIPS 2016上发表了关于情境化和目标导向的语言学习的文章。斯坦福大学的研究者们也在研究交互式语言学习,认为为了学习语义,与世界的交互至关重要。
对于希望构建会话人工智能的开发者来说,这些限制仍然是必要的。尽管如此,有一些方法可以在不解决自然语言理解问题的情况下增强这种会话人工智能的体验。例如,通过明确指定约束条件,开发者可以定义应用程序可以执行的一组意图,并将其映射到用户可以请求的方式上。
了解当前人工智能和机器学习技术的能力和局限性对于任何希望利用这些技术来增强应用程序功能的人来说都是非常重要的。如果你对人工智能的现有能力持有足够的质疑,你可能会浪费大量时间和金钱去做那些尚未实现的事情。另一方面,如果你过于怀疑,你可能会错失开发一个极具实用性和盈利能力的人工智能的机会。