查看: 3444|回复: 0
打印 上一主题 下一主题

[其他] Byte Cup 2018国际机器学习竞赛夺冠记

[复制链接]

5472

主题

6

听众

1万

积分

版主

Rank: 7Rank: 7Rank: 7

纳金币
76544
精华
23

活跃会员 荣誉管理 突出贡献 优秀版主 论坛元老

跳转到指定楼层
楼主
发表于 2019-2-14 09:08:41 |只看该作者 |倒序浏览
姜兴华、严雨姗 PaperWeekly

9 月份,我们两位同学一起组队,参加 Byte Cup 2018 机器学习比赛。本次比赛由中国人工智能学会和字节跳动主办,IEEE 中国代表处联合组织。比赛的任务是文章标题自动生成。最终,我们队伍获得了第一名。

比赛介绍

本次比赛的任务是给定文章文本内容,自动生成标题。本质上和文本摘要任务比较类似。本次比赛有 100 多万篇文章的训练数据。

数据介绍

详细参见:

http://biendata.com/competition/bytecup2018/data/

本次竞赛使用的训练集包括了约 130 万篇文本的信息,验证集 1000 篇文章, 测试集 800 篇文章。

数据处理

  • 文章去重,训练数据中包含一些重复数据,清洗,去重;
  • 清洗非英文文章。


评价指标

本次比赛将使用 Rouge(Recall-Oriented Understudy for Gisting Evaluation)作为模型评估度量。Rouge 是评估自动文摘以及机器翻译的常见指标。它通过将自动生成的文本与人工生成的文本(即参考文本)进行比较,根据相似度得出分值。

01.png

模型介绍

本次比赛主要尝试了 Seq2Seq的方法。参考的模型包括 Transformer 模型和 pointer-generator 模型。模型如下图:

02.png

其实就是将 pointer-generator 的 copy 机制加到 Transformer 模型上。同时,尝试了将 ner-tagger 和 pos-tagger 信息加入到模型中,如下图所示:

03.png

问题分析

最开始我们尝试了最基本的 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).



分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-4-20 17:18 , Processed in 0.577035 second(s), 36 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部