Byte Cup 2018国际机器学习竞赛夺冠记
9 月份,我们两位同学一起组队,参加 Byte Cup 2018 机器学习比赛。本次比赛由中国人工智能学会和字节跳动主办,IEEE 中国代表处联合组织。比赛的任务是文章标题自动生成。最终,我们队伍获得了第一名。
比赛介绍
本次比赛的任务是给定文章文本内容,自动生成标题。本质上和文本摘要任务比较类似。本次比赛有 100 多万篇文章的训练数据。
数据介绍
详细参见:
http://biendata.com/competition/bytecup2018/data/
本次竞赛使用的训练集包括了约 130 万篇文本的信息,验证集 1000 篇文章, 测试集 800 篇文章。
数据处理
文章去重,训练数据中包含一些重复数据,清洗,去重;
清洗非英文文章。
评价指标
本次比赛将使用 Rouge(Recall-Oriented Understudy for Gisting Evaluation)作为模型评估度量。Rouge 是评估自动文摘以及机器翻译的常见指标。它通过将自动生成的文本与人工生成的文本(即参考文本)进行比较,根据相似度得出分值。
模型介绍
本次比赛主要尝试了 Seq2Seq的方法。参考的模型包括 Transformer 模型和 pointer-generator 模型。模型如下图:
其实就是将 pointer-generator 的 copy 机制加到 Transformer 模型上。同时,尝试了将 ner-tagger 和 pos-tagger 信息加入到模型中,如下图所示:
问题分析
最开始我们尝试了最基本的 Transformer 模型,通过查看数据,遇到以下几类明显错误:
OOV (out of vocabulary);
数字,人名,地名预测错误;
词形预测错误。
OOV 问题的主要原因是数据集词表太大,模型能够实际使用的词表较小;数字,人名,地名预测错误,主要原因是低频词 embedding 学习不充分;词形预测错误,主要原因是模型中没有考虑词的形态问题(当然,如果训练数据足够大,是能避免这个问题的)。
为了解决这些问题,我们尝试了以下方法。
重要组件
Copy机制
对于很多低频词,通过生成式方法生成,其实是很不靠谱的。为此,我们借鉴 Pointer-generator 的方法,在生成标题的单词的时候,通过 Attention 的概率分布,从原文中拷贝词。
Subword
为了避免 OOV 问题,我们采用 subword 的方法处理文本。这样可以将词表大小减小到 20k,同时 subword 会包含一些单词词形结构的信息。
NER-Tagger和POS-Tagger信息
因为 baseline 在数字,人名,地名,词形上预测错误率较高,所以我们考虑能不能将 NER-Tagger 和 POS-Tagger 信息加入到模型中。如上图所示。实验证明通过加入这两个序列信息能够大大加快模型的收敛速度(训练收敛后,指标上基本没差异)。
Gradient Accumulation
在实验过程中,我们发现 Transformer 模型对 batch_size 非常敏感。之前,有研究者在机器翻译任务中,通过实验也证明了这一观点。然而,对于文章标题生成任务,因为每个 sample 的文章长度较长,所以,并不能使用超大 batch_size 来训练模型,所以,我们用 Gradient Accumulation 的方法模拟超大 batch_size。
Ensemble
采用了两层融合。第一层,对于每一个模型,将训练最后保存的 N 个模型参数求平均值(在 valid 集上选择最好的 N)。第二层,通过不同随机种子得到的两个模型,一个作为生成候选标题模型(选择不同的 beam_width, length_penalty), 一个作为打分模型,将候选标题送到模型打分,选择分数最高的标题。
失败的方法
将 copy 机制加入到 Transformer 遇到一些问题,我们直接在 decoder 倒数第二层加了一层 Attention 层作为 copy 机制需要的概率分布,训练模型非常不稳定,并且结果比 baseline 还要差很多;
我们尝试了 BERT,我们将 bert-encoder 抽出的 feature 拼接到我们模型的encoder的最后一层,结果并没有得到提升;
word-embedding 的选择,我们使用 GloVe 和 fastText 等预训练的词向量,模型收敛速度加快,但是,结果并没有 random 的方法好。
结束语
非常感谢主办方举办本次比赛,通过本次比赛,我们探索学习到了很多算法方法和调参技巧。
参考文献
[1] Sennrich, Rico, Barry Haddow, and Alexandra Birch. "Neural machine translation of rare words with subword units." arXiv preprint arXiv:1508.07909 (2015).
[2] Vaswani, Ashish, et al. "Attention is all you need." Advances in Neural Information Processing Systems. 2017.
[3] See, Abigail, Peter J. Liu, and Christopher D. Manning. "Get to the point: Summarization with pointer-generator networks." arXiv preprint arXiv:1704.04368 (2017).
附冠军采访
Q:能否分别介绍一下所有队员的情况?
A:我们队伍包括两位同学,队长姜兴华和队员严雨姗。
队长姜兴华,浙江大学计算机学院计算机专业的研三学生,主要方向为自然语言处理,机器学习等。
队员严雨姗,浙江大学管理学院创业管理专业博一学生,主要研究方向为创业与大数据相关课题。
Q:能否介绍一下学术背景?
A:队长从本科大三开始接触机器学习,从事过计算机视觉和自然语言处理相关研究工作。研究生导师是蔡登/何晓飞教授。目前研究方向为自然语言处理-文本生成相关。
Q:能否介绍一下参加比赛的经历?
A:这次比赛是我们第一次参加数据竞赛。之前也没什么比赛经验。参加 Byte Cup 2018,主要是觉得该比赛解决的问题非常有趣并且在学术界和工业界都是非常有意义的。
Q:在比赛中做了哪些尝试?遇到了哪些困难?
A:比赛初期我们调研了很多文本生成,机器翻译等相关方向的论文和开源代码,做出了很多尝试。比赛过程中,也遇到了很多问题,包括计算资源不足和代码实现错误等问题。我们的模型是基于 Transformer 模型的改进。比赛中经常遇到的问题就是,Baseline+A,Baseline+B 会有很好的效果,但是 Baseline+A+B 就不能达到同等量级的提升。
同时,调参也遇到了很多的问题,比如:对于不同的模型结构需要使用不同的学习率策略才能达到很好的效果。改进模型是一个不断迭代的过程,新模型,看数据(找到数据明显错误),分析问题,改进模型。
再比如,我们实验过程中,会遇到 OOV (out-of-vocabulary) 问题,数字预测错误,单词词形预测错误,生成语句重复,生成语句长度太短等若干问题,每次迭代,都会在对应问题上得到提升。
Q:以后想在什么具体的领域发展或想解决什么问题?希望做科研还是找工作?如果未来会参加比赛,希望参加什么样的比赛(对参加比赛的标准是什么)?
A:之后,我们主要做自然语言处理相关工作,主要会关注内容生成/创作等方向。预计之后会去工业界从事相关工作,因为工业界有更多的实际场景和数据,相对来说,会比较有成就感一些。
点击以下标题查看更多往期内容:
Airbnb实时搜索排序中的Embedding技巧
图神经网络综述:模型与应用
近期值得读的10篇GAN进展论文
F-Principle:初探理解深度学习不能做什么
自然语言处理中的语言模型预训练方法
两行代码玩转Google BERT句向量词向量
AI Challenger 2018 机器翻译参赛总结
Google BERT应用之红楼梦对话人物提取
深度长文:NLP的巨人肩膀(上)
NLP的巨人肩膀(下):从CoVe到BERT
#投 稿 通 道#
让你的论文被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢? 答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得或技术干货。我们的目的只有一个,让知识真正流动起来。
? 来稿标准:
• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)
• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接
• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志
? 投稿邮箱:
• 投稿邮箱:hr@paperweekly.site
• 所有文章配图,请单独在附件中发送
• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通
?
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
关于PaperWeekly
PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。
▽ 点击 |阅读原文 | 获取最新论文推荐
Byte Cup 2018国际机器学习竞赛夺冠记相关推荐
- Byte Cup 2018机器学习大赛进入冲刺阶段,最全资料帮你快速上手!
2018 Byte Cup 国际机器学习竞赛(以下简称 Byte Cup)是一项面向全球的机器学习竞赛,旨在促进机器学习的学术研究和具体应用. Byte Cup 2018 的主题是自动生成文本标题.自 ...
- CF#504,#505(based on VK Cup 2018 Final)上红记
去年的我这时还是蓝名小哥,然后勉强上了紫. 当时写过一篇上紫记. 我 打cf频率在friends里还是偏高的,大概就是经常打出饱和状态. 1900- 徘徊过几场,2100±徘徊了好几个月,从noip2 ...
- Mail.Ru Cup 2018 Round 1 virtual participate记
因为睡过了只好vp. A:阅读理解. #include<iostream> #include<cstdio> #include<cmath> #include< ...
- 第二届Byte Cup来袭,赢得2万美元奖金,登上字节跳动面试直通车
2018 Byte Cup 国际机器学习竞赛(以下简称 ByteCup)是一项面向全球的机器学习竞赛,由中国人工智能学会和字节跳动联合主办,数据竞赛平台 biendata.com 承办,旨在促进机器学 ...
- 机器学习 - 竞赛网站,算法刷题网站
数据竞赛类网站 Kaggle 阿里巴巴天池大数据比赛 DataCastle CCF大数据与计算智能大赛 Di-Tech算法大赛 KDD-Cup KDnuggets Competition 全国高校云计 ...
- 2019KDD CUP | 2019国际知识发现和数据挖掘竞赛
国际知识发现和数据挖掘竞赛 [1] (KDD-CUP)竞赛是由ACM 的数据挖掘及知识发现专委会(SIGKDD)主办的数据挖掘研究领域的国际顶级赛事.其中KDD的英文全称是Knowledge Dis ...
- 用户查询意图检测(CIKM Competition数据挖掘竞赛夺冠算法陈运文)
原文出处 背景\color{blue}{背景} CIKM Cup(或者称为CIKM Competition)是ACM CIKM举办的国际数据挖掘竞赛的名称.CIKM全称是International C ...
- 2018年机器学习深度学习资料 全新汇总(不断更新),希望看到文章的朋友能够学到更多
向AI转型的程序员都关注了这个号??? 大数据挖掘DT数据分析 公众号: datadw 注:机器学习资料篇目一共500条,篇目二开始更新 本文提到链接 请查看原文 https://github.c ...
- CIKM Competition数据挖掘竞赛夺冠算法陈运文
CIKM Competition数据挖掘竞赛夺冠算法陈运文 背景 CIKM Cup(或者称为CIKM Competition)是ACM CIKM举办的国际数据挖掘竞赛的名称.CIKM全称是Intern ...
最新文章
- 《OpenCV3编程入门》学习笔记5 Core组件进阶(四)图像对比度、亮度值调整
- python深浅拷贝 面试_python基础-深浅拷贝
- C++ 二维数组和指针数组
- linux系统sql语句报错_在linux下写的mysql无法插入,sql语句在复制中变'脏'了.
- C#中形态各异的class
- python学习第三十二节(进程间通信、进程池、协程)
- 分布式锁防止订单重复提交_防止表单重复提交看这里!!!
- 用js如何获取file是否存在
- 怎么删除w7桌面计算机图标,w7桌面图标箭头怎么去掉?w7桌面图标箭头去掉方法...
- 苹果商城怎么调成中文_英雄联盟手游教程及问题反馈以及内部功能详解(苹果安卓都可以了)...
- QPCore Service与NetAssist冲突解决
- 如何激活Windows Server 2008 R2
- DRF Serializer序列化器使用
- Java多重选择switch
- Pycharm快速入门(6) — 版本控制
- Xcode8 解决注释以及VVDocumenter无法使用问题
- 数据结构:元祖、列表、字典、集合概念及区别
- PDF格式分析(二十三)Action动作
- 关于 U盘无法访问 文件或目录损坏且无法读取 的问题
- 创宇区块链|Rari Capital 遭受重入攻击,损失超 8000 万美元
热门文章
- vscode怎么写qt项目_使用VSCode 编译调试QT程序
- python restful服务部署_用python为mysql实现restful接口
- R语言实战-统计分析基础-描述性统计4-psych-describe
- Redis学习笔记五:独立功能之事务
- My way on Linux - 知识梳理计划
- 关于KVM的几篇细节文档
- 引:善用backtrace解决大问题
- C# 函数重载 示例 求圆的面积
- 最后一天,最后一刻。。。。。。情理之中,意料之外。。。。。。
- oracle数据库应用与开发习题,《Oracle数据库应用》练习题及答案.docx