AI 研习社按:OpenAI 近期更新了一篇博客,他们利用一个任务无关的可扩展系统在多语言任务上取得了卓越进展。论文及代码已经公布。他们的方法结合了 transformers(https://arxiv.org/abs/1706.03762) 和无监督学习(https://arxiv.org/abs/1511.01432)两个已经存在的方法。项目结果证明了将监督学习和无监督预训练结合的方法十分有效。这是很多人设想过的方法,他们希望他们的成果可以激励更多人将该方法应用于更大更复杂的数据集上。原文发表在 OpenAI 的博客上,AI 科技评论对博客内容编译如下。
他们的系统分两个阶段工作。首先他们利用无监督的方式在超大数据集上训练一个 transformer 模型,过程中使用语言建模作为训练信号,然后放在较小数据集上进行微调使它可以处理一些特定任务。该方法基于他们情感神经元的相关工作,在那项工作中他们发现当训练数据量达到一定程度时,无监督学习会表现出令人惊讶的区分性特征。因此,他们决定验证一个想法,即是否可以开发一个模型,先以无监督的方式在大数据集上进行训练,然后再进行微调以保证应对不同任务时的表现。而结果显示,此方法效果拔群。相同的核心模型只要进行极小的微调就可以应对不同任务。
本工作基于半监督序列学习中介绍到的方法,该方法先对 LSTM 进行无监督的预训练然后再进行有监督的微调,以此来优化文本分类效果。该方法还拓展了 ULMFiT (https://arxiv.org/abs/1801.06146)中提到的方法,ULMFiT 介绍了如何对单个训练集未知的 LSTM 模型进行微调使它可以在不同的文本分类数据集上取得优秀的成绩。OpenAI 的工作为基于 Transformer 的模型提供了调整方案,让这些模型可以适应多种任务,这些任务不限于文本分类,还有常识推理,语义相似性研究,阅读理解等。本工作与 ELMo (https://allennlp.org/elmo)类似,但在任务无关性上更胜一筹,ELMo 也使用了预训练,但使用了针对任务定制的架构以保证在各种任务中取得最优表现。
仅需少量调整即可达成他们的目标。所有的数据集都使用单一的前向语言模型,且不包含任何集成方法,绝大多数研究成果使用的是完全相同的超参数配置。
他们的方法在 COPA, RACE 和 ROCStories 这三个数据集上的表现着实亮眼,这三个数据集就是用来测试常识推理和阅读理解的。他们的模型在这些数据集上取得了最优的成绩,且进步斐然。这些数据集着重测试多语句推理能力和重要世界知识的知识量,在这些数据集上取得优异成绩说明他们的模型通过无监督学习显著的提升了这些能力。这也为使用无监督学习去开发复杂语言理解能力的研究带来了希望。
为什么是无监督学习?
监督学习是目前大多数机器学习成功案例的核心。但是,监督学习需要使用到大数据集,这些大数据集必须标注明确,保持超低错误率,因此成本很高。无监督学习由于可以规避这些缺点所以显得很值得研究。由于无监督学习突破了“人类明确标注”这一瓶颈,所以随着算力的提升和原始数据可用性的增加,无监督学习也发展的越来越快。无监督学习是一个很热门的研究领域,但是实际应用还是很受限制。
近期有人尝试使用无监督学习向系统中添加大量无标注数据,想以此来提升语言能力。通过无监督学习训练出来的词表征可以使用 TB 级的数据集,而且如果和监督学习结合起来就可以大幅提升处理各种 NLP 任务的效果。直到最近,这些应用于 NLP 的无监督技术(比如 GLoVe 和 word2vec)使用简单模型(词向量)和已训练的信号(词局部共生)。Skip-Thought Vectors 是一个值得注意的早期尝试,它显示了更复杂的方法可能达到的潜在改进。但现在使用的新技术也可以大幅提升性能。这些新技术包括预训练语句表征模型,语境化词向量(尤其值得注意的是 ELMo 和 CoVE),以及 OpenAI 的可以融合无监督预训练和有监督微调的定制架构。
在大型文本语料库上预训练我们模型可以提升它在极具挑战性的自然语言处理任务(如 Winograd Schema Resolution)上的表现
OpenAI 发现他们可以使用底层语言模型去执行任务且不需要训练。例如,随着底层语言模型的优化,模型做选择题这种任务时的表现在稳步提升。虽然这些方法的绝对性能相较于当前最优的监督方法来说往往更加低下(在问答任务中,还是简单滑动窗口基线模型表现更好),但是这些方法在各种任务中表现出的鲁棒性令人鼓舞。不包含任何任务信息和现实信息的随机初始化网络的表现不比启发式随机初始化网络好。这也为生成式预训练为什么可以提升下游任务的表现这个问题提供了一些启发意见。
OpenAI 还可以用模型中已有的语言功能来执行情感分析。斯坦福情绪树数据集(Stanford Sentiment Treebank)由电影的正/负面评论组成,他们可以用语言模型来猜测评论是积极的还是消极的,具体方法是在评论句子后面加上「very」,然后再观察模型把这个「very」判断为「积极」还是「消极」。这种方法不需要根据任务去调整模型,其性能与经典基线相当,准确度能达到 80%。
OpenAI 的工作验证了 transformer 结构的鲁棒性和实用性,也表明它足够灵活,不需要复杂的任务定制和超参数调整就可以在各种任务中拔得头筹。
缺点
这个项目有这几个值得注意的点:
算力需求:许多以前的针对 NLP 任务的方法是从头开始在单块 GPU 上训练一个小模型。OpenAI 的方法的预训练过程很昂贵——8 块 GPU 训练一个月。幸运的是,这个过程只需要进行一次,而他们已经开源了自己的模 型,所以其他人就省了这个步骤。该模型比较大(相较于之前的工作),需要使用更大的算力和内存,他们使用了 37 层(12 块)transformer 架构,并在多达 512 个 token 的序列上训练。大多数实验是在 4 或 8 块 GPU 上进行的。这个模型调整起来很快,这也变相的减轻了资源需求。
通过文本认识世界的限制与偏见:网上随处可见的书籍和文本并不包含这个世界的全部信息,有时候信息也并不准确。近期的工作(https://arxiv.org/abs/1705.11168)表明某些信息只通过文本无法进行学习,另一些工作(https://arxiv.org/abs/1803.02324)表明模型会学习和利用数据分布上的偏差。
泛化能力依旧脆弱:尽管 OpenAI 的方法在各种任务上提升了性能,但现在的深度 NLP 模型依然存在着令人惊讶和反直觉的行为,以系统化,对抗性或超越数据分布的方式进行评估时表现尤为明显。他们的方法已经有了一些进步,但对此问题也束手无策。他们方法相较于之前的纯神经网络在文本蕴含任务上有更好的词鲁棒性。在 Glockner 等人(https://arxiv.org/abs/1805.02266)使用的数据库上,他们的模型取得了 83.75% 的准确率,和通过 WordNet 整合了外部知识的 KIM (https://arxiv.org/abs/1711.04289)性能相近。
未来的工作
扩展该方法:OpenAI 发现语言模型的改进与下游任务的改进关联密切。他们现在使用的是单个 8GPU 的商用机器,训练的数据集也不过几千本书的量(大概 5GB 文本)。所以在算力和数据上有很明显的改进空间。
改进微调方法:OpenAI 的现有的方法很简单,通过复杂的适配以及迁移其他工作(如 ULMFiT)中的技术,可以对他们的工作进行重大的更新。
更加深入的研究生成式预训练这么好用的原因:OpenAI 本文介绍了他们的部分想法,而更加具有针对性的试验和研究会为一些相互竞争的观点祛魅。例如,实验会证明现在取得的进步有多少受益于泛文本处理能力的提升,又有多少是因为世界知识的提升。
附录:数据集样本
bokedi
论文地址:
https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf
代码地址:
https://github.com/openai/finetune-transformer-lm
via OpenAI Blog, AI 研习社编译
关于不同文本嵌入模型的对比可以参见 AI 科技评论往期文章
想知道关于自然语言处理的更多知识?
领取专属 10元无门槛券
私享最新 技术干货