| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 论文翻译解读:Distributed Representations of Words and Phrases and their Compositionality【Word2Vec优化】 -> 正文阅读 |
|
[人工智能]论文翻译解读:Distributed Representations of Words and Phrases and their Compositionality【Word2Vec优化】 |
文章目录Distributed Representations of Words and Phrases and their Compositionality简要信息
重点内容概括替代分层softmax方案–负采样 词表示固有的限制:不关心次序,无法表示习惯用于 本文提出在文本中查找短语的方法 用向量表示整个短语会使skip-gram更具表现力 高频词二次取样,因为in,the,a没什么信息,可以加速训练,提高算法精度 摘要最近引入的连续跳过图模型是一种学习高质量分布式向量表示的有效方法,它捕获了大量精确的句法和语义词关系。在本文中,我们提出了几个扩展,以提高向量的质量和训练速度。通过对频繁出现的单词进行子采样,我们获得了显著的加速,并学习了更规则的单词表征。我们还描述了分层softmax的一个简单替代方案,称为负采样。 词语表征的一个内在限制是它们对词序的漠不关心以及它们不能表示习惯短语。例如,“Canada”和“Air”的含义不能轻易结合起来得到“Air Canada”。受这个例子的启发,我们提出了一个在文本中寻找短语的简单方法,并表明学习数百万短语的良好向量表示是可能的。 1 介绍通过分组相似的单词,在向量空间中的分布式向量表示可以帮助学习算法在NLP任务中获得更好的表现。最早使用单词表示可以追溯到1986年(Rumelhart,Hinton和Williams)。这个想法已经被应用于统计语言建模且取得了相当大的成功。后续工作包括应用于自动语音识别和机器翻译,以及大范围的NLP任务。 图1:Skip-gram模型架构。训练目标是学习善于预测附近单词的词向量表示 在本文中,我们提出了原始Skip-gram模型的几个扩展。在训练过程中,对frequent words进行二次采样会导致显着的加速(大约2-10倍),并提高频率较低的此表示的准确性。此外,我们提出了一种用于训练Skip-gram模型的简化NCE(噪声对比估计)。结果表明,与更复杂的分层softmax相比,它有更快的训练速度,而且常用词的词表示也更好。 2 Skip-gram模型Skip-gram模型的训练目标是找到可用于预测句子或文档中surrounding words的word representation。更正式地,给出训练词W1, w2, w3…、wT,Skip-gram模型的目标是最大化平均对数概率(1),其中c是训练上下文的大小(可以是中心词wt的函数)。较大的c会产生更多的训练示例,从而可以以牺牲训练时间为代价获得更高的精度。基本的Skip-gram公式使用softmax函数定义为,其中vw和v 'w分别为w的“输入”和“输出”向量表示,w为词汇量。这个公式是不切实际的,因为计算? log p(wO|wI)的花费与W成正比,通常会达到105-107的数量级。 2.1 分层Softmax分层softmax是完全softmax的计算效率近似。它首先由Morin和Bengio在神经网络语言模型的上下文中引入。它的主要优点是,不需要评估神经网络中的W WW个输出节点以获得概率分布,仅需要评估约l o g 2 ( W ) 个节点。 分层softmax使用二叉树表示输出层,其中W WW个字作为其叶,并且对于每个节点,显式地表示其子节点的相对概率。这些定义了一个可将概率分配给单词的random walk(随机游走)。 更准确地说,可以从树的根通过适当的路径到达每个单词w。设n(w, j)是从根到w的路径上的第j个节点,设L(w)是这条路径的长度,因此n(w, 1) =根,n(w, L(w)) = w。另外,对于任意内部节点n,设ch(n)是n的任意固定子节点,设[[x]]为1,如果x为真,则为-1。分层softmax对p(wO|wI)的定义如下: 式中,σ(x) = 1/(1 + exp(?x))。可以验证 p(w|wI) =1。这意味着计算log p(wO|wI)和?log p(wO|wI)的开销与L(wO)成正比,L(wO)平均不大于log W。此外,不同于标准的softmax Skip-gram公式,后者为每个单词w分配两个表示vw和v 'w,分层softmax公式对每个单词w有一个表示vw,对二叉树的每个内部节点n有一个表示v 'n。 分层softmax使用的树结构对性能有相当大的影响。Mnih和Hinton探索了构建树结构的一些方法以及训练时间和结果模型精度的影响。在我们的工作中,我们使用一个哈夫曼树(binary Huffman tree),因为它将短codes分配给高频词,从而加快了训练速度。之前已经观察到,根据出现频率组合单词可以很好的作为基于神经网络的语言模型的一种简单加速技术。 2.2 负采样Negative Sampling分层softmax的替代方案是噪声对比估计(NCE),由Gutmann和Hyvarinen引入,并由Mnih和Teh用于语言建模。NCE认为一个好的模型应该能够通过logistic regression来区分数据和噪声。这类似于Collobert和Weston使用的铰链损失/hinge loss,他们通过对噪声上的数据进行排名来训练模型。 虽然NCE可以最大化softmax的对数概率,但是Skipgram模型只关注学习高质量的向量表示,因此只要向量表示保持其质量,我们可以随意简化NCE。我们通过以下公式定义Negative Sampling(NEG):4),用于替代Skip-gram中的每个log P (wO|wI)项。因此,我们的任务是用逻辑回归将目标词w_O从噪声分布P_n(w)里区分开,其中每个数据样本存在k个负样本。我们的实验表明,小型训练数据集里k可以取5-20。而对于大型数据集,k可以小到2-5。Negative Sampling和NCE之间的主要区别在于,NCE需要噪声分布的样本和数值概率,而Negative Sampling仅使用样本。尽管NCE最大化了softmax的对数概率,但这个属性对我们的应用来说并不重要。 NCE和NEG均以噪声分布Pn(w)作为自由参数。我们调查了Pn(w)的许多选择,发现ungram分布U(w)的3/4次方(即U(w)3/4/Z)明显优于ungram分布和均匀分布,对于NCE和NEG,在我们尝试的每个任务中,包括语言建模(这里没有报告)。 2.3 高频词的二次取样在非常大的语料库中,最常见的单词很容易就出现数亿次(例如, 为了抵消罕见词和高频词之间的不平衡,我们使用简单的二次抽样:训练集中的每个单词w i w_iw**i将有一定概率被丢弃,概率由以下公式计算:??(5)其中f(wi)是单词wi的频率,t是一个选定的阈值,通常在10?5左右。我们选择这个二次抽样公式是因为它主动地对频率大于t的词进行二次抽样,同时保持了频率的ranking。虽然这个二次抽样公式是启发式选择的,但我们发现它在实践中运作良好。它加快了训练速度,甚至显着提高了罕见词所学向量的准确性,如以下几节所示。 3 实证结果在本节中,我们评估了分层Softmax,NCE,NEG和训练词的二次取样。我们使用了Mikolov等人介绍的类比推理任务。这个任务包含 为了训练Skip-gram模型,我们使用了一个由各种新闻文章组成的大型数据集(内部Google数据集,有十亿字)。我们从词汇表中丢弃了在训练集中出现次数少于5的单词,最终词汇表的大小为692K。表1中列出了词类比测试集中的各种跳码模型的表现。表格显示,负采样优于类比推理任务中的分层Softmax,并且性能略好于NCE。高频词的二次采样使训练速度提高了几倍并且让词表示的准确率显著提高。 表1:类比推理任务的各种300维Skip-gram模型的准确性。NEG-k代表每个positive样本的k个negative样本的负采样; NCE表示噪声对比估计,HS-Huffman代表基于频率的码的分层Softmax。 可以说,skip-gram模型的线性使它的向量更适合这样的线性类比推理。而Mikolov等的结果还表明,由于训练数据量的增长,标准sigmoidal RNN(高度非线性)所学的向量在此类任务上可以显著提高,这表明非线模型也倾向于线性结构的word representations。 4 学习短语如前所述,许多短语的意思不仅仅是单词含义的简单组合。 要学习短语的vector representation,我们首先要找到经常一同出现但在其他语境中并不常见的单词。 例如, 图2:短语类比推理任务示例(完整测试集有3218个例子)。 目标是使用前三个短语计算第四个。 我们最好的模型在这个数据集上达到了72%的准确度。 这样,我们可以形成许多合理的短语,而不会大大增加词汇量的大小。理论上,我们可以使用所有的n元文法训练Skip-gram模型,但是这太消耗内存。 许多识别文本中短语的技术之前已经被开发出来了, 然而,比较它们超过了我们的工作范围。 我们决定使用一种简单的数据驱动方法,基于unigram和bigram的计数来形成短语: 4.1 Phrase Skip-Gram实验结果从前面实验的新闻数据开始,我们首先构建了基于短语的训练语料库,然后我们使用不同的超参数训练了几个Skip-Gram模型。 如前所述,我们使用300维的向量和context size 5。该设置已经在短语数据集上实现了良好的性能,并且允许我们快速比较负采样和分层Softmax,无论是否二次采样高频token。 结果总结在表3中。 表3:短语类比数据集中Skip-gram模型的准确性。 这些模型已经从新闻数据集中接受了大约十亿字的训练。 表4:使用两个不同的模型,给出与给定短语最接近的实体的示例。 表5:使用元素加法的V面组合性。使用最好的Skip-gram模型显示了四个最接近两个向量之和的标记。 结果表明,k = 5时负采样已经达到可靠的精度,而使用k = 15可以实现更好的性能。 令人惊讶的是,我们发现在没有subsampling的情况下训练分层Softmax会得到较低的性能,而我们对频繁的单词进行subsampling时它成为表现最好的方法。 这表明至少在某些情况下,subsampling可以导致更快的训练,而且可以提高精度。 为了进一步深入了解不同模型表示的token的不同,我们手动检查了各种模型的低频短语的nearest neighbours。 表4显示了一个这样比较的样例。 与之前的结果一致,似乎使用了分层softmax和subsampling的模型可学到短语的最佳表示。 5 加法合成性由Skip-gram模型学习的word and phrase representation显示了一个线性结构,从而通过简单地向量计算可以进行精确的模拟推理。 有趣的是,我们发现Skip-gram representations展现了另一种线性结构,使得有可能通过vector representation的元素级加法来有意义地组合单词。 这种现象如表5所示。 向量的加法属性可以通过检查训练目标来解释。 word vector与非线性softmax的输入呈线性关系。 由于 word vector被训练来预测句子中的周围单词,所以可以将向量视为一个单词出现在上下文的分布的表示。 这些值与输出层计算的概率成对数地相关,所以两个word vector的和与两个上下文分布的乘积有关。 该乘积在这里的作用为AND:被分配了两个有高概率word vector的单词将具有很高的概率,其他字将具有较低的概率。 因此,如果“Volga River”与“Russian”和“river”一起出现在同一句话中,这后两个的word vector总和将生成一个接近“Volga River”的vector的feature vector。 6 Comparison to Published Word Representations许多以前研究基于词汇表示的神经网络的作者已经发表了他们的结果模型,以供进一步使用和比较:其中最著名的作者是Collobert和Weston [2], Turian等人[17],以及Mnih和Hinton[10]。我们从网络上下载了他们的单词向量。Mikolov等人[8]已经在单词类比任务中评估了这些单词表示,其中Skip-gram模型以巨大的优势取得了最佳性能。 表6:给出了各种著名模型和Skip-gram模型中最接近的标记的例子,该模型使用超过300亿个训练单词对短语进行训练。一个空的单元格意味着这个词不在词汇表中。 为了更深入地了解学习向量的质量差异,我们通过在表6中显示不常见单词的最近邻居来提供实证比较。这些例子表明,在大型语料库上训练的大跳过图模型在学习表征的质量方面明显优于所有其他模型。这可以部分归因于这样一个事实,即这个模型是根据大约300亿个单词进行训练的,这比之前工作中使用的典型大小的数据多了大约2到3个数量级。有趣的是,尽管训练集要大得多,但Skip-gram模型的训练时间只是以前模型体系结构所需时间复杂度的一小部分。 7 结论这项工作有几个关键的贡献。 我们展示如何使用Skip-gram模型来训练单词和短语的分布式表示,并证明这些表示呈现线性结构,使准确的类比推理成为可能。 本文介绍的技术也可用于训练[8]中引入的连续的bag-of-words模型。 得益于计算效率高的模型架构,我们成功地在比之前模型的数据量高了数个数量级的数据集上进行了训练。 这导致了所学的单词和短语表示的质量有了显著的改善,特别是对于稀有的entity。 我们还发现,高频词的二次抽样导致了更快的训练速度,并且使罕见单词的表示得到了显著的提升。 我们文章的另一个贡献是subsampling算法,这是一个非常简单的训练方法,可以学习准确的表示,尤其是对于高频单词。 训练算法和超参数的选择得由具体任务决定,因为我们发现不同的问题具有不同的最优超参数配置。 在我们的实验中,影响性能的最关键的决策是模型架构的选择,向量的大小,二次采样率以及训练窗口的大小。 我们将实现本文技术的代码发布为了一个开源项目(即word2vec)。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 0:53:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |