OpenAINLP最新进展:通过无监督学习提升语言理解

人工智能头条 2018-06-20 10:48
关注文章

【导读】近日,OpenAI 在其官方博客发文介绍了他们最新的自然语言处理(NLP)系统。这个系统是可扩展的、与任务无关的,并且在一系列不同的 NLP 任务中都取得了亮眼的成绩。但该方法在计算需求等方面仍存在改进的空间。下面我们来看他们的博文:

我们即将发布一个可扩展的,与任务无关的自然语言处理系统,该系统在一系列不同的语言任务上都取得了目前最先进的成绩。我们的方法结合了两种现有的 NLP 网络架构:Transformer 和无监督预训练。大量任务数据集上的测试结果表明,这种方法将监督学习方法与无监督预训练结合得非常好;当然,这也是之前许多人在探索的想法。我们希望我们的工作能够激发该方向进一步的研究,并鼓励大家将这一想法应用到更大更多的不同数据集上。

先看结果:



我们的系统的工作流程分为两个阶段:首先,以无监督的方式在大量数据上训练一个 Transformer 模型——使用语言建模作为训练信号——然后,在小得多的监督数据集上对这个模型进行 fine-tuning,以帮助它解决特定的任务。这项研究是建立在我们之前一项关于情绪神经元( Sentiment Neuron )的工作基础之上的,在那项工作中我们注意到,当训练数据足够多时,无监督学习技术可以产生惊人的判别性特征。

在本项研究工作中,我们这个想法进行了进一步的探索:我们可以开发一个模型,以无监督的方式对大量数据进行训练,然后对模型进行 fine-tuning,以在许多不同任务上获得良好的性能。我们的研究结果表明,这种方法的效果非常好。针对不同的任务,只需要对同一个的核心模型进行最少的调整就可以进行应用。

这项工作建立在半监督序列学习( Semi-supervised Sequence Learning)的基础之上,其中半监督序列学习方法展示了如何通过使用 LSTM 的无监督预训练,然后进行有监督的 fine-tuning 来提高文档分类性能。

我们的工作还对 ULMFiT进行了拓展,说明了为了在各个文档分类数据集上获得最先进的性能,应该如何对单个与数据集无关的 LSTM 语言模型进行 fine-tuning;我们的工作展示了如何使用基于 Transformer 的模型来实现文档分类之外的更广泛的任务,如常识推理,语义相似性和阅读理解。

它和 ELMo 也有一些类似,但比 ELMo 更加通用。(编辑注:ELMo 是目前最先进的上下文词嵌入技术,同样使用了预训练技术,但为了在各种任务中获得最先进的结果针对不同任务使用了定制架构。)

我们的实验结果只需要进行非常少的调整就可以实现。其中所有数据集都使用单一的正向语言模型,没有任何集成,并且大多数报告结果都使用了完全相同的超参数设置。

值得一提的是该方法在三种关于测试常识推理和阅读理解的数据集(COPA,RACE和ROCStories)上的表现。我们的模型以远超第二名的成绩在这些数据集上获得了最先进的结果。这些数据集普遍被认为需要借助多语句推理和有意义的世界知识进行解决,而我们的模型主要通过无监督学习来提高这些技能。这也表明了通过无监督技术来开发复杂的语言理解功能的可能。这让我们特别兴奋。


为什么是无监督学习?

监督学习是机器学习最近成功的关键。但是,它可能需要大量的、经过仔细清理的、昂贵的数据集才能发挥非常好的作用。而无监督学习则有可能解决这些不足,这是非常有吸引力的。由于无监督学习没有了显式人工标签的限制,在当前计算量和原始数据不断增加的趋势下,这项技术表现出了非常好的扩展性。 不过虽然无监督学习是一个非常活跃的研究领域,但其实际用途仍然有限。

最近有人试图通过无监督学习用大量无标记数据进行增强以进一步提高系统的自然语言处理能力。通过无监督技术训练的词向量表示可以使用由 TB 级信息组成的大型数据集,并且当它与监督学习相结合时,可以提高各种 NLP 任务的性能。之前,这些 NLP 的无监督技术(例如 GLoVe 和 word2vec)使用的都还是简单模型(词向量)和训练信号(词局部共现,the local co-occurence of words)。

Skip-Thought Vectors是早期的一个值得注意的方法,展示了通过更复杂的方法实现的改进的可能性。而现在正在使用的新技术则进一步提高了性能,这包括使用预训练的语句表示模型,上下文词向量(主要是 ELMo和 CoVE),以及使用定制架构来融合无监督预训练和监督 fine-tuning 的方法(也就是我们的方法)。




在大量文本上对我们的模型进行预训练,可显著提高其在诸如 Winograd Schema Resolution 等具有挑战性的自然语言处理任务上的表现。

我们还注意到,该方法可以直接使用底层语言模型开始执行任务,而无需对其进行任何训练。例如,随着基础语言模型的改进,像在选择题中选择正确答案这种任务的性能会稳步增加。

虽然这些方法的绝对性能相对于最新的监督技术而言仍然很低(对于问答式任务,它仅比简单的滑动窗口基线结果好),但令人鼓舞的是,这种行为在大量任务中表现的非常鲁棒。这种不使用任务和世界信息的随机初始化网络表现的和使用这些信息的随机网络一样好。这为我们了解为什么生成式预训练可以提高下游任务的性能提供了一些有意义的参考。

我们还使用模型中现有的语言功能进行了情感分析。对于斯坦福 Sentiment Treebank 数据集(该数据集包含了电影评论中的正面和负面语句),我们可以使用语言模型来猜测评论是正面还是负面(在语句后面输入单词“very”即可进行预测),并且观察模型是倾向于将词性预测为“积极”还是倾向于将词性预测为“消极”。 这种方法根本不需要根据任务对模型进行调整,并且其性能与经典基线准确率相当,可达 80% 。

我们的工作也验证了 Transformer 架构的鲁棒性和实用性,表明它具有足够的灵活性,可在广泛的任务中实现最先进的结果,而无需复杂的任务定制或超参数调整。


不足之处

这个项目也有一些突出问题非常值得注意:

计算需求:以前的许多自然语言处理方法都是从头开始在单个 GPU 上训练相对较小的模型。但我们的方法预训练步骤计算需求则相当昂贵——在 8 个 GPU 上训练 1 个月。幸运的是,这只需要做一次,我们正在将我们的模型发布出来,以方便其他人不用重复这一步骤。

它也是一个大型模型(与之前的工作相比),因此使用了更多的计算和内存——我们使用了37层(12块)Transformer 架构,并且在最多可达 512 个 tokens 的序列上训练。并且大多数实验都是在 4 个和 8 个 GPU 的系统上进行的。该模型针对新任务进行 fine-tuning 的速度非常快,有助于减轻额外的资源需求。

通过文本学习世界的局限性和偏见:互联网上随时可用的书籍和文本所包含的关于世界的信息并不完整,甚至并不准确。最近的研究(https://arxiv.org/abs/1705.11168)表明,某些类型的信息很难通过文本进行学习。而另外一些研究(https://arxiv.org/abs/1803.02324)则表明了数据分布中存在的模型学习和开发偏见。

依旧脆弱的泛化性能:尽管我们的方法提升了自然语言处理系统在大量任务上的性能,但目前的深度学习 NLP 模型仍然表现出了令人惊讶的反直觉的行为——尤其是在以系统性、对抗性或分布性的方式进行评估时。尽管我们已经观察到一些研究进展,但我们的方法对这些问题并不是免疫的。

这种方法表现出比先前的面向文字蕴含(Textual entailment)的神经网络方法更好的词法鲁棒性。在 Glockner 等人介绍的数据集(https://arxiv.org/abs/1805.02266)上,我们模型的准确率达到了 83.75%,其性能类似于通过 WordNet 整合外部知识的 KIM。


工作展望

方法规模化拓展:我们已经观察到,语言模型的性能改进与下游任务的改进密切相关。目前我们正在使用商用硬件(一台 8 GPU 计算机)以及仅包含几千本书(约 5 GB 文本)的训练数据集。这表明经过充分验证该方法在处理越来越大的计算量和数据时还有很大提升空间。

改进的 fine-tuning:我们在 fine-tuning 上的策略目前非常简单。通过使用更复杂的自适应和转换技术(例如 ULMFiT中的技术)可能为我们的系统带来实质性的改进。

更好地理解生成式预训练带来提升的原因:尽管我们已经讨论了一些关于这个问题的想法,但更有针对性的实验和研究将有助于我们对那些相互矛盾的解释进行判断。例如,我们观察到的提升有多少是由于对处理更广泛上下文能力的改进,以及多少是由于对世界知识的改进?


附录:数据集示例




编译 | reason_W

编辑 | 明 明

原文地址:https://blog.openai.com/language-unsupervised/

微信扫一扫
关注该公众号

文章被以下专辑收录
{{panelTitle}}
支持Markdown和数学公式,公式格式:\\(...\\)或\\[...\\]

还没有内容

关注微信公众号