自2010年创办以来,Kaggle作为著名的数据科学竞赛平台,一直都是机器学习领域发展趋势的风向标,许多重大突破都在该平台发生,数以千计的从业人员参与其中,每天在Kaggle论坛上都有着无数的讨论。

各种类型的挑战赛(计算机视觉、语音、表格处理等等)都会在这个在线平台发布,而自然语言处理(NLP)问题最近亦备受关注。诚然,过去几个月里,我们已经见证这一领域有好几项振奋人心的创新,而目前流行的的则是transformers和预训练语言模型。

Medium上一位从事NLP的博主就通过Kaggle竞赛梳理了一遍自然语言处理的发展历史,看看NLP这些年都是怎样一路走来的。

左边:动物没有过马路,因为它太累。右边:动物没有过马路,因为它太宽。基于语境,句子的最后一词“它”在这可指“动物”或是“马路”,摘自谷歌transformers词条。

2016以前:词袋(bag of words)模型和TF-IDF算法盛行

在2016年之前,解决(或者说赢得)Kaggle自然语言处理挑战的标准方法是采用词袋模型(即计算文章中各个单词出现的次数)来建立特征输入机器学习分类器,典型的有朴素贝叶斯算法。稍微完善些的则有TF-IDF算法。

这种方法被应用在如StumbleUpon Evergreen分类挑战。

StumbleUpon是一个推荐引擎,根据用户的兴趣向其推荐相关的网页。网页分为两种,一种是暂时的,在短期内有价值的网页,另一种是长期的,一直都有效果的网页,该挑战的目的就是对这两种页面进行二元分类。

数据集链接:

https://www.kaggle.com/c/stumbleupon

这里顺便提一句,在2013年解决该难题的冠军是Fran ois Chollet——就是两年后编写出Keras的那个人。

Fran ois Chollet

2016-2019:词嵌入模型+Keras以及TensorFlow 的兴起

在2015年,开始出现稠密词表征(dense word representations)库,如Gensim库(包括Word2Vec和GloVe)。其他预训练嵌入模型也陆续出现,像Facebook的FastTest或是Paragram。

同时,拥有大量用户、简单可用的神经网络框架的首发版本也开始流行,即上文提到的Keras和TensorFlow。它们不再仅使词袋模型,开始使用词序模型捕获句意。

然而要运行深度神经网络,还有最后一项难题亟待解决:需要高处理性能。成本越来越低的GPU解决了这个难题。Kaggle平台在2019年3月被谷歌收购后,平台(通过合作式的Notebooks内核)可以向用户免费提供GPU使用。

从那时起,词嵌入和神经网络(RNN,LSTM,GRU等等,以及基于此的改进,如attention)这些可行方案就成了解决Kaggle中自然语言处理难题的标准方法

这时候就不得不说一句:永别了,TF_IDF!

使用RNN编码单词序列

2018-2019:PyTorch杀出重围

近几个月,一个新的神经网络框架PyTorch在数据科学界越来越受关注。

在此不讨论TensorFlow和PyTorch的优劣,但可以肯定的是,在Kaggle上越来越多的人开始使用PyTorch了。平台上经常有PyTorch的在线笔记和教程发布。

2019年:transformers和预训练语言模型诞生

如上所述,直至目前为止,词嵌入模型(在大量的无标注数据上进行预训练)仍是解决自然语言处理难题的标准方法,利用此模型初始化神经网络的第一层,然后在特定任务(可能是文本分类,问答或自然语言推断等等)的数据上训练其他层。

但如果仔细想想,这种方式其实并非最优。事实上,每当需解决一项新问题时,你基本需要从零开始学起。通过词嵌入进行初始化的模型需要从零开始学习如何从单词序列中提取含义——哪怕那是语言理解的最核心部分。

transformers出现后,这是2018年发生的关键范式转变:从仅初始化模型的第一层到使用阶梯式表达对整个模型进行预训练。这也产生了新的训练模式:将信息从预训练语言模型转移到下游任务(也称为迁移学习)。

实际上,使用预训练语言模型的最好方式是利用Hugging Face(由法国企业家创立,目前总部在美国,和我们一样毕业于Station F微软AI工厂的校友)开发的transformers库。目前它与PyTorch和TensorFlow兼容。

如果你想用它更上层的封装来完成一些诸如文本分类的简单任务,可以看看 simple-transformer 库。

梳理十年Kaggle竞赛,看自然语言处理的变迁史相关推荐

  1. 从词袋到transfomer,梳理十年Kaggle竞赛,看自然语言处理的变迁史

    大数据文摘出品 来源:medium 编译:LYLM.胡笳 自2010年创办以来,Kaggle作为著名的数据科学竞赛平台,一直都是机器学习领域发展趋势的风向标,许多重大突破都在该平台发生,数以千计的从业 ...

  2. 东京奥运会能如期举办吗?带你用数据看120年奥运变迁史

     CDA数据分析师 出品   作者:真达.Mika 数据:真达   [导读] 2020年年初,突然袭来的新冠疫情给我们的生活带来了巨大的改变,与此同时也让许多国际体育赛事停摆.3月24日,东京奥组委宣 ...

  3. 【Kaggle竞赛树叶分类Baseline】上万片树叶分为一百七十六类

    [Kaggle竞赛树叶分类1]https://www.kaggle.com/c/classify-leaves 任务是预测叶子图像的类别.该数据集包含 176 个类别.18353 张训练图像.8800 ...

  4. 从零开始拿到了Kaggle竞赛冠军

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 因 ...

  5. 关于Kaggle竞赛

    这次酝酿了很久想给大家讲一些关于Kaggle那点儿事,帮助对数据科学(Data Science)有兴趣的同学们更好的了解这个项目,最好能亲身参与进来,体会一下学校所学的东西和想要解决一个实际的问题所需 ...

  6. Kaggle竞赛入门教程之Kaggle简介(新手向)

    Kaggle号称是全球最大的数据科学家汇聚的平台,高手云集,同时对萌新也很友好.Kaggle网址:https://www.kaggle.com/.目前为止(2016.12)网站有这么几个版块: 1.竞 ...

  7. 不写一行代码,也能玩转Kaggle竞赛?

    整理 | Jane 出品 | AI科技大本营(ID:rgznai100) [导读]AI科技大本营会给大家分享一些 Kaggle 上的资源,如 Kaggle 开放的数据集,也会分享一些好的竞赛方案或有意 ...

  8. 我,14岁初中生,从零开始拿到了Kaggle竞赛冠军

    视学算法报道 机器之心编辑部 因为对数学感兴趣,勇敢的少年决定投身 Kaggle. 知乎上有这样一个问题已经收到了超过 700 条回答. 在这之下有人冷嘲热讽,有人给出了鼓励和建议.从人们回答的时间来 ...

  9. 从零开始,教你征战Kaggle竞赛

    来源:机器之心 本文共5400字,建议阅读12分钟. 本文将带你进入全球最大机器学习竞赛社区 Kaggle,教你如何选择自己适合的项目,构建自己的模型,提交自己的第一份成绩单. 本文将介绍数据科学领域 ...

最新文章

  1. ListView 常用属性
  2. c语言入口及出口参数说明,麻烦帮忙指出一下这个函数的入口参数和出口参数呀!...
  3. C++ 可以把变量当成函数用~~
  4. 通过使用Byte Buddy,便捷地创建Java Agent
  5. docker环境下指定jvm参数
  6. 分布式文件系统—HDFS—常见面试题
  7. php null截断 漏洞,CVE-2015-3412,CNNVD-201507-164|PHP NULL Character 安全漏洞 - 信息安全漏洞门户 VULHUB...
  8. Java Duration类| 带示例的compareTo()方法
  9. java程序设计教程课后题,一文轻松搞定
  10. fatal error: gnu/stubs-n64_hard_2008.h: No such file or directory
  11. PPT计算机辅助教学,计算机辅助教学与多媒体课件制作
  12. HIT CS科班对计算机专业素养的理解
  13. java 某年某月的天数_Java练习 SDUT-1160_某年某月的天数
  14. ESN学习笔记——echotorch(1)介绍
  15. macOS硬盘如何格式转换?用Tuxera NTFS就够了!
  16. Linux shell实现阶乘
  17. 如何获得免费网络空间
  18. 设计灵感|极简优雅排版!干净简洁的排版设计
  19. 嵌入式软件工程师必备技能
  20. 常使用电脑的人可使用的护眼软件

热门文章

  1. const与#define的异同
  2. [转]C#中的委托和事件(续)
  3. Red Hat Enterprise Linux 5.4安装GCC
  4. 20090701随笔
  5. shell之echo and printf
  6. C# 创建网站 无法启动与停止的问题
  7. vim 高级使用技巧第二篇
  8. ngx_lua_API 指令详解(一)ngx.timer.at 指令
  9. php扩展xdebug安装
  10. 定义了浮动元素后margin-bottom失效的解决办法