禁术级竞赛刷分技巧:找到跟测试集最接近的有标签样本


文 | 苏剑林

单位 | 追一科技

编 | 兔子酱


不管是打比赛、做实验还是搞工程,我们经常会遇到训练集与测试集分布不一致的情况。一般来说我们会从训练集中划分出来一个验证集,通过这个验证集来调整一些超参数[1],比如控制模型的训练轮数以防止过拟合。然而,如果验证集本身跟测试集差别比较大,那么验证集上很好的模型也不代表在测试集上很好,因此如何让划分出来的验证集跟测试集的分布差异更小一些,是一个值得研究的题目。

为什么分布不一致

首先,明确一下本文所考虑的场景,就是我们只有测试集数据本身、但不知道测试集标签的场景。如果是那种提交模型封闭评测的场景,我们完全看不到测试集的,那就没什么办法了。为什么会出现测试集跟训练集分布不一致的现象呢?主要有两种情况。

第一种是标签的分布不一致。如果只看输入x,分布基本上是差不多的,但是对应的y分布不一样。典型的例子就是信息抽取任务。训练集往往是通过“远程监督+人工粗标”的方式构建的,量很大,但是里边可能错漏比较多,而测试集可能是通过“人工反复精标”构建的,错漏很少。这种情况下就无法通过划分数据的方式构建一个更好的验证集了。

第二种是输入的分布不一致。说白了就是x的分布不一致,但是y的标注情况基本上是正确的。比如分类问题中,训练集的类别分布跟测试集的类别分布可能不一样;又或者在阅读理解问题中,训练集的事实类/非事实类题型比例跟测试集不一样。这种情况下我们可以适当调整采样策略,使得验证集跟测试集分布更一致些,从而验证集的结果能够更好反映测试集的结果。

判别器

为了达到我们的目的,我们让训练集的标签为0,测试集的标签为1,训练一个二分类判别器D(x):

(向右滑动查看完整公式)

其中p(x)代表了训练集的分布,q(x)则是测试集的分布。要注意的是,我们不是要将训练集和测试集直接混合起来采样训练,而是分别从训练集和测试集采样同样数量的样本来组成每一个batch,也就是说需要过采样到类别均衡。

可能有读者担心过拟合问题,即判别器彻底地将训练集和测试集分开了。事实上,在训练判别器的时候,我们应该也要像普通监督训练一样,划分个验证集出来,通过验证集决定训练的epoch数,这样就不会严重过拟合了;或者像网上有些案例一样,直接用逻辑回归做判别器,因为逻辑回归足够简单,过拟合风险也更小了。

跟GAN的判别器类似,不难推导D(x)的理论最优解是

也就是说,判别器训练完后,可以认为它就等于两个分布的相对大小。

重要性采样

优化模型也好,算指标也好,其实我们是希望在测试集上进行,也就是说,对于给定目标f(x)(比如模型的loss),我们希望算的是

但是要算目标f(x),通常要知道x的真实标签,但对于测试集来说我们不知道它的标签,所以不能直接算。不过我们知道训练集的标签,于是我们可以解决它来做重要性采样:

(向右滑动查看完整公式)

根据公式(2),我们知道,所以最终变成

(向右滑动查看完整公式)

说白了,重要性采样的思想就是从训练集里边“挑出”那些跟测试集相近的样本,赋予更高的权重

最终策略

从公式(5)我们可以得到两个策略:

第一是直接按照公式加权,也就是说,还是按随机打乱的方式划分训练集和验证集,但是给每个样本配上权重 。值得指出的是,类似的做法有些选手做比赛时已经用过了,只不过流传的权重是 D(x),当然哪个好我没法断言,只是从理论推导的角度来看应该是更加合理一些。

另一个策略就是实际地把对应的验证集采样出来。这也不难,假设训练集的所有样本为 ,我们把权重归一化。

然后按照 为分布做独立重复采样,直到采样到指定数目即可。注意需要做 有放回的独立重复采样,因此同一个样本可能被采样多次,在验证集里边也要保留多次,不能去重,去重后分布就不一致了。

文末小结

本文从训练判别器的角度来比较训练集和测试集的差异,并且结合重要性采样,我们可以得到一个跟测试集更接近的验证集,或者对训练样本进行加权,从而使得训练集的优化过程和测试集差异性更小。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

有顶会审稿人、大厂研究员、知乎大V和妹纸

等你来撩哦~

参考文献

[1]《训练集、验证集和测试集的意义》https://kexue.fm/archives/4638

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | 最新10篇《知识图谱》论文推荐(ICML, CVPR, ACL, KDD, IJCAI 2019)

本文转载自公众号:专知。【导读】知识图谱一直是研究热点,研究者近年来广泛关注知识图谱嵌入(Knowledge Graph Embedding,简称KGE)方法,在保留语义的同时,将知识图谱中的实体和关系映射到连续的…

详解RPC远程调用和消息队列MQ的区别

谈到分布式架构,就不得不谈到分布式架构的基石RPC。 什么是RPC RPC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制。 RPC服务框架有哪些 知名度较高的有Thrift&#x…

GNN学习二

基于频谱的图卷积和基于空间的图卷积 (在图上做傅里叶变换?) 图时间空间网络-交通上车流速度和红绿灯

技术动态 | eBay开源分布式知识图谱存储Beam,支持类SPARQL查询

本文转载自公众号:AI前线。作者 | Diego Ongaro,Simon Fell 译者 | 盖磊 编辑 | Natalie AI 前线导读:eBay 工程人员于 5 月 1 日在 官方技术博客 上发布了开源的分布式知识图谱存储 Beam,Beam 实现了事实数据的 RDF 存储&#xf…

2020国内互联网公司的开源项目及Github地址部分汇总

2020国内互联网公司的开源项目及Github地址部分汇总 一、Alibaba 阿里巴巴 阿里巴巴的开源项目很多,都说国内Java公司的技术架构大部分来自阿里系,而且还有很多重量级的项目,例如LVS、Tengine,或者很有实践价值的中间件&#xf…

端到端问答新突破:百度提出RocketQA,登顶MSMARCO榜首

源 | 机器之心开放域问答(Open-domain QA)一直是自然语言处理领域的重要研究课题。百度从面向端到端问答的检索模型出发,提出了RocketQA训练方法,大幅提升了对偶式检索模型的效果,为实现端到端问答迈出了重要的一步。R…

深度剖析RPC框架的核心设计

做过分布式服务端的Java工程师,随着对技术底层的认知的加深,都会或多或少的会去想: 一个RPC框架需要考虑的问题有哪些,如何来解决? 下面我们围绕RPC通信框架,从如何实现这个角度做一个剖析,以及每个环节能…

LeetCode 200. 岛屿数量(图的遍历)

文章目录1. 题目信息2. 解题2.1 DFS2.2 BFS1. 题目信息 给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你…

论文浅尝 | 引入“引用”的语言模型

笔记整理:杨帆,浙江大学硕士,研究方向知识图谱.论文链接:https://arxiv.org/pdf/1611.01628.pdf动机Referring expression(RE)在自然语言中十分常见,并且在信息交流中扮演了十分重要的角色&…

短文本语义匹配/文本相似度框架(SimilarityNet, SimNet),基于bow_pairwise模式及框架原理介绍

用PaddlePaddle实现段文本语义匹配Simnet模型 https://aistudio.baidu.com/aistudio/projectdetail/124373 Hinge loss: https://blog.csdn.net/hustqb/article/details/78347713 原文链接:https://blog.csdn.net/qq_33187136/article/details/10677043…

卖萌屋招人啦!

萌萌的小夕突然出现~这次来寻找小伙伴一起建设小屋啦!本期提供四种通道可直达卖萌屋核心腹地!小编/作者日常:发现,拍脑袋,然后写写写外部投稿的审核与编辑基本条件:对NLP、CV、IR、Rec、Ads、DM…

LeetCode 36. 有效的数独(哈希)

文章目录1. 题目信息2. 解题2.1 暴力3次遍历查找2.2 一次遍历查找1. 题目信息 判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线…

如何从0到1设计一个类Dubbo的RPC框架

之前分享了如何从0到1设计一个MQ消息队列,今天谈谈“如何从0到1设计一个Dubbo的RPC框架”,重点考验: 你对RPC框架的底层原理掌握程度。 以及考验你的整体RPC框架系统设计能力。 RPC和RPC框架 1.RPC(Remote Procedure Call&#x…

shell脚本实现命令的自动执行

背景:在我傻傻的手工执行命令整整一天手腕都有点疼之后发现shell这个大宝贝简直开心的不得了 1. 关于shell脚本的使用: 一、编写完成的shell脚本放到脚本要执行的文件的相同目录下 二、注意shell脚本的编码问题(windows和mac下编写的脚本格式…

论文征集 | 2019 Joint International Semantic Technology Conference

第九届国际语义技术联合会议将于今年十一月在美丽的杭州召开,现在征集优秀的研究论文,本届会议还专门设置了special session track,优秀论文将被推荐到SCI期刊发表,敬请赐稿!http://jist2019.openkg.cn/The Joint Inte…

阿里P8架构师谈:主流RPC框架详解,以及与SOA、SOAP、REST的区别

什么是RPC RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 简言之,RPC使得程序能够像访问本地系统资源一样,去…

LeetCode 322. 零钱兑换(DP)

文章目录1. 题目信息2. 解题2.1 回溯穷举2.2 动态规划1. 题目信息 给定不同面额的硬币 coins 和一个总金额 amount。 编写一个函数来计算可以凑成总金额所需的最少的硬币个数。 如果没有任何一种硬币组合能组成总金额,返回 -1。 示例 1: 输入: coins [1, 2, 5], …

服务器使用

杀死用户lyli的所有进程 killall -u lyli杀是PID为19347的进程 kill -s 9 19347查看CPU的使用情况 free -h 查看进程实时情况 top一般有用的就这两个,RES是实际占了多少内存,%CPU除以100%就是占了多少块CPU

可以闭眼入的O'REILLY机器学习神书出新版了!

传说中的机器学习“四大名著”中最适合入门的一本——“蜥蜴书”新版来了!这本书的英文原版是美国亚马逊AI霸榜图书,在人工智能、计算机神经网络、计算机视觉和模式识别三大榜单中,均为榜首!国内外好评率均超过90%!读者…

论文浅尝 | 基于知识库的神经网络问题生成方法

论文笔记整理:谭亦鸣,东南大学博士生,研究方向为跨语言知识图谱问答。来源:NLPCC2018链接:http://tcci.ccf.org.cn/conference/2018/papers/EV7.pdf问题背景与动机作者认为,目前的问题语料生成主要依赖于人…