Word Embedding中Embedding的解释

来源:互联网 发布:电脑ip切换软件 编辑:程序博客网 时间:2024/03/29 23:58

今天在看部分NLP中关于词处理的过程中,多次看到word embedding,word representation等关键词,其中对于嵌入的一个直观感受是将word从一个空间映射到另一个空间,这样做的好处是在另一个空间可以更好的对这些word进行处理。Hinton在20年前便提出了word representation,之后google提出了word2vec,具有很高的商业应用价值,这些映射方法最关键的地方在于映射过后,可以更好的处理这些词(因为是数值特征),同样这些特征仍然保留了语义信息(这点非常赞)。于是查了知乎:https://www.zhihu.com/question/32275069


Embedding在数学上表示一个maping, f: X -> Y, 也就是一个function,其中该函数是injective(就是我们所说的单射函数,每个Y只有唯一的X对应,反之亦然)和structure-preserving (结构保存,比如在X所属的空间上X1 < X2,那么映射后在Y所属空间上同理 Y1 < Y2)。那么对于word embedding,就是将单词word映射到另外一个空间,其中这个映射具有injective和structure-preserving的特点。

通俗的翻译可以认为是单词嵌入,就是把X所属空间的单词映射为到Y空间的多维向量,那么该多维向量相当于嵌入到Y所属空间中,一个萝卜一个坑。

word embedding,就是找到一个映射或者函数,生成在一个新的空间上的表达,该表达就是word representation。

推广开来,还有image embedding, video embedding, 都是一种将源数据映射到另外一个空间


word embedding的意思是:给出一个文档,文档就是一个单词序列比如 “A B A C B F G”, 希望对文档中每个不同的单词都得到一个对应的向量(往往是低维向量)表示。
比如,对于这样的“A B A C B F G”的一个序列,也许我们最后能得到:A对应的向量为[0.1 0.6 -0.5],B对应的向量为[-0.2 0.9 0.7] (此处的数值只用于示意)

之所以希望把每个单词变成一个向量,目的还是为了方便计算,比如“求单词A的同义词”,就可以通过“求与单词A在cos距离下最相似的向量”来做到。

word embedding不是一个新的topic,很早就已经有人做了,比如bengio的paper“Neural probabilistic language models”,这其实还不算最早,更早的时候,Hinton就已经提出了distributed representation的概念“Learning distributed representations of concepts”(只不过不是用在word embedding上面) ,AAAI2015的时候问过Hinton怎么看google的word2vec,他说自己20年前就已经搞过了,哈哈,估计指的就是这篇paper。

总之,常见的word embedding方法就是先从文本中为每个单词构造一组features,然后对这组feature做distributed representations,哈哈,相比于传统的distributed representations,区别就是多了一步(先从文档中为每个单词构造一组feature)。

既然word embedding是一个老的topic,为什么会火呢?原因是Tomas Mikolov在Google的时候发的这两篇paper:“Efficient Estimation of Word Representations in Vector Space”、“Distributed Representations of Words and Phrases and their Compositionality”。

这两篇paper中提出了一个word2vec的工具包,里面包含了几种word embedding的方法,这些方法有两个特点。一个特点是速度快,另一个特点是得到的embedding vectors具备analogy性质。analogy性质类似于“A-B=C-D”这样的结构,举例说明:“北京-中国 = 巴黎-法国”。Tomas Mikolov认为具备这样的性质,则说明得到的embedding vectors性质非常好,能够model到语义。

这两篇paper是2013年的工作,至今(2015.8),这两篇paper的引用量早已经超好几百,足以看出其影响力很大。当然,word embedding的方案还有很多,常见的word embedding的方法有:
1. Distributed Representations of Words and Phrases and their Compositionality
2. Efficient Estimation of Word Representations in Vector Space
3. GloVe Global Vectors forWord Representation
4. Neural probabilistic language models
5. Natural language processing (almost) from scratch
6. Learning word embeddings efficiently with noise contrastive estimation
7. A scalable hierarchical distributed language model
8. Three new graphical models for statistical language modelling
9. Improving word representations via global context and multiple word prototypes

word2vec中的模型至今(2015.8)还是存在不少未解之谜,因此就有不少papers尝试去解释其中一些谜团,或者建立其与其他模型之间的联系,下面是paper list
1. Neural Word Embeddings as Implicit Matrix Factorization
2. Linguistic Regularities in Sparse and Explicit Word Representation
3. Random Walks on Context Spaces Towards an Explanation of the Mysteries of Semantic Word Embeddings
4. word2vec Explained Deriving Mikolov et al.’s Negative Sampling Word Embedding Method
5. Linking GloVe with word2vec
6. Word Embedding Revisited: A New Representation Learning and Explicit Matrix Factorization Perspective


词嵌入最粗浅的理解

o 词映射到低维连续向量(如图)

cat: (-0.065, -0.035, 0.019,-0.026, 0.085,…)

dog: (-0.019, -0.076, 0.044,0.021,0.095,…)

table: (0.027, 0.013, 0.006, -0.023,0.014, …)

o 相似词映射到相似方向 -- 语义相似性被编码了

o Cosine相似度衡量方向

&amp;lt;img src=&quot;https://pic2.zhimg.com/1cd37c9bac3b7503801d5a812d1a1b01_b.png&quot; data-rawwidth=&quot;502&quot; data-rawheight=&quot;645&quot; class=&quot;origin_image zh-lightbox-thumb&quot; width=&quot;502&quot; data-original=&quot;https://pic2.zhimg.com/1cd37c9bac3b7503801d5a812d1a1b01_r.png&quot;&amp;gt;

词嵌入可以做类比题 o v(“国王”) – v(“王后”) ≈ v(“男”) – v(“女”) o v(“英国”) + v(“首都”) ≈ v(“伦敦”) o 反映出语义空间中的线性关系 o词嵌入编码了语义空间中的线性关系, 向量的不同部分对应不同的语义 o 质疑:然而并没有什么x用? o 两个句子: A含“英国”,“首都”,不含“伦敦”;B含“伦敦” o 所有词的词向量的和表示句子 o 两个句子仍会比较相似

相似词映射到相似方向:为什么 o 基本假设:“相似”词的邻居词分布类似 o 倒推:两个词邻居词分布类似 → 两个词语义相近 o宠物主人 喂食 蹭 喵 o 宠物主人 喂食 咬 汪 o v(“猫”)≈v(“狗”) o Apple: tree red growth design music companyengineering executiveov(“apple”)≈v(“orange”), v(“apple”)≈v(“microsoft”)

词嵌入的优点 传统one-hot编码: “天气”: (1,0,0…,0),“气候”: (0,1,0,…0)权力/的/游戏: (1,0,0,1,1,0,0, …) 冰/与/火/之/歌: (0,1,1,0,0,1,1,…) o 维度高(几千–几万维稀疏向量),数据稀疏 o 没有编码不同词之间的语义相似性o 难以做模糊匹配 词嵌入: o 维度低(100 – 500维), 连续向量,方便机器学习模型处理 o 无监督学习,容易获得大语料 o 天然有聚类后的效果 o 一个向量可以编码一词多义 (歧义的问题需另外处理) o 罕见词也可以学到不错的表示:“风姿绰约” ≈“漂亮”


Word2vec 简介

o Mikolov 2013, DistributedRepresentations of Words and Phrases and their Compositionality

o 使用最广泛的词嵌入方法

o 速度快,效果好,容易扩展

o 原因:简单(Less ismore)

Word2vec 模型

o 回归连结函数:

&amp;lt;img src=&quot;https://pic2.zhimg.com/3b23a444f87f18cda108ec352c0f25bd_b.png&quot; data-rawwidth=&quot;537&quot; data-rawheight=&quot;121&quot; class=&quot;origin_image zh-lightbox-thumb&quot; width=&quot;537&quot; data-original=&quot;https://pic2.zhimg.com/3b23a444f87f18cda108ec352c0f25bd_r.png&quot;&amp;gt;

o P(w_k|w_i) \propto \exp(\tilde{v}_{w_k}^T v_{w_i} ) (分母是归一化项,可暂时忽略)

o \tilde{v}_{w_k}v_{w_i} 方向相似: 预测的P(w_k|w_i)

方向不同: 预测的概率小

o w_k经常出现在w_i周围,P(w_k|w_i) 大,驱使\tilde{v}_{w_k}v_{w_i} 指向相似方向

o \tilde{v}_{w_i}v_{w_i} 两套词向量,使用时只保留一套

o 没有耗时的矩阵乘,只留一个softmax变换,所以效率高

o 优化用随机梯度递降,罕见词不会主导优化目标

o 罕见词的统计数据噪音(随机性)很大;常用词的统计数据比较稳定,偏差很小

o 与之相对,基于矩阵分解的算法经常被罕见词主导优化目标,导致overfit噪音



原创粉丝点击