初识Embedding

zkbhj 发表了文章 • 0 个评论 • 141 次浏览 • 2020-07-23 11:36 • 来自相关话题

什么是embedding?为什么说embedding是深度学习的基本操作?
 

简单来说,embedding就是用一个低维的向量表示一个物体,可以是一个词,或是一个商品,或是一个电影等等。

 
这个embedding向量的性质是能使距离相近的向量对应的物体有相近的含义,比如 Embedding(复仇者联盟)和Embedding(钢铁侠)之间的距离就会很接近,但 Embedding(复仇者联盟)和Embedding(乱世佳人)的距离就会远一些。
 
Embedding在数学上表示一个maping:f:x->y, 也就是一个function。

其中该函数满足两个性质:

injective (单射的):就是我们所说的单射函数,每个X只有唯一的Y对应;
structure-preserving(结构保存):比如在X所属的空间上 x1<=x2,那么映射后在Y所属空间上同理 y1 <= y2 。


那么对于word embedding, 就是找到一个映射(函数)将单词(word)映射到另外一个空间(其中这个映射具有injective和structure-preserving的特点), 生成在一个新的空间上的表达,该表达就是word representation.

举个颜色的例子:

对于颜色,我们可以把它拆成三个特征维度,用这三个维度的组合理论上可以表示任意一种颜色。同理,对于词,我们也可以把它拆成指定数量的特征维度,词表中的每一个词都可以用这些维度组合成的向量来表示,这个就是Word Embedding的含义。

当然,词跟颜色还是有很大的差别的——我们已经知道表示颜色的三个维度有明确对应的物理意义(即RGB),直接使用物理原理就可以知道某一个颜色对应的RGB是多少。但是对于词,我们无法给出每个维度所具备的可解释的意义,也无法直接求出一个词的词向量的值应该是多少。所以我们需要使用语料和模型来训练词向量——把嵌入矩阵当成模型参数的一部分,通过词与词间的共现或上下文关系来优化模型参数,最后得到的矩阵就是词表中所有词的词向量。

这里需要说明的是,有的初学者可能没绕过一个弯,就是“最初的词向量是怎么来的”——其实你只要知道最初的词向量是瞎JB填的就行了。嵌入矩阵最初的参数跟模型参数一样是随机初始化的,然后前向传播计算损失函数,反向传播求嵌入矩阵里各个参数的导数,再梯度下降更新,这个跟一般的模型训练都是一样的。等训练得差不多的时候,嵌入矩阵就是比较准确的词向量矩阵了。

作者:到处挖坑蒋玉成
链接:https://www.zhihu.com/question ... 50109
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
https://www.jianshu.com/p/6c977a9a53de
https://www.zhihu.com/question/38002635
https://zhuanlan.zhihu.com/p/46016518
  查看全部
什么是embedding?为什么说embedding是深度学习的基本操作?
 


简单来说,embedding就是用一个低维的向量表示一个物体,可以是一个词,或是一个商品,或是一个电影等等。


 
这个embedding向量的性质是能使距离相近的向量对应的物体有相近的含义,比如 Embedding(复仇者联盟)和Embedding(钢铁侠)之间的距离就会很接近,但 Embedding(复仇者联盟)和Embedding(乱世佳人)的距离就会远一些。
 
Embedding在数学上表示一个maping:f:x->y, 也就是一个function。

其中该函数满足两个性质:


injective (单射的):就是我们所说的单射函数,每个X只有唯一的Y对应;
structure-preserving(结构保存):比如在X所属的空间上 x1<=x2,那么映射后在Y所属空间上同理 y1 <= y2 。



那么对于word embedding, 就是找到一个映射(函数)将单词(word)映射到另外一个空间(其中这个映射具有injective和structure-preserving的特点), 生成在一个新的空间上的表达,该表达就是word representation.

举个颜色的例子:

对于颜色,我们可以把它拆成三个特征维度,用这三个维度的组合理论上可以表示任意一种颜色。同理,对于词,我们也可以把它拆成指定数量的特征维度,词表中的每一个词都可以用这些维度组合成的向量来表示,这个就是Word Embedding的含义。

当然,词跟颜色还是有很大的差别的——我们已经知道表示颜色的三个维度有明确对应的物理意义(即RGB),直接使用物理原理就可以知道某一个颜色对应的RGB是多少。但是对于词,我们无法给出每个维度所具备的可解释的意义,也无法直接求出一个词的词向量的值应该是多少。所以我们需要使用语料和模型来训练词向量——把嵌入矩阵当成模型参数的一部分,通过词与词间的共现或上下文关系来优化模型参数,最后得到的矩阵就是词表中所有词的词向量。

这里需要说明的是,有的初学者可能没绕过一个弯,就是“最初的词向量是怎么来的”——其实你只要知道最初的词向量是瞎JB填的就行了。嵌入矩阵最初的参数跟模型参数一样是随机初始化的,然后前向传播计算损失函数,反向传播求嵌入矩阵里各个参数的导数,再梯度下降更新,这个跟一般的模型训练都是一样的。等训练得差不多的时候,嵌入矩阵就是比较准确的词向量矩阵了。

作者:到处挖坑蒋玉成
链接:https://www.zhihu.com/question ... 50109
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
https://www.jianshu.com/p/6c977a9a53de
https://www.zhihu.com/question/38002635
https://zhuanlan.zhihu.com/p/46016518
 

《美团机器学习》读书打卡 - 第一部分通用流程

zkbhj 发表了文章 • 0 个评论 • 819 次浏览 • 2019-08-09 10:42 • 来自相关话题

《美团机器学习》读书打卡 - 第一部分通用流程总结脑图如下:
《美团机器学习》读书打卡 - 第一部分通用流程总结脑图如下: