论文阅读二进制的Embedding

Posted 囚生CY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文阅读二进制的Embedding相关的知识,希望对你有一定的参考价值。

  • 论文标题: Learning Compressed Sentence Representations for On-Device Text Processing
  • 中文标题: 面向机上文本处理的语句压缩表示学习
  • 论文下载链接: 1906.08340
  • 论文项目代码: GitHub@BinarySentEmb

序言

本文是7位来自杜克大学的学者, 1位斯坦福大学的学者, 以及1位微软研究所的研究员联名发表在ACL 2019上的一篇paper, 主要是关于低资源句子嵌入学习的方法, 实话说笔者本以为原作者背景这么强必有高论, 可惜并没有看到很新颖的做法, 感觉内容偏于浅显, 不像是他们这种水平的人, 还是9个人联名合作的paper, 或许是实验结果比较好吧, 倒是可以作为熟悉这个方面的一篇入门paper;

句子嵌入的学习在NLP领域中是非常重要的课题, 因为它可以给非常多的下游任务提供一个预训练的句子嵌入模型, 包括语义匹配, 文本分类, 情感识别等等, 几乎所有非单词级别的NLP任务, 如句子级别, 文档级别, 都避不开句子嵌入这个难题, 有些简单的做法会将句子中所有的词向量取均值或是加权平均, 抑或是拼接, 前者过于简单, 缺乏表征性, 后者又无可避免地面临维数过高而占用大量资源的难题, 因此找到一个简单且具有高可用性的句子嵌入其实是非常关键的, 而本文恰好就是一个很适合熟悉这块方法的paper, 就结果而言, 本文做到了在几乎不损失原模型性能的条件下, 将内存占用减少了2个数量级, 至少在模型跑不动的情况下, 算是一个权宜之策;


目录


摘要 Abstract

  1. 自然语言处理(Natural Language Processing, 下简称为NLP)问题中常常会使用到语句级别的向量表示, 但是往往通过数据学习到的句子向量是连续的(continuous)以及是实值的(real-valued), 这不便于在缺乏计算资源的平台(low-resource(memory and computation) platform)中进行存储与读取, 尤其是移动设备(如手机);

  2. 本文提出四种策略将通用的连续型句子嵌入(sentence embeddings)转化为二值化的形式(binarized form), 并且保持其原嵌入中所包含的语义信息;

  3. 本文在广泛的下游任务中测试了这种二值化的句子嵌入, 实验结果显示这种方法约牺牲 2 2% 2的模型性能水平, 却能够减少超过 98 98% 98的存储需求; 不仅如此, 在计算句子相似度的问题中, 可以简单计算两个二值化的句子嵌入的汉明距离(Hamming distance), 而无需计算两个连续型句子嵌入的内积, 这样可以降低计算复杂度;

  • 笔者注:
    • 汉明距离定义为两个二进制编码异或运算后各位数值加和的结果, 如 101110 1 ( 2 ) 1011101_(2) 1011101(2) 100100 1 ( 2 ) 1001001_(2) 1001001(2)之间的汉明距离是 2 2 2, 本质上就是两个二值向量的欧式距离;

1 引入 Introduction

  1. 句子嵌入的学习方式:
  • (1) 无监督学习: 参考文献[20, 13, 16, 11, 21];
  • (2) 通过特定NLP任务进行有监督学习:
    • ① 文本匹配(paraphrase identification): 参考文献[34]
    • ② 自然语言推断(natural language inference): 参考文献[7]
    • ③ 语篇关系分类(discourse relation classification): 参考文献[22]
    • ④ 机器翻译(machine translation): 参考文献[35]
  1. 前人对于句子嵌入的研究都基于嵌入向量是连续的(continuous)与实值的(real-valued)假设前提, 这样的问题在于:
  • (1) 内存占用(memory footprint)与存储成本巨大;
  • (2) 检索语义相似的句子的计算成本巨大, 因为需要对比数据库中每一对句子嵌入的相似度(计算内积);
  1. 本文的设计思路:
  • 本文提出的二值化嵌入的目的在于可以节约内存空间, 并且只需要比较汉明空间(Hamming space)中二进制编码的最小距离即可以简单匹配语义相似的句子;
  • 一种简单的想法是通过设置硬阈值(hard threshold)将连续性向量的每个维度二值化, 但是这种策略会给模型性能带来显著的折损, 而且也无法控制二值化句子嵌入的维数(只能与原连续型句子嵌入维数相同);
    • 笔者注:
      • 如对于某个连续向量 ( 0.3 , 0.4 , 0.9 , 0.7 , 0.2 ) (0.3, 0.4, 0.9, 0.7, 0.2) (0.3,0.4,0.9,0.7,0.2), 在硬阈值 0.5 0.5 0.5的控制下可以转为二值向量 ( 0 , 0 , 1 , 1 , 0 ) (0, 0, 1, 1, 0) (0,0,1,1,0)
  • 因此本文提出三种新策略来参数化这种从预训练的连续型嵌入到二值化嵌入的转换;
    • 本文既对诸如随机投影(random projection)等简单运算操作进行二值化测试, 也训练深度神经网络模型, 如正则自动编码器(regularized autoencoder), 用于将连续向量转为二值向量的实验;
    • 特别地, 本文还提出一种语义保全目标(semantic-preserving objective), 这个目标通过标准自动编码器架构(standard autoencoder architecture)来增强, 以促进模型抽象出富含信息(informative)的二进制编码;
      • 笔者注:
        • 根据下文中的描述, 这个语义保全目标是指训练自动编码器架构模型时使用的损失函数;
    • 本文将参考文献[7]中提出的InferSent嵌入模型作为测试句子嵌入来进行二值化实验, 当然本文的二值化方法是可以很容易地应用到其他预训练的连续型句子嵌入上;
  1. 本文的实验结果:
  • (1) 本文的模型评估方法同样参照参考文献[7]中提及的SentEval toolkit; 最终结论是以牺牲 2 % 2\\% 2%的模型性能为代价, 可以将内存占用降低到原模型的 1.5 % 1.5\\% 1.5%;
  • (2) 本文也发现在其他的语句匹配任务上, 使用二值化嵌入的汉明距离(Hamming distance)可以取得与连续型嵌入相近(on par)乃至更优的效果
    • 这可以在下文中的Table 1中看到实验结果;
  • (3) 本文还在参考文献[2]提出的SNLI数据集上进一步实施 K K K近邻语句检索实验( K K K-nearest neighbor sentence retrieval experiment), 结果显示二值化嵌入确实可以有效地将语义相似地语句给提取出来;
  1. 本文的贡献:
  • (1) 首次在学习通用的(general-purpose)二值化句子嵌入上进行系统性地研究, 并给出四种不同的转换策略;
  • (2) 一种带有语义保全损失函数(semantic-preserving loss)自动编码器架构, 这种架构被实证分析证实在诸多下游NLP任务中能够取得较好评估结果;
  • (3) 一种新的进行语句匹配的方法, 即计算二值化嵌入的汉明距离(Hamming distance)就可以取得与计算连续型嵌入的余弦相似度(cosine similarity)相似乃至更优的性能;

2 相关工作 Related Work

  1. 关于从大规模语料数据中学习预训练的句子嵌入的方法, 大致可以分为两类:
  • (1) 在特定转换任务(transferring task)上训练预训练模型并进行微调: 参考文献[8, 26, 24, 10, 4]
  • (2) 提取(extract)通用的(general-purpose)句子嵌入的方法, 这种方法可以有效应用于下游NLP任务, 而无需微调编码器参数: 参考文献[20, 13, 16, 11, 37, 21, 23, 30]
  • 本文提出的方法可以归属到第二类, 区别在于本文训练的是二值化嵌入;
  1. 关于使用深度神经网络学习低耗内存(memory-efficient)的嵌入的方法, 大致可以分为两类:
  • (1) 使用离散型句子嵌入; 参考文献[15, 29, 9]
  • (2) 使用二进制数据表示的句子嵌入: 参考文献[5, 28, 31]
  • 相对来说二进制数据表示的句子嵌入更加节约内存, 而且有高效计算汉明距离(Hamming distance)的优势; 但是(2)中的参考文献都是单词级别的压缩嵌入, 目前还很少有在句子级别学习压缩嵌入的研究;
  1. 此外本文的研究还与语义哈希(semantic hashing)相关: 参考文献[27, 39, 33, 38, 28];
  • 这些参考文献都是基于在特定领域文档中训练模型并进行模型评估的, 因此不能用作通用的句子嵌入, 区别于本文的二值化嵌入具有通用性;
  • 笔者注:
    • 语义哈希是指将高维空间向量映射至低维汉明空间, 并保持原空间向量相似性, 使得新空间向量的汉明距离反映原空间向量相似度的哈希算法;
    • 语义哈希引入了近似的概念, 认为在海量数据的搜索中, 在大多数情况下, 完全精确的查找并不是必须的, 近似解己经足以满足用户绝大多数的要求, 因而通过哈希算法迅速定位数据集中一定概率下与搜索关键词相关的数据, 配合汉明空间相似度度量的快速性和索引结果容易进一步扩展的特点, 可以大幅提高索引和检索的效率;

3 提出的方法 Proposed Approach

  • 本文旨在将连续型句子嵌入转换成压缩的二值化句子嵌入, 并且保存前者包含的语义信息;
  • 数学抽象表示:
    • x x x是输入语句, f f f是通过预训练的通用句子编码器(general-purpose sentence encoder)定义得到的映射函数, 则 f ( x ) f(x) f(x)表示由这个编码器提取得到的连续型句子嵌入;
    • 本文需要学习到一个函数 g g g f ( x ) f(x) f(x)转为高信息量的(highly informative)的二值化句子嵌入 g ( f ( x ) ) g(f(x)) g(f(x));

3.1 硬阈值 Hard Threshold

  1. 硬阈值方法的数学符号及公式:
  • h h h表示连续型句子嵌入;
  • b b b表示二值化句子嵌入;
  • s s s表示硬阈值;
  • L L L表示 h h h的维数;
  • 硬阈值方法可以用下面的数学公式表示: b ( i ) = 1 h ( i ) > s = s i g n ( h ( i ) − s ) + 1 2 (1) b^(i)=\\bm1_h^(i)>s=\\frac\\rm sign(h^(i)-s)+12\\tag1 b(i)=1h(i)>s=2sign(h(i)s)+1(1)
  1. 硬阈值方法的缺陷:
  • (1) 语义信息大量缺失, 因为硬阈值方法无需训练;
  • (2) 转换后的二值化嵌入 b b b与原连续型嵌入 h h h的维数需要保持一致, 即都为 L L L;

3.2 随机投影 Random Projection

  1. 随机投影方法的概述:
  • (1) 与硬阈值方法相同, 随机投影方法也是无需训练的, 即直接在预训练的连续型句子嵌入上应用一个随机投影;
  • (2) 随机投影方法与局部感知哈希(Locality-Sensitive Hashing, 下简称为LSH)相关;
    • 笔者注:
      • LSH的基本思想是将原始数据空间中的两个相邻数据点通过相同的映射或投影变换(projection)后, 这两个数据点在新的数据空间中仍然相邻的概率很大, 而不相邻的数据点被映射到同一个桶的概率很小;
      • 也就是说, 如果我们对原始数据进行一些哈希映射后, 我们希望原先相邻的两个数据能够被哈希到相同的桶内, 具有相同的桶号;
      • 对原始数据集合中所有的数据都进行哈希映射后, 我们就得到了一个哈希表, 这些原始数据集被分散到了哈希表的桶内, 每个桶会落入一些原始数据, 属于同一个桶内的数据就有很大可能是相邻的, 当然也存在不相邻的数据被哈希到了同一个桶内;
      • 因此, 如果我们能够找到这样一些哈希函数, 使得经过它们的哈希映射变换后, 原始空间中相邻的数据落入相同的桶内的话, 那么我们在该数据集合中进行近邻查找就变得容易了, 我们只需要将查询数据进行哈希映射得到其桶号, 然后取出该桶号对应桶内的所有数据, 再进行线性匹配即可查找到与查询数据相邻的数据;
      • 换句话说, 我们通过哈希映射变换操作, 将原始数据集合分成了多个子集合, 而每个子集合中的数据间是相邻的且该子集合中的元素个数较小, 因此将一个在超大集合内查找相邻元素的问题转化为了在一个很小的集合内查找相邻元素的问题, 显然计算量下降了很多;
  • (3) 随机投影方法解决了硬阈值方法的两个缺陷:
    • ① 参考文献[36]证明了随机句子编码器可以根据词向量有效地构建广泛适用的(universal)句子嵌入, 同时可以自由调整句子嵌入的维数;
    • ② 但是参考文献[36]是基于连续型句子嵌入投影到连续型句子嵌入上的情况;
  • (4) 本文关心的问题是如果是投影到二值化句子嵌入上是否能够同样保持同样的性质;
  1. 随机投影方法的数学符号及公式:
  • W ∈ R D × L W\\in\\mathbbR^D×L WRD×L表示投影矩阵;
  • D D D表示投影后句子嵌入的维数, 大小可以进行调整;
  • L L L表示投影前句子嵌入的维数;
  • 根据参考文献[12, 36]中使用的标准启发式初始化(standard initializaion heuristic)方法, 投影矩阵 W W W的初始值可以使用均匀采样得到: W i , j ∼ U n i f o r m ( − 1 D , 1 D ) (2) W_i,j\\sim \\rm Uniform\\left(-\\frac1\\sqrtD,\\frac1\\sqrtD\\right)\\tag2 Wi,jUniform(D 1,D 1)(2)
  • 利用投影矩阵 W W W得到维数为 L L L的连续型嵌入后, 即可使用Formular 1中的硬阈值方法再将投影结果转为二值化嵌入;

3.3 主成分分析 Principal Component Analysis

  1. 主成分分析可以用于特征降维, 即减少预训练的连续型句子嵌入的维数;

  2. 论文中给出了主成分分析的详细步骤: