21

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

 4 years ago
source link: https://www.jiqizhixin.com/articles/2019-11-12-10
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
b6jQNzA.jpg!web

根据语境,此处「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 成为过去式……

yuiIf2z.jpg!web

使用 RNN 编码词序列。

2018–2019: PyTorch 的突破

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

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

bAjuEv7.png!webTensorFlow(蓝色)和 PyTorch(红色)的谷歌搜索趋势(来源:Google Trend)

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

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

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

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

J7fQ3qI.jpg!web

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK