2017 知乎看山杯从入门到第二

利用一个暑假的时间,做了研究生生涯中的第一个正式比赛,最终排名第二,有些小遗憾,但收获更多的是成长和经验。我们之前没有参加过机器学习和文本相关的比赛,只是学过一些理论基础知识,没有付诸过实践,看过的几篇论文也多亏前辈的分享(一个是用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践,另一个是 brightmart 的 text_classification,里面用 Keras 实现了很多文本分类的模型)。这些为我们的入门打下了良好的基础,在比赛过程中也是反复研读和实践,在此感谢两位前辈的无私分享。

先放一波链接:

  • 比赛网址:https://biendata.com/competition/zhihu/
  • 比赛源码:https://github.com/Magic-Bubble/Zhihu
  • 比赛结果:https://zhuanlan.zhihu.com/p/28912353

下面对在这次比赛中用到的方法和收获的经验,做一个简单的总结和分享。

用单模型探索数据的极限

1. 任务

  • 典型的文本多标签分类问题,根据用户在知乎上发布的问题标题及描述,判断它属于哪几个话题
  • 训练数据给出了 300 万问题及其话题的绑定关系,话题标签共有 1999 个,有父子关系,构成有向无环图
  • 要求对未标注的数据预测其最有可能绑定的 Top5 话题标签
  • 评测采用准确率与召回率的调和平均,准确率的计算按照位置加权,越靠前的分数越高(具体见评测方案)

2. 数据

比赛提供的数据是 300 万问题和话题的标题(下称 title)及描述(下称 desc),分别有对应的字序列(下称 char)和词序列(下称 word),全部是以 id 的形式给出。这意味着我们是看不到原始文本的,所以对于 badcase 的分析也很困难,但好在其数据量够大(2 亿多词,4 亿多字),还是可以用深度学习来做。知乎官方也提供了训练好的 embedding(维度 256),字级别和词级别的都有,但是是分开训练,不属于同一个语义向量空间。

坊间常说:数据和特征决定了机器学习的上限,而模型和算法知识逼近这个上限而已。对于深度学习,因为不存在特征工程,所以数据处理就至关重要了。而良好且合理的数据处理离不开系统详细的数据分析,要知道数据是什么样,数据怎么分布,才能更好地选择模型和训练方式。

2.1 数据分析

这里主要是对问题的 title 和 desc 做长度分析,更为详细的分析见数据分析

首先是问题 title 的字词长度分布:

其次是问题 desc 的字词长度分布:

2.2 预处理

  • 随机 shuffle 后以 9:1 的比例划分线下验证集和训练集,防止数据周期的影响
  • 对于 embedding 矩阵中未出现的词,添加,并用 - 0.25~0.25 初始化,千万不能扔掉,这样会破坏前后的语义关系
  • 对于 title 和 desc,分别根据其平均长度 * 2,做截断和补齐至长度一致,便于 batch 输入网络训练

3. 模型

参照 brightmart 的 github 开源,我们尝试了前 5 种模型,分别是 FastText、TextCNN、TextRNN、RCNN、HAN

其中,HAN 的原始论文中用的是词和句子两层 Attention,而数据中是看不出句子的,所以这个方法我只用了一层 word,效果不好。而 RCNN 因为同时用到了 RNN 和 CNN 的思想,所以整个网络的训练时间很长,且其效果与单独的 RNN 和 CNN 差不多,因此后期没有使用此模型。最终用到的模型有:

  • FastText:通过 Average 抽象出概括性语义信息
  • TextCNN:仿照 n-gram 捕捉局部语义信息
  • TextRNN:提取序列语义信息

3.1 单模型 Score

因为没有花很多时间在单模型调参训练上,所以最终单 Model 的分数普遍偏低,约比别的队伍低 0.5~1 个百分点。

3.2 核心思路

这是我们这次参赛的一大亮点和创新点,就是成功地在深度学习上应用了一种类似于 AdaBoost 的做法,通过训练多层来不断修复前面层的偏差。我们在分析数据的时候发现,一个模型的输出是具有类别倾向性的,所以在某些类别上可能全对,而在某些类别上可能全错,所以我们针对这种偏差做了一些改进,通过人为地定义偏差的计算方式,指导下一层模型更多关注那些错的多的类,从而达到整体效果的提升。

通过用这种方法,单模型 Score 有了质的飞跃,平均提升都在 1.5 个百分点(FastText 因模型过于简单,提升空间有限),而 10 层的 RNN 则更是在用全部训练集 finetune 之后,分数直接从 0.413 飙升到 0.42978,可谓真是用单模型探索数据的极限了。

这种方法的优势在于,一般只要不断加深训练层数,效果就会提升,但缺点却在于它抹平了模型的差异性,对于模型融合效果不友好。

3.3 模型融合

模型融合依靠差异性,而我们模型的差异性在前面已经近乎被抹平,所以又另寻他路,用了另外两个方法:

  • 改变输入,从 word 改成 char,虽然 char 的单模型效果不好,但总体融合却能提升很多
  • 人为定义不同的偏差计算方式

最终模型主要是 5 个 10 层模型的概率加权融合,分数在 0.43506。

4. 结束语

这次比赛收获很大,总结起来就是:

  • 数据预处理很重要
  • 模型不一定是最主要的,要多尝试其他方法,更不能无脑训模型,尤其是对于深度学习这种 “黑盒子”
  • 比赛心态要放平,要抱着学习的心态

最后,还是要感谢知乎等组织举办的这次比赛,也感谢北邮模式识别实验室的大力支持!

本文作者:AI研习社

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-11-10 13:34:44

2017 知乎看山杯从入门到第二的相关文章

知乎 “看山杯” 夺冠记

知乎看山杯夺冠记 比赛源码(PyTorch 实现)github 地址 https://github.com/chenyuntc/PyTorchText 比赛官网: https://biendata.com/competition/zhihu/ 比赛结果官方通告: https://zhuanlan.zhihu.com/p/28912353 七月,酷暑难耐,认识的几位同学参加知乎看山杯,均取得不错的排名.当时天池 AI 医疗大赛初赛结束,官方正在为复赛进行平台调试,复赛时间一拖再拖.看着几位同学在比

新手必看:无线路由器设置入门教程

一.无线路由器基本 使用方法拿到手的无线路由器,连接好电源,无线路由器一般背面有5个网线插孔,其中一个颜色会与另外四个不同.如图498)this.w idth=498;' onmousewheel = 'javascript:return big(this)' alt="新手必看:无线路由器设置入门教程" width="474" height="205" src="http://images.51cto.com/files/upload

C#新手,具体先看什么最容易入门啊?

问题描述 C#新手,具体先看什么最容易入门啊? 解决方案 解决方案二:英语基础好,看C#入门经典.英语基础不好,先看国人著作的入门书,或你有足够的意志力可以抵抗那让你茫然的C#入门经典(我指的是代码部分)--解决方案三:Wrox出的红皮书系列也就是楼上说的C#入门经典这本书上很多例子照着例子多敲几遍比较容易理解解决方案四:我已经学了四天了,有老师带,应该怎么学?解决方案五:我觉得写个程序,用到东西不会查书和上网搜索来得有效吧?解决方案六:帮你顶解决方案七:还是多上机练习.Wrox出的红皮书系列确

雪花啤酒未过保质期现"霉花"引看欧洲杯球迷呕吐

市民展示有悬浮物的问题啤酒. 市民展示有悬浮物的问题啤酒. 这瓶雪花长霉 青岛啤酒公司向消费者表示歉意,并表示会立即对此事展开调查,将在最近两天给消费者一个答复. 雪花啤酒公司工作人员在向负责人请示过后表示,既然事情发生,该咋办就咋办. 6月12日,自贡市民李先生喝啤酒时,突然发现酒杯中出现了一片黏糊糊的漂浮物,随后李先生和经销商与啤酒生产商雪花公司进行了交涉.然而过了一天,雪花公司没有给出任何答复. 吃惊:雪花出现了"霉花" 6月12日中午12点10分,李先生和几名好友在自贡市汇东区

看欧洲杯精彩赛事 用Windows 7录播留住经典

欧洲杯火热开幕,众多足球粉丝怎么能错过如此精彩的比赛,但是很悲剧的是,欧洲杯都是晚上凌晨直播,由于很多人第二天要上班, 所以不能欣赏到精彩的球赛了,于是有人会想,能不能有一个方法既可以让我看足球,又不会耽误我们正常的工作和学习呢?答案当然是 "有",答案就在Win7里.原来Win7自带的Windows Media Center中心有一个叫电视录制功能,他可以很好的解决这个问题,可以将Win7 接入家里的电视机上,你就可以将直播的欧洲杯录制到你的Win7当中,你甚至可以提前制定录制计划,

看欧洲杯精彩赛事用Win7录播留住经典

欧洲杯火热开幕,众多足球粉丝怎么能错过如此精彩的比赛,但是很悲剧的是,欧洲杯都是晚上凌晨直播,由于很多人第二天要上班,所以不能欣赏到精彩的球赛了,于是有人会想,能不能有一个方法既可以让我看足球,又不会耽误我们正常的工作和学习呢?答案当然是"有",答案就在Win7里.原来Win7自带的Windows Media Center中心有一个叫电视录制功能,他可以很好的解决这个问题,可以将Win7接入家里的电视机上,你就可以将直播的欧洲杯录制到你的Win7当中,你甚至可以提前制定录制计划,或者采

2345看图王新手入门操作指南

2345看图王是http://www.aliyun.com/zixun/aggregation/19060.html">2345推出的一款速度最快并且格式兼容最多的高清看图软件,支持常用的jpg.bmp.gif.tiff.png等多达67种格式图片的查看. 2345看图王的功能介绍如下: 1.快速 2345看图王使用了全球最快的强劲图像引擎,即使在低配置电脑上,也能闪电般打开十几兆的大图片: 2345看图王配合同为2345旗下产品的"好压"相结合使用,不需要等待漫长的解

2345看图王新手入门操作指导

打开图片 利用2345看图王打开图片主要有三种方式: 1. 安装2345看图王软件后,在图库查看时双击图片直接打开; 2. 在图库查看图片时,右击利用下列选项中[打开方式],选择看图王浏览图片; 3. 先启动2345看图王,利用[打开文件]的方式打开,支持快捷键Ctrl+O;也可以通过2345看图王中的[菜单--文件--打开图片]的操作方式打开图片. 你还可以通过[菜单-工具-设为默认看图工具]将看图王设为您电脑的默认看图器,这样以后您就可以直接双击想要查看的图片,看图王就会做为默认的图片查看器

2017年,看SD-WAN如何弄潮

我们现在提到云计算,都知道它改变了一切,云计算改变了我们的工作.生活的方方面面,技术的不断发展在于它的创新,软件定义广域网(SD-WAN)能够帮助提供云计算优势的技术创新.市场调查公司Gartner在去年发布的调查报告中写道,2016年只有1%的企业部署了SD-WAN,但预计到2019年底,部署SD-WAN的企业将会增长到30%. SD-WAN定义 从引导广域网优化的技术派生为对私有WAN连接的理解,然后对私有WAN加以优化并重复流量模式,SD-WAN能够动态选择更具成本效益的公共互联网连接和私