魔王编译

Kaggle最流行NLP方法演化史,从词袋到Transformer

Kaggle 竞赛史也是实践型 NLP 的历史。

根据语境,此处「it」指代「animal」或「street」。(来源:https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html)

著名数据科学竞赛平台 Kaggle 成立于 2010 年,是了解机器学习进化趋势的重要观测器。Kaggle 见证了几代技术突破,吸引了数千名从业者和数百万论坛讨论。

在 Kaggle 平台的众多挑战中,自然语言科学(NLP)尤其受到关注。的确,这几个月以来该领域出现了多项振奋人心的创新。最近的创新则莫过于 Transformer 和预训练语言模型了。

本文将透过 Kaggle 的历史简要介绍 NLP 的发展进程。

2016 年之前:词袋和 TF-IDF 称霸

在 2016 年之前,解决并赢得 Kaggle NLP 挑战的标准方式是:使用词袋(计算单词在文档中的出现次数)创建特征,并输入到机器学习分类器中,如朴素贝叶斯分类器。而 TF-IDF 则对其进行微调。

该方法曾用于 StumbleUpon Evergreen Classification Challenge 挑战赛中。(2013 年,François Chollet 获得了该挑战赛的冠军,两年后他创造了 Keras。

2016–2019:词嵌入+Keras/TensorFlow 崛起

2015 年,用于处理密集词表征的库诞生,如 Gensim(包括 Word2vec 和 GloVe)。其他预训练嵌入也应运而生,如 Facebook FastText 或 Paragram。

目前神经网络框架 Keras 和 TensorFlow 具备易用性且吸引了大量用户,那时它们的初始版本已开始流行。这些框架让捕捉词序列的意义成为可能,而不仅仅是捕捉词袋的意义。

要运行深度神经网络,需要解决最后一个大问题:获取强大的处理能力。低成本 GPU 的应用解决了这一难题。2017 年 3 月 Kaggle 被谷歌收购后,开始(通过 Notebooks kernel)免费提供 GPU,这使得开发者能够更容易地获取处理能力。

之后,所有实际 NLP 方法都开始使用词嵌入和神经网络(RNN、LSTM、GRU 等等,以及注意力机制等),这成为解决 Kaggle NLP 挑战赛的标准方式。TF-IDF 成为过去式……

使用 RNN 编码词序列。

2018–2019:PyTorch 的突破

最近,一种新的神经网络框架 PyTorch 受到了数据科学社区的关注。

且不谈 TensorFlow 和 PyTorch 的较量,我们可以确定地说 PyTorch 用户活跃社区在 Kaggle 上发展迅速。Kaggle 平台经常出现 PyTorch notebook 和教程。

TensorFlow(蓝色)和 PyTorch(红色)的谷歌搜索趋势(来源:Google Trend)

2019:Transformer 的出现和预训练模型大爆发

如前所述,之前解决 NLP 任务的标准方式是使用词嵌入初始化神经网络的第一层,然后基于特定任务的数据训练其他层(这些任务可以是文本分类、问答、自然语言推断等)。

仔细想想你会发现,这并非最优方法。因为每次有新任务时,你都要从零开始学习。使用词嵌入进行初始化的模型通常需要从头学习如何推导词序列的意义,尽管这是语言理解的核心。

这时候 Transformer 来了,这一重要的范式转变在 2018 年就已出现:从仅初始化模型的第一层转变为使用层级表征初始化整个模型。这开启了新的工作方式:将预训练语言模型的信息迁移到下游任务(即迁移学习)。

Transformer 模型架构(图源:https://arxiv.org/abs/1706.03762)

在实践中,目前利用预训练语言模型的最优方式是使用 Hugging Face 创建的 Transformer 库。该库可与 PyTorch、TensorFlow 兼容。如果你想要基于该库的 wrapper,来解决文本分类等简单任务,可查看 https://towardsdatascience.com/simple-transformers-introducing-the-easiest-bert-roberta-xlnet-and-xlm-library-58bf8c59b2a3。

如果处理的是非英文文本,你可以看看另一个库 fast.ai,它包含针对不同语言的预训练模型。(fast.ai 库的创建者 Jeremy Howard 曾担任 Kaggle 总裁和首席科学家。)

展望

现在每个人都可以使用最新一代预训练语言模型的现成库,这允许快速试验,也促进了当前最优 NLP 技术的民主化。

不知道它们会在以后的 Kaggle NLP 竞赛中发挥怎样的作用,观察这一点想必会很有趣。

原文链接:https://medium.com/@Zelros/from-bag-of-words-to-transformers-10-years-of-practical-natural-language-processing-8ccc238f679a

入门Kaggle竞赛史
3
相关数据
机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

迁移学习技术

迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

语言模型技术

统计式的语言模型是借由一个几率分布,而指派几率给字词所组成的字串。语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。

推荐文章
暂无评论
暂无评论~