从700多支队伍脱颖而出,知乎这个算法大赛冠军这样让大V「谢邀」答题
鸽了多日的知乎大 V 为何频频「谢邀」?潜水多年的小白为何突然开始积极回答?昨日,智源- 看山杯专家发现算法大赛正式落幕。机器之心带你走进冠军算法,揭秘什么样的方法能让系统准确邀请到答题者回答问题。
知乎是目前国内最大的知识问答社区。截止 2019 年 1 月,它已经成为一个拥有 2.2 亿用户的平台。每天平台上都会产生大量的新提问,但是如此海量的问题往往不会被能够回答问题的答题者主动发现。因此,有时候需要用户或平台算法主动向潜在的答题者提出邀请,让他们来回答问题。
在知乎建立的早期,邀请主要由用户向熟悉的其他答题者进行邀请。随着用户规模和问题数量的增长,人工方法不能满足实际的需求,因此知乎需要一种算法能够自动向专家邀请回答领域内的问题。
为了利用知乎积累的海量高质量文本数据和行为数据,2019 年 8 月份知乎联合智源人工智能研究院推出了专家发现算法大赛,寻找一种答题者推荐合适问题的算法。据介绍,为期四个月的比赛中,吸引了全球 11 个国家或地区 711 支队伍、1631 名选手参赛。
本次比赛共设三个级别的奖项,其中一等奖一名,二等奖两名,三等奖四名。经过几轮角逐后,昨日,智源-看山杯专家发现算法大赛举行了颁奖典礼。比赛冠军由 test 团队获得,团队成员为来自腾讯的曹雄。而亚军和季军获奖团队成员分别来自电子科技大学、广东工业大学、华南理工大学、重庆邮电大学、北京邮电大学、Keep、京东等高校和企业。
在颁奖典礼上,北京智源人工智能研究院副院长、清华大学计算机系副主任、教授唐杰称,2019 年智源人工智能研究院先后组织了 10 次竞赛,本次比赛是智源 2019 人工智能大赛的任务之一。智源研究院通过采用新的科研组织形式和人才引进培养模式,希望推动人工智能发展方向和理论、方法、工具、系统等方面的关键性突破。
知乎技术副总裁李大任表示,知乎希望能够贡献自身的数据,帮助人工智能社区发展,同时通过大赛改进知乎的内容推荐和搜索方法,推动技术进步。
随着算法等方面的进步,目前知乎平台上新提问的三天解答率为 70%,在热门关注问题上解答率则为 80% 以上。
为 183 万问题寻找答题者,这个赛题不简单
本次比赛的任务是:给定相关数据,判断被邀请的答题者是否会回答被推荐的问题,是一个推荐领域的匹配问题。
尽管看起来这是一个 matching 方面的问题,但是这一任务实际上面临很多挑战。例如它有着冷启动方面的问题----85% 的问题只有四个及以下的回答,而 66% 的用户没有回答过任何问题。
同时,任务也面临着新出现问题信息少、描述少、获取文本特征不充分的问题。此外,考虑到现实中答题者本身精力有限,而提问者对问题的需求有一定的即时性要求。如何让算法能够平衡这一矛盾也是一个值得探究的话题。
另一个较为困难的点在于,赛题涉及的数据量非常大但较为稀疏。数据集总共包含了 183 万个问题,近 200 万专家(即答题者)画像,以及 1100 多万的问题邀请记录。其中有很多问题从来没有人回答过,大量潜在的答题者都是潜水的小白,许多邀请记录是负样本。
这样一来,就要求参赛者能够从海量的稀疏数据中使用特征工程的方式,尽可能多的获取问题、用户画像和邀请记录中的各种特征,从而将数据进一步凝练。
在数据集的构建中,知乎随机选择了一个月的邀请数据进行训练,其之后一周的数据则为测试数据。其中正样本进行保留,而负样本则采样了一部分。
在比赛中,参赛队伍在获得数据后需要进行训练和测试,测评以 AUC 为指标,并按照性能进行排名。
获奖队伍使用的算法模型如下所示:
从较为靠前的排名选手使用的模型可以看出,大部分参赛者都使用了模型融合的方式进行构建。其中,使用最为广泛的是 LightGBM,一个决策树机器学习模型。此外,还可以看到和梯度提升有关的模型也受到关注,如 Catboost 和 XGBoost。最后,深度学习模型也占据着重要地位,包括 DeepFM、Wide&Deep 等。
从这里可以看出,在推荐任务上,非深度学习算法依然有着重要的地位,特别是 LightGBM、各类 Boosting 算法。它们在计算效率、特征处理等方面具有一定优势。但是深度学习强大的拟合能力,使其在包括推荐系统在内的机器学习领域都具有了一定的地位。
算法加持, 特征工程也很重要
获得一等奖的是来自腾讯的 test 团队,团队仅有成员曹雄一人。他主要的研究方向是推荐算法和系统。
这一算法使用了两种机器学习模型,并采用了 5 类数据特征,通过训练模型并融合结果,取得了 0.8969 的 AUC 性能,在 700 多支参赛队伍中排名第一。
在他的解题过程中,首先对数据进行特征工程,然后将特征输入到模型中进行训练并调参,最终评价结果。其中,特征工程无疑是解题中非常关键的步骤。
5 大类别数十种特征的使用
在数据特征上,冠军算法采用了以下 5 类特征,其中每一类都包含了很多特征:
1. 用户特征
2. 问题特征
3. 用户兴趣命中特征
4. 问题统计特征
5. 用户行为特征
看起来非常分的很清楚了,但实际上,这些特征还可以继续细分,分为类别特征、文本特征、行为特征等,有些可以直接从数据中获得,而有些则需要按照时间等方式进行统计,还有一些则需要进行编码处理(如文本等)。
举例说明,在用户特征方面,用户性别、创作数量、关注话题等属于其本身的类别特征,但同时也会有它的行为特征,如用户问题标题点击率统计等。有些用户行为就需要按照天区间进行统计,如分为 1 天、7 天、14 天、30 天。同时,还可以对用户行为相似性进行统计,如问题标题点击相似等。而问题也具有类别特征,如所属话题等,还有点击率等需要统计计算的特征。
另一方面,对问题标题、描述等文本进行特征工程也是必不可少的。例如,对于问题的标题和描述,可以使用单字的嵌入或分词后进行词嵌入的方式进行处理,像冠军算法中就采用了 64 维的词嵌入。
在经过了周密的特征工程,充分挖掘特征后,解题进入下一阶段:选择模型并训练。
LightGBM+DeepFM:优势互补的模型融合
冠军算法采用的是模型融合的方法,分别使用数据在 LightGBM 和 DeepFM 两个模型上进行训练,并以 0.7 和 0.3 的权重进行融合,取得最终的 AUC 结果。
据曹雄介绍说,LightGBM 是一种较为常用的、推荐系统领域的机器学习算法。在处理特征数量不太多的情况下性能较好。
具体而言,LightGBM 是一个梯度 boosting 的框架。使用决策树算法。和其他决策树(如 XGBoost)不同,LightGBM 的树在「生长」的过程中随树叶向下,即「Leaf-wise」。而其他树的生长,如 XGBoost,则是 Level-wise 的。
LightGBM 算法图解
随着树的子叶进行收敛使其速度更快,对于内存的占用也更少了。而且 LightGBM 支持使用 category 的特征,因此在有很多类别特征的推荐系统中使用较广。这也是为什么基本上所有参赛选手都选择它作为模型一部分的原因。
在冠军算法中,LightGBM 模型中使用的超参数如下:
num_leaves=800learning_rate=0.035min_data_in_leaf=100max_bin=2047
当然,和科研有所区别,竞赛中一般会选择采用多个模型融合的方式,使整体效果得到提升,因此冠军算法还选择了 DeepFM。
DeepFM 是一个深度学习模型。首先,对于不同的特征,它采用「分而治之」的方法,让不同的特征都对应不同神经网络层,将这些特征的独热编码映射为密集向量。然后,将神经网络和因子分解机(Factorization Machines, FM)结合起来,采用并行或串行的方式,让 FM 和全连接层分别映射低阶和高阶的特征,最终实现预测。
DeepFM 的优势在于其强大的学习能力,和相比 DNN 更小的计算量。据曹雄介绍,当特征量非常巨大的时候,神经网络相比 LightGBM 等算法实际上具有更好的性能优势。
在实际过程中,test 团队对于 DeepFM 进行了一定改进,具体架构图如下:
从架构上可以看到,这里的 DeepFM 模型采用的是并行的方法:一方面使用 FM 建模特征,但同时使用 Pooling 方法单独建模用户相关的特征。同时还使用了点积计算,将问题和用户特征共同映射。最终,和 DeepFM 一样,将 FM 学习到的特征和神经网络学习到的特征一同映射到一个全连接层,并最终预测结果。
从最终的结果来看,LightGBM 取得 AUC 为 0.895,DeepFM 取得的 AUC 为 0.88。通过模型融合的方式,最终的 AUC 为 0.8969。
在专家点评环节,知乎算法团队负责人孙付伟评价说,这一工作采用了和知乎团队相似的特征工程工作,但是仅使用单模型就取得了很高的性能,是非常令人惊讶的。
作为一家知识内容平台,知乎一直重视技术创新价值的挖掘。自 2016 年引入机器学习技术以来,知乎已经将人工智能、算法技术应用到社区内容和产品体验的各个环节中。通过比赛征集算法思路,知乎可以进一步生产大量优质内容,每天为 10w+的问题找到合适的答题者。
作者暂无likerid, 赞赏暂由本网站代持,当作者有likerid后会全部转账给作者(我们会尽力而为)。Tips: Until now, everytime you want to store your article, we will help you store it in Filecoin network. In the future, you can store it in Filecoin network using your own filecoin.
Support author:
Author's Filecoin address:
Or you can use Likecoin to support author: