孪生神经网络_孪生网络如何选择负样本? 这是个很好的问题
如何选择负样本? 这是个很讲究的问题
语义匹配最简单介绍
NLP里面如果做相似度计算,或曰语义匹配,基本上分为两类:
- 浅层匹配:基于表层词,加上些权重。又可以划归为无监督流派。
- vsm,比如tfidf,bm25之类的。
- 或者最长公共子串,编辑距离这一类的。
- 还有一些稍微高级点,加上word embedding,比如wmd。
- 深度匹配:基于深度神经网络的,一般都是孪生网络(Siamese Networks)架构。需要训练数据,那么就是有监督或者半监督。
- 早些的比如DSSM(Deep Structured Semantic Model)、SimNet这些。
- 目前主流是预训练+微调范式,见下图。
- 用BERT等这些预训练的模型打个底,然后嘛,用任务相关的语料微调训练。
- 实操时,孪生的两侧如果是共享参数的,则一般做的是对称的Q-Q匹配之类的。
- 如果是非对称的,那么一般来说,一侧训练好的架构可以拆解为线下的encoder去对待检索的文档做向量化,另一侧来对线上的query做向量化。
语义匹配孪生网络的痛点
在实践中,有什么难搞的地方呢?当时是语料啦。
俗话说的好,只要语料够,智能随便玩。(抱歉,编的不太押韵!)
在微调训练孪生网络时,最大痛点就是搜集语料,而其中痛中之痛就是搜集到特别适当的负样本(negative samples)。
正样本基本是确定的,一般都不需要找,而负样本咋弄?
- 随便找个不是正样本的,作为负样本? 好吧,确实大量的实践就是这么搞的,比如word2vec的negative sampling以及很多的noising策略。
- 和正样本最不像的作为负样本?拉倒吧,这种负样本没什么营养。
- 其实,明眼人都知道,一定要选最具有竞争力的错样本。
那么,找什么样的负样本,以及怎么找呢?
几个新思路
有个新研究,给了一点参考。
这就是陈丹琦她们新公开的 "Dense Passage Retrieval for Open-Domain Question Answering"。 今年4月份的新文章。 (https://arxiv.org/abs/2004.04906)
直接说重点,文章给出几个负样本思路:
- Random: 随机选,可想而知效果如何。
- BM25: 用BM25选很相似但不含所要答案的。
- Gold: 别的问题的答案作为当前问题的负样本。
文章实验表明,Gold最好!
而且文章还提出一个训练的trick:
要在打包batch时,包含一个正例,其他都是对应的Gold式的负样本。最佳实践是,再外加一个BM25负样本。
结果嘛,还是蛮不错的,在Natrual Question 这个检索的测试集上,用了训练集中1k个问题,就基本能达到BM25的检索效果了。
听着是不是很直观、很简单,那试试吧?
孪生神经网络_孪生网络如何选择负样本? 这是个很好的问题相关推荐
- 孪生神经网络_驾驶习惯也能识人?基于时空孪生神经网络的轨迹识别
⬆⬆⬆ 点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 前言: 给定一组单独的人员(例如行人,出租车司机)的历史轨迹以及由特定人员生成的一组新轨迹,轨迹识别问题旨在验证传入的轨迹是否是 ...
- 孪生神经网络_基于局部和全局孪生网络的鲁棒的人脸跟踪
论文名称 Siamese local and global networks for robust face tracking 引用:Qi, Yuankai, et al. "Siamese ...
- 孪生神经网络_轩辕实验室:数字孪生:基于机器学习的汽车数字孪生模型
本文来源:A. Rassolkin, T. Vaimann, A. Kallaste, and V. Kuts, "Digital twin for propulsion drive of ...
- 孪生网络图像相似度_孪生网络:使用双头神经网络进行元学习
深度神经网络有一个大问题-他们一直渴望数据. 当数据太少时(无法到达算法可以接受的数量)深度神经网络很难推广. 这种现象突出了人类和机器认知之间的差距. 人们可以通过很少的训练示例来学习复杂的模式(尽 ...
- 孪生神经网络--一个简单神奇的结构
本文转载自机器学习小知识. 01 名字的由来 Siamese和Chinese有点像.Siam是古时候泰国的称呼,中文译作暹罗.Siamese也就是"暹罗"人或"泰国&qu ...
- 单样本学习:使用孪生神经网络进行人脸识别
这篇文章简要介绍单样本学习,以孪生神经网络(Siamese neural network)进行人脸识别的例子,分享了作者从论文 FaceNet 以及 deeplearning.ai 中学到的内容. 图 ...
- 机器学习笔记 - Siamese Neural Network 孪生神经网络
一.孪生神经网络概述 孪生神经网络(SNN)是一种神经网络,其中包含相同模型的多个实例,并共享相同的体系结构和权重.当需要使用有限的数据进行学习并且我们没有完整的数据集(例如零/一枪学习任务)时,这种 ...
- 负样本的艺术,再读Facebook双塔向量召回算法
负样本的艺术,再读Facebook双塔向量召回算法 Facebook这篇Embedding召回的论文,之前已经有几篇文章涉及过了,分别是<Embeding-based Retrieval in ...
- Siamese网络(孪生神经网络)详解
SiameseFC Siamese网络(孪生神经网络) 本文参考文章: Siamese背景 Siamese网络解决的问题 要解决什么问题? 用了什么方法解决? 应用的场景: Siamese的创新 Si ...
最新文章
- react中纯函数_如何在纯React中创建电子邮件芯片
- 江苏省对口单招计算机原理,江苏省对口单招计算机原理教案.doc
- spark常用函数比较
- php对称算法_php里简单的对称加密算法
- 4个Keynote、12篇论文分享、40个Poster,CVPR 2021论文分享会全日程公布
- sql server数据库课程设计分析
- UVA 558 SPFA 判断负环
- linux命令 三大利器,awk、grep、sed是linux操作文本的三大利器,也是必须掌握的linux命令之一...
- 关于Cocos2d-x中使用完Blink动作后精灵突然消失的问题的解决
- windows应用x64和x86运行效率_现在你可以在 Windows 中运行 Linux 应用了 | Linux 中国...
- laravel nginx_在nginx上用FastCGI解析PHP
- Java中的Arrays类使用详解
- 线代 [3]|从增广矩阵漫谈矩阵转置对向量在四个向量子空间内的“飞舞”(第三篇)
- github 从0开始的基本操作到fork和pr项目
- 计算机网络链接密码,怎么连接局域网中计算机网络密码方法介绍
- 2步学会word怎么看字数(图文)
- 我所经历的汶川大地震之二
- hover鼠标的悬停效果
- CSS3干货14:自定义页面滚动条
- Android | navigation入门详解
热门文章
- 【数据分析学习】Pandas学习记录
- ModelForm views.py
- 文本框中只能输入小于等于100的正整数
- A+B for Input-Output Practice (I)
- linux内核学习笔记【一】临时内核页表 Provisional kernel Page Tables
- C++ 线程同步 (学习笔记)
- java package 目录_修改jar包package目录结构操作方法
- c语言400行小游戏,400行代码编C语言控制台界版2048游戏,编写疯子一样的C语言代码...
- syslog工具_07 Docker 可视化管理和监控工具
- 万圣节活动BANNER设计有方案了吗?拿走精品PSD分层模板!