ICLR'21 | 一个二值化词向量模型,是怎么跟果蝇搭上关系的?

文|苏剑林(追一科技) 

编 | 小轶

可能有些读者最近会留意到ICLR 2021的论文Can a Fruit Fly Learn Word Embeddings?,文中写到它是基于仿生思想(仿果蝇的嗅觉回路)做出来的一个二值化词向量模型。其实论文的算法部分并不算难读,可能整篇论文读下来大家的最主要疑惑就是“这东西跟果蝇有什么关系?”、“作者真是从果蝇里边受到启发的?”等等。本文就让我们来追寻一下该算法的来龙去脉,试图回答一下这个词向量模型是怎么跟果蝇搭上关系的。

▲果蝇(图片来自Google搜索)

论文题目
Can a Fruit Fly Learn Word Embeddings?

论文链接:
https://arxiv.org/pdf/2101.06887.pdf

Arxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词 【0224】 下载论文PDF~

BioWord

原论文并没有给该词向量模型起个名字,为了称呼上的方便,这里笔者就自作主张将其称为“BioWord”了。总的来说,论文内容大体上有三部分:

  1. 给每个n-gram构建了一个词袋表示向量;

  2. 对这些n-gram向量执行BioHash算法,得到所谓的(二值化的)静态/动态词向量;

  3. “拼命”讲了一个故事。

其中BioHash我们稍后再介绍,总之就是一个现成的向量二值化算法。从这三点可以看出,其实整个词向量模型本身跟仿生、果蝇并没有明显的关联,就算有关系,也应该是里边的BioHash算法的关系,但这篇论文又不是提出BioHash算法的,因此说过多仿生方面的东西,就显得有点牵强了。下面再来详细解释一下这几点。

首先,给每个n-gram构建一个词袋表示向量,这个做法很朴素,结果是一个维的二值向量(即0/1向量),其中是词表大小。如下图所示,前维表示上下文部分,1表示上下文出现了这个词;后维就是一个one hot向量,表示中心词。然后,作者对BioHash算法做了一点调整(但没有说清楚为什么这样修改,笔者也看不出如何理解这个修改),BioHash之后,每个n-gram的向量就映射为了一个维的0/1向量,其中每个向量有(固定数目的)个1。

▲给每个n-gram构建词袋表示

最后,为什么我说作者"拼命"讲了一个故事呢?第一,前面说了,说过多仿生方面的东西显得牵强;第二,作者将BioWord跟Word2Vec、Glove等词向量模型比较,效果基本上都不如它们的;第三,至于作为一种词向量二值化算法,BioWord的效果跟已有的RandExp、LSH等相比也没有什么优势。如果只是这样那还好,但是让人觉得更尴尬的是,作者还强行跟BERT对比来突出自己的"优势"。

作者先是引入了静态/动态词向量的说法,如果词袋向量中前维全是0,那么映射后的维向量就是该词的静态词向量,如果词袋向量中前维是依赖上下文,那么就称映射后的维向量是该词的(类似BERT那样的)动态词向量。但这概念实在是难登大雅之堂,照这样说,哪怕是Word2Vec,求个上下文的平均词向量拼接到中心词向量上,也是一个动态词向量了,但这样无非就是个谈资而已,实验结果也没显示出有什么优势。还有,作为一个词向量模型,作者还跟BERT比训练成本以突出自己的优势,着实是让人尴尬了一把,由此也可见作者为了讲这个故事的"煞费苦心"了。

BioHash

BioHash出自论文Bio-Inspired Hashing for Unsupervised Similarity Search[1],它是一种将向量二值化的方法,跟传统的的LSH不一样的是,它依赖于样本,是为特定数据集"量身定制"的,因此通常能得到效果更好、更稀疏的二值向量。

给定向量集,BioHash算法大致如下:

  1. 用K-Means将聚为类,得到个向量中心;

  2. 每个映射为一个维0/1向量,其中与距离最近的个类对应的位置为1,其余为0。

之所以说"大致",是因为算法细节上有一些出入。首先,聚类过程中用的距离不是欧式距离,而是归一化内积,即,这个做法我们之前在探究Capsule的时候也用过,读者可以参考《再来一顿贺岁宴:从K-Means到Capsule》[2];然后,求解聚类中心的时候,用的是SGD而不是常规的EM算法,这一点其实笔者不大理解,虽说SGD可以小批量进行,对内存更友好,但理论上EM算法也可以按批执行,不至于爆内存;最后,笔者完全不理解的一点是,在聚类过程中作者用的距离是归一化内积,但在决定每个样本的归属的时候,又以不归一化的内积为距离,实在是莫名其妙。

当然,抛开BioHash的细节不说,BioHash的效果还是很赞的,所以有适当的场景的话,BioHash还是值得借鉴使用的。细心的读者可能会发现,BioWord和BioHash有几位作者是相同的,事实上它们都产自同一个实验室,由此也不难理解BioWord希望传承BioHash的初衷,只不过将BioHash用于词向量构建中,笔者认为无论从动机上还是论文所报告的效果上,都难以称得上漂亮。

FlyHash

说了那么久,我们还没有说到标题的问题:BioWord到底跟果蝇有什么联系?或者说BioHash的哪个地方体现了跟果蝇的相似性? 追踪BioHash的参考文献可以发现,BioHash事实上是对一个名为FlyHash的算法的改进,因此要溯源的话,还得找FlyHash。

顾名思义,FlyHash主要是受到果蝇的嗅觉回路启发而构思出来的一种新的向量二值化方法,它相比常规的LSH更高效。对于不了解LSH的读者来说,我们后面再补充介绍一下,这里先直接介绍FlyHash。其实FlyHash跟LSH都是"随机投影 + 二值化"的思路,只不过果蝇启发了一个新的优化方向:高维 + 低激活

具体来说,设原始数据,FlyHash选择了一个随机二值矩阵(选好后就固定了),其中一般有(高维),经过投影后是一个维向量,然后对它进行一个WTA(Winner Take All,赢者通吃)操作来实现"低激活"——"将最大的个元素置1,其余置0",这样就得到了一个有个1、个0的二值向量了,就将它作为的Hash向量。

由于激活值只有有限的个,因此就算升维了,存储和检索成本都不会加大,反而效果有所提升,这就是果蝇带来的"高维 + 低激活"思路的好处。FlyHash首先发表在Science的论文《A neural algorithm for a fundamental computing problem》[3],关于"高维 + 低激活"的果蝇嗅觉回路可以仔细参考这篇论文,后来论文Improving Similarity Search with High-dimensional Locality-sensitive Hashing[4]又进一步完善了理论部分,这两篇论文也是一脉相承的。

所以,现在我们可以回答"怎么跟果蝇搭上关系"了,其实就是在二值化过程中包含了"高维 + 低激活"思想的算法,我们都可以说"Inspired by Fly",由于FlyHash是随机投影来得到最终结果的,所以它必须升到足够多维才能保证效果,而BioHash针对具体数据集进行训练,因此它往往不需要FlyHash那么多维,而且效果还更好,但BioHash也有明显的"赢者通吃"的思想,所以也称"Inspired by Fly"。而BioWord使用了BioHash,因此也自称"Inspired by Fly"了。

LSH

最后,我们简单介绍一下LSH(Locality Sensitive Hashing),供不了解的读者参考。完整的LSH讲起来又可以长篇大论了,这里主要提一下跟FlyHash比较密切的部分。

简单来说,LSH就是一个将向量二值化的算法,并且二值化之后的向量能近似保持度量不变。常见的一种方案是通过随机投影来(近似)保持cos值的不变性,从之前的文章《n维空间下两个随机向量的夹角分布》[5] 和《从几何视角来理解模型参数的初始化策略》[6],我们可以知道,高维空间中任意两个高斯随机向量几乎都是正交的,那么从中采样个随机数来组成一个矩阵,它"几乎"是一个正交矩阵(任意两个行/列向量近似正交,但每个向量的模长不接近1)。这样一来,两个原始向量一乘后,就变成了两个维向量,并且夹角近似不变:

这样一来,如果检索度量是cos值,那么我们可以用投影后的代替原始向量来做近似检索。更进一步,我们还可以用如下的二值近似:

其中是符号函数,将大于0的改为1,小于等于0的改为-1,这样就将原始向量映射为一个二值向量了。这里的目标维度一般不会比大,并且由于投影的随机性,我们大约可以认为结果之中1和-1都是各一半,这就跟FlyHash的"高维 + 低激活"有明显区别了,因为不管你将1还是将-1视为激活值,数目都差不多,称不上"低激活"。

上面的介绍虽然只是一个启发性的引导,但事实上背后是有严格的概率理论支撑的(在《Performer:用随机投影将Attention的复杂度线性化》[7]也做过相关的理论分析),因此LSH是一套严谨的可量化的算法,并不是纯粹拍脑袋的近似。对向量二值化之后,我们就可以将它视为一个词袋模型(哪怕原来的是连续型向量),进而可以对它建立索引来加速检索,比如倒排索引,这就是向量二值化的意义了,像Fiass等向量检索库,都包含了LSH算法。

文章小结

本文对一个二值化词向量模型进行了溯源,探究了它究竟是如何联系上果蝇的,从中我们还可以了解到BioHash、FlyHash、LSH等向量二值化方法的思路和关联。本文也是第一次尝试倒叙式写作,希望读者喜欢~

后台回复关键词【入群

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

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

 

[1] https://arxiv.org/abs/2001.04907

[2] https://kexue.fm/archives5112

[3] https://science.sciencemag.org/
content/358/6364/793

[4] https://arxiv.org/abs/1812.01844

[5] https://kexue.fm/archives7076

[6] https://kexue.fm/archives7180

[7] https://kexue.fm/archives7921

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

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

相关文章

如何解决NLP分类任务的11个关键问题:类别不平衡低耗时计算小样本鲁棒性测试检验长文本分类 JayLou娄杰

原文链接:https://zhuanlan.zhihu.com/p/183852900 欢迎关注《高能AI》公众号~声明:文中观点谨代表笔者个人立场,盲目搬运有风险~在2020这个时间节点,对于NLP分类任务,我们的关注重点早已不再是…

LeetCode 908. 最小差值 I

1. 题目 给定一个整数数组 A&#xff0c;对于每个整数 A[i]&#xff0c;我们可以选择任意 x 满足 -K < x < K&#xff0c;并将 x 加到 A[i] 中。 在此过程之后&#xff0c;我们得到一些数组 B。 返回 B 的最大值和 B 的最小值之间可能存在的最小差值。 示例 1&#x…

论文浅尝 - AAAI2020 | 基于知识图谱进行对话目标规划的开放域对话生成技术

论文笔记整理&#xff1a;张傲&#xff0c;天津大学硕士。Knowledge Graph Grounded Goal Planning for Open-Domain Conversation Generation来源&#xff1a;哈工大SCIR动机让机器生成有内容并且主题连贯的多轮开放域对话&#xff0c;是人工智能公认的关键任务之一。针对这一…

一个程序员的“无聊”故事

文 | Cat Chen知乎本文已获作者授权&#xff0c;禁止二次转载不同时期的生活方式是非常不一样的。我觉得最重要的是意识到这一点&#xff0c;不要以为某一种生活方式会一直延续下去。这个世界上不会存在特定的程序员生活方式&#xff0c;你在不同的公司工作就会遇到不一样的公司…

LeetCode 349. 两个数组的交集(哈希)

1. 题目 给定两个数组&#xff0c;编写一个函数来计算它们的交集。 示例 1:输入: nums1 [1,2,2,1], nums2 [2,2] 输出: [2] 示例 2:输入: nums1 [4,9,5], nums2 [9,4,9,8,4] 输出: [9,4] 说明:输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。来源&am…

论文浅尝 | Iterative Cross-Lingual Entity Alignment Based on TransC

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士。来源&#xff1a;IEICE TRANSACTIONS on Information and Systems, 2020, 103(5): 1002-1005.链接&#xff1a;https://www.jstage.jst.go.jp/article/transinf/E103.D/5/E103.D_2019DAL0001/_pdf介绍这篇论文关注的任…

ARKit:增强现实技术在美团到餐业务的实践

前言 增强现实&#xff08;Augmented Reality&#xff09;是一种在视觉上呈现虚拟物体与现实场景结合的技术。Apple 公司在 2017 年 6 月正式推出了 ARKit&#xff0c;iOS 开发者可以在这个平台上使用简单便捷的 API 来开发 AR 应用程序。 本文将结合美团到餐业务场景&#xff…

腾讯天衍实验室新算法入选国际万维网大会 新冠疫苗AI问答上线

新冠疫苗的效用和安全性如何&#xff1f;怎么预约接种新冠疫苗&#xff1f;哪些人可以接种新冠疫苗&#xff1f;接种新冠疫苗是否收费&#xff1f;进入年底&#xff0c;随着全国新冠疫苗接种工作规范有序开展&#xff0c;各地接种人数在不断增加&#xff0c;但在逐步面向全民推…

LeetCode 965. 单值二叉树

文章目录1. 题目2. 解题2.1 递归2.2 循环1. 题目 如果二叉树每个节点都具有相同的值&#xff0c;那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时&#xff0c;才返回 true&#xff1b;否则返回 false。 2. 解题 2.1 递归 class Solution { public:bool isUnivalT…

论文浅尝 - SIAM ICDM 2020 | 基于图时空网络的知识引导的诊断预测

论文笔记整理&#xff1a;吴锐&#xff0c;东南大学硕士。来源&#xff1a;SIAM ICDM 2020论文下载地址&#xff1a;https://epubs.siam.org/doi/abs/10.1137/1.9781611976236.3 动机基于电子病历&#xff08;EHR&#xff0c;Electronic Health Records&#xff09;对患者未来的…

Oceanus:美团HTTP流量定制化路由的实践

背景 Oceanus是美团基础架构部研发的统一HTTP服务治理框架&#xff0c;基于Nginx和ngx_lua扩展&#xff0c;主要提供服务注册与发现、动态负载均衡、可视化管理、定制化路由、安全反扒、session ID复用、熔断降级、一键截流和性能统计等功能。本文主要讲述Oceanus如何通过策略抽…

文本对抗攻击入坑宝典

文 | 阿毅编 | 小轶如果是咱家公众号的忠实粉丝就一定还记得之前咱家一篇关于NLP Privacy的文章&#xff0c;不出意外的话&#xff0c;你们是不是现在依然还担心自己的隐私被输入法窃取而瑟瑟发抖。所以&#xff0c;我们又来了&#xff01;今天给大家讨论的是NLP Privacy中一个…

LeetCode 350. 两个数组的交集 II(哈希)

文章目录1. 题目2. 解题2.1 hash2.2 数组已排序1. 题目 给定两个数组&#xff0c;编写一个函数来计算它们的交集。 示例 1:输入: nums1 [1,2,2,1], nums2 [2,2] 输出: [2,2] 示例 2:输入: nums1 [4,9,5], nums2 [9,4,9,8,4] 输出: [4,9] 说明&#xff1a;输出结果中每个元…

会议交流 | CCKS2020 第十四届全国知识图谱与语义计算大会

CCKS2020第十四届全国知识图谱与语义计算大会China Conference on Knowledge Graph and Semantic Computing, 2020南昌.江西&#xff0c;11月12日-15日主办: 中国中文信息学会语言与知识计算专业委员会承办: 江西师范大学会议网站&#xff1a;www.sigkg.cn/ccks2020大会主题&a…

用微前端的方式搭建类单页应用

前言 微前端由ThoughtWorks 2016年提出&#xff0c;将后端微服务的理念应用于浏览器端&#xff0c;即将 Web 应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。 美团已经是一家拥有几万人规模的大型互联网公司&#xff0c;提升整体效率至关重要&#xff0c;这需要很…

12种NumpyPandas高效技巧

文 | Kunal Dhariwal本文分享给大家 12 种 Numpy 和 Pandas 函数&#xff0c;这些高效的函数会令数据分析更为容易、便捷。最后&#xff0c;读者也可以在 GitHub 项目中找到本文所用代码的 Jupyter Notebook。项目地址&#xff1a;https://github.com/kunaldhariwal/12-Amazing…

LeetCode 1002. 查找常用字符(哈希)

1. 题目 给定仅有小写字母组成的字符串数组 A&#xff0c;返回列表中的每个字符串中都显示的全部字符&#xff08;包括重复字符&#xff09;组成的列表。例如&#xff0c;如果一个字符在每个字符串中出现 3 次&#xff0c;但不是 4 次&#xff0c;则需要在最终答案中包含该字符…

抖音算法推荐机制详解

抖音算法推荐机制详解&#xff01;&#xff08;科普向&#xff09; 众所周知抖音的流量分配是去中心化的&#xff0c;这种去中心化算法&#xff0c;让每个人都有机会爆红&#xff0c;可为什么别人几个粉玩抖音&#xff0c;就能轻松获得10w点赞?而你怒拍几十条也枉然? 抖音的…

论文浅尝 - ICLR2020 | 用于半监督分类的图形推理学习

论文笔记整理&#xff1a;周虹廷&#xff0c;浙江大学研究生。研究方向&#xff1a;知识图谱&#xff0c;图表示学习等。论文链接&#xff1a;https://arxiv.org/pdf/2001.06137.pdf本文是发表在ICLR2020上针对图数据做节点半监督分类任务的论文。现有的算法解决图上节点分类问…

WMRouter:美团外卖Android开源路由框架

WMRouter是一款Android路由框架&#xff0c;基于组件化的设计思路&#xff0c;功能灵活&#xff0c;使用也比较简单。 WMRouter最初用于解决美团外卖C端App在业务演进过程中的实际问题&#xff0c;之后逐步推广到了美团其他App&#xff0c;因此我们决定将其开源&#xff0c;希望…