网站建设 配资,网站字号多大,北京中小企业网站建设,泰州网站建设搭建一、Glove模型简介语义文本向量表示可以应用在信息抽取#xff0c;文档分类#xff0c;问答系统#xff0c;NER#xff08;Named Entity Recognition#xff09;和语义解析等领域中#xff0c;大都需要计算单词或者文本之间的距离或者相似度#xff0c;因此#xff0c;…一、Glove模型简介语义文本向量表示可以应用在信息抽取文档分类问答系统NERNamed Entity Recognition和语义解析等领域中大都需要计算单词或者文本之间的距离或者相似度因此能够表达语义的文本的向量表示非常重要。单词的语义向量生成主要有两种方式1LSAterm-document、HALterm-term等矩阵分解方法利用全局统计信息生成词向量2skip-gram、CBOW等词向量利用语言模型的局部信息生成词向量在词类比 king -queen man-woman方面具有独特优势。作者的想法是将以上两种方式的优点结合提出了全局对数双线性回归模型。该模型采用LSA类似想法利用单词与单词的共现矩阵获取全局统计信息但只使用非零数据另一方面采用和skip和cbow一样的词向量方式进行训练。二、相关工作1、矩阵分解方法全局信息LSAterm-document、HALterm-term。HAL方法的主要缺点是最常出现的单词在相似性度量中占据了不合理的分量比如与the、and协同出现的单词其相似性通常会比较高。论文中提到的解决方法有 positive pointwise mu-tual information (PPMI)和 Hellinger PCA (HPCA) 。2、词向量方法局部信息Mikolov在2013年提出的skip-gram、CBOW方法采用语言模型依据一个局部窗口中的单词都是相关的这个思想来训练词向量在词类比任务上具有非常优秀的表现。这种方法没有使用全局统计信息比如单词A和单词B经常在一起出现那么就应该给予更大的权重而该模型则是对所有的训练语料都给予相同的权重。三、Glove建模过程1、公式的推理过程。定义好相关符号 代表单词间协同出现次数word-word co-occurrence counts 的矩阵。 表示单词 在单词 上下文环境中出现的次数。 表示所有在单词 上下文环境中出现单词的次数之和。 表示单词 在单词 上下文中出现的概率。对于冰ice与水蒸汽steam作者希望训练得到的词向量具有如下特性1与冰具有相似属性单词如固体solid要求 值很大2与水蒸气具有相似属性单词如固体solid要求 值很小;3与冰、水蒸气不相关单词如时尚fashion要求 值接近1给定单词 的词向量 有如下等式现在需要解决的问题是函数 怎么构造作者做了一些合理的假设选择函数 。首先要考虑单词 之间的关系作者希望在线性空间中考察两个向量的相似性不失线性地考察因此选择 。其次等式右边是个标量那么式子左边也应该是个标量现在输入为向量 和 那內积应该是合理的选择于是变量应该为 。然后作者又往公式的外面套了一层指数运算exp最终得到 为什么是指数运算呢套上之后我们的目标是让以下公式尽可能地成立本来我们需要求现在通过分子分母相对应我们只需要让 。只需要N∗N的复杂度上进行计算而不是N∗N∗N大大减少了复杂度。然后两边取log后得到在这里我们发现等式左边是可以交换位置的可是右边的 并不等于 。为此将等式6改写为添了一个偏差项b并将log(Xi)吸收到偏差项bi中。到这里我们就可以写出损失函数作者进行了进一步的优化考虑到语料库中经常协同出现的单词具有更为密切的联系作者提出来加权损失函数。权重函数要满足如下特性1 考虑连续性 时 趋近于02 非递减这样 很小时就不会有过大的权重3 当 很大时f(x)不会过大这样高频词不会占有过重的权值作者选择的满足以上要求的函数如下是经验值是从Mikolov2013年的论文中直接拿来用的。2、与skip以及cbow的关系我们知道这两个模型的损失函数如下是一个softmax函数全局的目标函数可以写成对于大量的预料计算求和非常消耗资源为了提高计算效率可以把提前把那些有相同值的词分组目标函数改写为按照词典来统计。由于之前定义和代入方程12中得到 是交叉熵 是之前定义的 。然而交叉熵对于长尾分布表现不好并且分布 需要做归一化操作求和操作会成为计算的瓶颈。因此文章又提出了一种不需要归一化的衡量距离的方式也就是最小二乘法。其中都不需要归一化操作。但是还存在一个问题就是往往取值较大会加重优化过程的计算复杂性解决方式是使用log来代替。同时引入权重函数得到这里的公式与我们最开始推导出来的公式非常相似。从这里可以看出skip-gram模型与这篇论文提出模型差异本质上是度量概率分布采用的方法不一致。前者使用的是交叉熵损失后者使用的是加权平方误差损失。3、复杂度估算模型的复杂度 为 在词典V很大时复杂度远远高于skip-gram的复杂度 , C 是语料库的大小。所以需要对矩阵X做一些限制比如只取共现次数非0的词等。具体的实现方式是假设词i和词j共现的次数 用词频排名 的幂律函数来表示语料库词的总数正比于次数共现次数矩阵元素的加和用调和级数来表示幂律求和部分接下来就是如何确定k了 是词频排序最大值同时与非0词频矩阵X的个数相等也就是等于方程17中r的最大值。因为矩阵X中的元素都是词频大于或等于1的即 根据方程17 因此总是能够找到一个k使得 所以 代入方程18得到根据调和基数展开式把方程19展开得到 是黎曼 函数在X非常大时可以看出 与 的关系取决与 是否 1来决定是 和 谁占比更大O(1)常数项不用考虑。因此Glove模型的复杂度小于等于skip-gram模型的复杂度。如果 的复杂度 远远好于 的复杂度。四、实验结果4.1 word analogy任务在词语类比任务中我们看到Glove算法在大多数情况下取得了更好的指标。在semantic subset/语义子集、syntactic subset/句法子集上均表现更佳具体如下(此任务可以测试向量空间的子结构)4.2 word similarity任务本文用多个模型在一系列word similarity任务上进行测试结论是Glove优于其他模型。详细数据如下4.3 NER任务在此任务中基于CoNLL-03数据集训练模型并在多个数据集(CoNLL-03、ACE、MUC7)上进行测试结果显示Glove表现最佳。五、参考文献1、官方代码https://nlp.stanford.edu/projects/glove/。2、paper原文https://www.aclweb.org/anthology/D14-1162.pdf。3、好文参考理解GloVe模型Global vectors for word representation