zoukankan      html  css  js  c++  java
  • word embedding 精要整理

    word embedding
    Embedding就是用一个低维稠密的向量“表示”一个对象,这里所说的对象可以是一个词(Word2vec),也可以是一个物品(Item2vec),亦或是网络关系中的节点(Graph Embedding)。其中“表示”这个词意味着Embedding向量能够表达相应对象的某些特征,同时向量之间的距离反映了对象之间的相似性。
    具体含义:词的实数向量化表示,可以通过向量相似性度量语义相似性,相似性原理是上下文的一致性
     
    Embedding在数学上表示一个maping, f: X -> Y, 也就是一个function,通俗的翻译是单词嵌入,把X所属空间的单词映射为到Y空间的多维向量,word embedding,就是找到一个映射或者函数,生成在一个新的空间上的表达。
    分布式表示 distributed representation
    分布式表示的理论基础:上下文相似的词,语义也相似  Harris 在 1954 年提出的分布假说( distributional hypothesis)为这一设想提供了理论基础:上下文相似的词,其语义也相似。
    基于矩阵:矩阵的每一行表示词的上下文分布,上下文相似,语义相似。矩阵向量的空间距离即代表了相似性
    基于神经网络:通过神经网络对上下文,以及上下文与目标词之间的关系进行建模
    词向量如何生成:
    用一个神经网络来训练。一个训练的样本输入是一个词和另外一个词的one-hot形式,而样本的标签是这两个词的关系,如果他们两经常出现在一起(根据skip-gram方法),则标签为1,反之为0。训练得到的网络中的权重就是词向量。网络倒数第二层的权重。

    词向量表示

    离散表示:one_hot 方法、TF-IDF方法,N-gram方法,从维度,权重,语序上构建词向量,但随着预料增多,都会出现维度膨胀,数据稀疏,计算量大的问题。

    分布式表示:word2vec ,wordvec是词向量的一种,wordvec包含cbow和skip_gram

    Word2Vec模型中,主要有Skip-Gram和CBOW两种模型,从直观上理解,Skip-Gram是给定input word来预测上下文。而CBOW是给定上下文,来预测input word,普通的CBOW模型通过上下文来预测中心词,抛弃了词序信息。

    CBOW算法对于很多分布式信息进行了平滑处理(例如将一整段上下文信息视为一个单一观察量)。很多情况下,对于小型的数据集,这一处理是有帮助的。相比之下,Skip-Gram模型将每个“上下文-目标词汇”的组合视为一个新观察量,这种做法在大型数据集中会更为有效
     

     关于Word2Vec几个问题思考

    (1) Hierarchical Softmax方法中哈夫曼树是如何初始化生成的?也就是哈夫曼树是如何构建的呢?

    答:Hierarchical Softmax依据词频构建Huffman树,词频大的节点离根节点较近,词频低的节点离根节点较远,距离远参数数量就多。

    (2)Hierarchical Softmax对词频低的和词频高的单词有什么影响?为什么?

    答:词频高的节点离根节点较近,词频低的节点离根节点较远,距离远参数数量就多,在训练的过程中,低频词的路径上的参数能够得到更多的训练,所以Hierarchical Softmax对词频低的单词效果会更好。

    (3)Hierarchical Softmax方法中其实是做了一个二分类任务,写出它的目标函数?

    答: [公式] ,其中 [公式] 是真实标签, [公式] 是模型预测的标签。

    (4)Negative Sampling是一种什么采样方式?是均匀采样还是其它采样方法?

    答:词典 [公式] 中的词在语料 [公式] 中出现的次数有高有低,对于那些高频词,被选为负样本的概率就应该比较大,反之,对于那些低频词,其被选中的概率就应该比较小。这就是我们对采样过程的一个大致要求,本质上就是一个带权采样问题。

    (5)详细介绍一下Word2vec中负采样方法?

    答:先将概率以累积概率分布的形式分布到一条线段上,以 [公式] 为例, [公式] 所处线段为 [公式] , [公式] 所处线段为 [公式] , [公式] 所处线段为 [公式] ,然后定义一个大小为 [公式] 的数组,并把数组等距离划分为 [公式] 个单元,然后与上面的线段做一次映射,这样我们便知道了数组内的每个单元所对应的字符了,这种情况下算法的时间复杂度为 [公式] ,空间复杂度为 [公式] , [公式] 越小精度越大。

    最后,我们来聊一聊Word2vec对Embedding技术的奠基性意义。Word2vec是由谷歌于2013年正式提出的,其实它并不完全由谷歌原创,对词向量的研究可以追溯到2003年论文《a neural probabilistic language model》,甚至更早。但正是谷歌对Word2vec的成功应用,让词向量的技术得以在业界迅速推广,使Embedding这一研究话题成为热点。毫不夸张地说,Word2vec对深度学习时代Embedding方向的研究具有奠基性的意义。

    从另一个角度看,在Word2vec的研究中提出的模型结构、目标函数、负采样方法及负采样中的目标函数,在后续的研究中被重复使用并被屡次优化。掌握Word2vec中的每一个细节成了研究Embedding的基础。


    天才是百分之一的灵感,加百分之九十九的汗水,但那百分之一的灵感往往比百分之九十九的汗水来的重要
  • 相关阅读:
    [leetcode]Remove Nth Node From End of List @ Python
    [leetcode]Swap Nodes in Pairs @ Python
    [leetcode]Linked List Cycle II @ Python
    [leetcode]Linked List Cycle @ Python
    [leetcode]LRU Cache @ Python
    [leetcode]Reorder List @ Python
    [leetcode]Insertion Sort List @ Python
    [leetcode]Sort List @ Python
    [leetcode]3Sum Closest @ Python
    [elk]elasticsearch实现冷热数据分离
  • 原文地址:https://www.cnblogs.com/Christbao/p/12022218.html
Copyright © 2011-2022 走看看