专栏首页机器之心Kaggle最流行NLP方法演化史,从词袋到Transformer

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

选自Medium

作者:Zelros AI

机器之心编译

参与:魔王

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

本文分享自微信公众号 - 机器之心(almosthuman2014)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • NLP前路何在?Bengio等27位NLP顶级研究者有话说

    Sebastian Ruder 近日公布了这次采访的谈话实录,以及大会演讲的 PPT,对整个采访进行了总结。

    机器之心
  • 讨论 | Reddit热门话题:你是否也对NLP的现状感到失望?

    机器之心
  • Kaggle Grandmaster是怎样炼成的

    最近,Vladimir 分享了自己成为 Kaggle 高手的经验。目前,Kaggle 注册用户数量已超 100 万,其中只有 124 人拥有 Grandmast...

    机器之心
  • 从词袋到Transfomer,NLP十年突破史

    根据上下文(这里指句子的最后一个词),“它”可以指“动物”或“街道”。图源 | Google Transfomer 介绍。

    AI科技大本营
  • Github项目推荐 | 用于自然语言处理的开源 Python 库 —— PyTorch-NLP

    PyTorch-NLP 是用于自然语言处理的开源 Python 库,它构建于最新的研究之上,可以帮助开发者快速开发原型。PyTorch 带有预训练嵌入(pre-...

    AI研习社
  • Cache之过: 网页或头像 无法 同步更新

    前几天帮师姐解决一个 网页 无法 同步更新 的问题时,我推测问题可能处在cache上,后来通过这个思路解决了该问题,于是今天想到把该问题记录下来。

    JNingWei
  • Azure Sphere Development Environment Setup

    目前,Visual Studio 2017/2019支持Azure Sphere开发,后续,微软会加入Visual Studio Code的支持。以Vi...

    ShiJiong
  • 桥水基金创始人达利欧:成功的进化基因和五步法

    作为一个创业者,我失败过三回,最近五年赚到了钱也收获了快乐,这个过程让我认识到如何才能不断获得成功。

    庄帅
  • 中国软件行业迎来洗牌期强者恒强弱者出局

    一年一度的中国软件百强名单再次发布,相比以往中国软件行业还是迎来前所未来的变化,互联网公司入局洗牌趋势日渐明显。

    人称T客
  • 【玩转腾讯云】云开发部署VuePress静态博客

    通过 node -v 命令查看本机是否安装,如果没有安装,参考node.js安装指南 根据电脑系统环境进行安装

    城南旧事

扫码关注云+社区

领取腾讯云代金券