embedding是指将目标向量化,常用于自然语言处理(如:Word2Vec)。这种思想的意义在于,可以将语义问题转换为数值计算问题,从而使计算机能够便捷处理自然语言问题。如果采用传统的One-hot编码,每个单词之间相互独立,此时词向量之间相互正交,编码无法反映单词之间的关联关系。而embedding可以理解为是将One-hot编码的高维向量,降维到一个较低维度的空间,在这个空间中不同单词之间能够通过向量计算确定关系。比如:北京为[0,1,1],巴黎为[0,0.5,0.5],二者的距离可以简单的用点乘表示为0*0+1*0.5+1*0.5=1。

那么,我们如何得到每个单词的embedding呢?概括来说,就是基于语料库训练一个双层神经网络,得到的权重矩阵即为embedding。注意,这里训练神经网络的目标并不是得到一个可用于预测的模型,而是要得到神经网络中的权重矩阵参数。

在该神经网络中,输入(特征)和输出(标签)都来自于同一语料库。有两种主要的提取输入、输出的方法:CBOW(连续词袋)和Skip-Gram。其中CBOW将与目标词相邻的词作为输入,将目标词作为输出,而Skip-Gram将目标词作为输入,将与目标词相邻的词作为输出。

例如当语料库为一句话:the quick brown fox jumped over the lazy dog.假定我们要预测的目标词为fox,相邻窗口长度定义为左右1个单词时。使用CBOW提取的输入将是[brown, jumped],输出将是[fox]。Skip-Gram则正好相反,输入为[fox],输出为[brown, jumped]。实际应用中,CBOW在小语料库中较为有效,Skip-Gram更适用于大型语料库。

CBOW和Skip-Gram的训练过程并无太大区别,下面以CBOW为例来说明训练得到embedding的过程。下图展示了训练模型的各个要素以及它们之间的逻辑关系,其中最左边的x1k、x2k……xck是模型的输入,对应到上面实例就是[brown, jumped];最右边yj是模型的输出,对应上面实例中的[fox]。关键点在于x1k、x2k……xck以及yj全都是One-hot编码后的向量。对应到实例,可按单词在句子中的位置进行编码,这样brown将编码为[0,0,1,0,0,0,0,0,0],jumped编码为[0,0,0,0,1,0,0,0,0],fox编码为[0,0,0,1,0,0,0,0,0]。


明确了输入和输出数据,那embedding如何获取呢?答案就是图中与隐藏层相连的权重矩阵W(V*N)和W'(N*V),其中V是词库中单词的数量,对于上例而言V=9,N是我们最终希望得到的embedding的维度,这里假设N=5。W(V*N)的每一行或者W'(N*V)的每一列其实就是最终的单词embedding。

假设已经给W(V*N)和W'(N*V)赋好初值,那如何训练得到最终的W(V*N)和W'(N*V)呢?在回答这个问题之前,先简单描述下由输入预测输出的过程:图中xik(i=1,2...,C)均为1*V的one-hot编码向量,C为输入侧单词的数量;W(V*N)是V行N列的矩阵,则xik与W(V*N)相乘将得到一个1*N的向量vi,k(其中i=1,2...,C)。对这C个向量vi,k求算术平均,得到隐藏层输出hi=Σv(i,k)/C,容易知道hi亦为1*N维向量。W'(N*V)是N行V列的矩阵,隐藏层输出hi与W'(N*V)相乘得到预测输出yj',yj'正好也是1*V向量。至此,我们就可以给出训练的目标了,即预测值yj'与实际值yj的误差最小,这个误差可以使用交叉熵。

明确了训练目标,最后就是训练的方法:通常使用yj'与yj间的误差反向传播,即使用梯度下降法迭代法训练得到最终的W(V*N)和W'(N*V)。这两个矩阵就是我们最终要求得的embedding(使用任意一个都行),W(V*N)的每一行就代表对应单词的embedding,W'(N*V)的每一列也代表对应单词的embedding

更加详细的说明,可参考以下相关文献:
斯坦福大学Deep Learning for NLP课堂笔记:https://cs224d.stanford.edu/lecture_notes/notes1.pdf

embedding与word2vec的更多相关文章

  1. Embedding和Word2Vec实战

    在之前的文章中谈到了文本向量化的一些基本原理和概念,本文将介绍Word2Vec的代码实现 https://www.cnblogs.com/dogecheng/p/11470196.html#Word2 ...

  2. Word Embedding与Word2Vec

    http://blog.csdn.net/baimafujinji/article/details/77836142 一.数学上的“嵌入”(Embedding) Embed这个词,英文的释义为, fi ...

  3. 无所不能的Embedding 1 - Word2vec模型详解&代码实现

    word2vec是google 2013年提出的,从大规模语料中训练词向量的模型,在许多场景中都有应用,信息提取相似度计算等等.也是从word2vec开始,embedding在各个领域的应用开始流行, ...

  4. word2vec和word embedding有什么区别?

    word2vec和word embedding有什么区别? 我知道这两个都能将词向量化,但有什么区别?这两个术语的中文是什么? from: https://www.zhihu.com/question ...

  5. 学习笔记CB011:lucene搜索引擎库、IKAnalyzer中文切词工具、检索服务、查询索引、导流、word2vec

    影视剧字幕聊天语料库特点,把影视剧说话内容一句一句以回车换行罗列三千多万条中国话,相邻第二句很可能是第一句最好回答.一个问句有很多种回答,可以根据相关程度以及历史聊天记录所有回答排序,找到最优,是一个 ...

  6. Word Embedding理解

    一直以来感觉好多地方都吧Word Embedding和word2vec混起来一起说,所以导致对这俩的区别不是很清楚. 其实简单说来就是word embedding包含了word2vec,word2ve ...

  7. tensorflow加载embedding模型进行可视化

    1.功能 采用python的gensim模块训练的word2vec模型,然后采用tensorflow读取模型可视化embedding向量 ps:采用C++版本训练的w2v模型,python的gensi ...

  8. PaperWeekly 第五期------从Word2Vec到FastText

    PaperWeekly 第五期------从Word2Vec到FastText 张俊 10 个月前 引 Word2Vec从提出至今,已经成为了深度学习在自然语言处理中的基础部件,大大小小.形形色色的D ...

  9. 无所不能的embedding 3. word2vec->Doc2vec[PV-DM/PV-DBOW]

    这一节我们来聊聊不定长的文本向量,这里我们暂不考虑有监督模型,也就是任务相关的句子表征,只看通用文本向量,根据文本长短有叫sentence2vec, paragraph2vec也有叫doc2vec的. ...

随机推荐

  1. array_multisort以及php中的排序函数

    1. array_multisort(array_column($arr, $key), SORT_DESC, $arr); // 根据二维数组中的某一列对数组进行增序或者降序排列 什么是关联数组呢? ...

  2. 如何开发mis系统--整理

    1.含义: 所谓MIS(管理信息系统--Management Information System)系统,主要指的是进行日常事务操作的系统.这种系统主要用于管理需要的记录,并对记录数据进行相关处理,将 ...

  3. python-爬虫-Beautifulsoup模块

    一 介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你 ...

  4. 剑指offer-栈的压入与弹出

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...

  5. chrome手机模拟器显示尺寸不正确

    存在问题: chrome网页调试器中小屏幕时显示尺寸不正确 原因: 自动调整了dpi,导致不是设计的结果 解决方法: 在<head>中添加如下语句: <meta name=" ...

  6. MYSQL--三大范式

    MYSQL--三大范式 范式简介: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小.目前关系数据库有六 ...

  7. date命令说明

    基本使用格式: date [-d "time-to-display"] +"format-to-display" -d指定要显示的时间,如果不指定默认为当前时间 ...

  8. Web应用的统一异常处理(二十四)

    我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况.Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来 ...

  9. suffix word ard ar arian arium atic ation atory ator out ~3

      1★ ard 不好的人   2★ ar ~的:~人物     1● arian ~人.物     2● arium 地点,场地   3●aster   不怎么样的人     1● ast ~人   ...

  10. ubuntu16.10 安装ibus中文输入法

    安装以下几种常用输入法: IBus拼音:sudo apt-get install ibus-pinyin IBUS五笔:sudo apt-get install ibus-table-wubi 谷歌拼 ...