embedding 订阅
embedding,英语单词,主要用作名词、动词,作名词时译为“记者随军”,作动词时译为“把(物体)嵌入;派遣(战地记者等);使(观点)深深植入;嵌进(短语);插入(代码)(embed 的现在分词)”。 [1] 展开全文
embedding,英语单词,主要用作名词、动词,作名词时译为“记者随军”,作动词时译为“把(物体)嵌入;派遣(战地记者等);使(观点)深深植入;嵌进(短语);插入(代码)(embed 的现在分词)”。 [1]
信息
外文名
embedding
美式发音
[ɪm'bedɪŋ]
词    性
名词、动词
英式发音
[ɪm'bedɪŋ]
embedding单词用法
柯林斯英汉双解大词典embedding /ɪmˈbɛdɪŋ/1.N the practice of assigning or being assigned a journalist to accompany an active military unit 记者随军 [1] 
收起全文
精华内容
下载资源
问答
  • embedding

    2021-04-09 14:05:44
    当前主流的推荐系统中,embedding 无处不在,从一定意义上可以说,把 embedding 做好了,整个推荐系统的一个关键难题就攻克了。因此,本文总结了移动腾讯网推荐系统中的 embedding 技术实践,力图达到娱人娱己的目的...

    当前主流的推荐系统中,embedding 无处不在,从一定意义上可以说,把 embedding 做好了,整个推荐系统的一个关键难题就攻克了。因此,本文总结了移动腾讯网推荐系统中的 embedding 技术实践,力图达到娱人娱己的目的。

    什么是 embedding

    embedding 其实就是一种稠密向量的表示形式。在 embedding 大行其道之前 onehot 才是最靓的仔。如果和我们比较熟悉的 oneHot 对比起来理解,顿时会发现 embedding 这个玄里玄乎的概念,实际上 so easy。

    直观上看 embedding 相当于是对 oneHot 做了平滑,而 oneHot 相当于是对 embedding 做了 max pooling

    图片

    比如 RGB(三原色,red,green,blue)任何颜色都可以用一个 RGB 向量来表示,其每一维度都有明确的物理含义(和一个具体的物理量相对应)。当然 RGB 这个例子比较特殊,和我们一般意义的 embedding,还不一样,因为 RGB 的特殊性就在,他的每一维度都是事先规定好的,所以解释性很强。而一般意义的 embedding 则是神经网络倒数第二层的参数权重,只具有整体意义和相对意义,不具备局部意义和绝对含义,这与 embedding 的产生过程有关,任何 embedding 一开始都是一个随机数,然后随着优化算法,不断迭代更新,最后网络收敛停止迭代的时候,网络各个层的参数就相对固化,得到隐层权重表(此时就相当于得到了我们想要的 embedding),然后在通过查表可以单独查看每个元素的 embedding。

    图片

    embedding 发展大事记

    从 1986 年 Hinton,提出 embedding 的概念。到出现第一个在工业上取得不错结果的模型---word2vec,先驱们经历了勇敢的尝试,探索,在此向大神致敬。

    MF 矩阵分解,已经隐约看到了 embedding 的影子,此时 embedding 还是一种经验感觉的模糊存在,没有人旗帜鲜明的提出这个概念,属于是 embedding 诞生的前夜。

    毫不夸张的说 word2vec 是 embedding 界开天辟地的大事件,从这之后一切事物都可 embedding 了,在这之后的任何 embedding 都能看到 word2vec 的影子。随着 item2vec,wide and weep 和 youtube 等各种算法的提出,embedding 也迅速的用到了特征工程,画像构建召回排序等方面。而 faiss 作为专业的向量近邻检索工具则解决了向量召回在工程上的最后一公里的问题。

    图片

    embedding 作为一种新思想,他的意义包含以下几个方面:

    • embedding 表示,把自然语言转化为一串数字,从此自然语言可以计算;

    • embedding 替代 oneHot 极大的降低了特征的维度(天下人苦 oneHot 久矣);

    • embedding 替代协同矩阵,极大地降低了计算复杂度。

    图片

     

    item embedding

    在移动腾讯网的推荐系统中,由于我们的 item 主要是图文,所以 item 的向量化,实际就是一个文本和图片向量化的过程。文本 embedding 的核心理论还是 word2vec 相关理论的衍生

    图片

    基于词向量的固定表征:word2vec、fastText、glove 基于词向量的动态表征:elmo、GPT、bert。

    动态词向量相较于静态词向量,更加充分利用了上下文信息,所以可以解决一词多义的问题。在工程实践上其优越性也得到了证明(BERT 在多个 NLP 任务中也表现优异)。

    图片

    img  embedding

    由于我们做的是图文推荐,因此图片作为文章的门面特征,对推荐也很重要,可以通过 resnet 得到图片的向量,还可以通过 image caption  得到对一张图片的中文描述,对于娱乐类的新闻,还可以利用 facenet 识别出组图中,哪一张包含明星,对于动漫类类的新闻可以利用 OCR 识别出漫画里的文字,对于年龄,性别有明显倾向的场景还可以利用 resnet 改变图片的风格。

    对于 CNN 结构来说,不同层级的神经元学习到了不同类型的图像特征,由底向上特征形成层级结构,对人脸识别任务,训练好网络后,把每层神经元学习到的特征可视化,肉眼看一看每层学到了啥特征,你会看到最底层的神经元学到的是线段等特征,图示的第二个隐层学到的是人脸五官的轮廓,第三层学到的是人脸的轮廓,通过三步形成了特征的层级结构,越是底层的特征越是所有不论什么领域的图像都会具备的比如边角线弧线等底层基础特征,越往上抽取出的特征越与手头任务相关。

    正因为此,所以预训练好的网络参数,尤其是底层的网络参数抽取出特征跟具体任务越无关,越具备任务的通用性,所以这是为何一般用底层预训练好的参数初始化新任务网络参数的原因。而高层特征跟任务关联较大,实际可以不用使用,或者采用 Fine-tuning 用新数据集清洗掉高层无关的特征抽取器

    图片

    user embeding

    为了使新闻和用户可以在相同的向量空间下做运算,我们对对用户也做了 embedding,前期主要是从用户画像中筛选出一些在排序模型中重要性较大的特征来做向量化(比如通过特征重要度分析,发现标签(tag),媒体号(mid),一级分类(cat1),二级分类(cat2),主题(topic)等特征对于用户是否点击某篇文章的影响是最大的)。中期使用了更多特征,模型采用了 DSSM(确保 user 和 item 在同一向量空间),目前则是利用 bert+lstm 对用户的行为序列进行了建模

    基于 embedding 的召回

    得到 item,user 向量后,就可以做各种基于向量的召回了,从 embedding 本身的使用方式上看,大致可以分成以下几种召回方式。我们的召回实践多数用的单 embedding,少量用到了多 embedding。

    图片

    embedding 的基础用法——i2i 召回算法

    单纯使用 fasttext+faiss 就可以实现好几路召回算法,比如 :

    iten2vec,media2vec,tag2vec,loc2vec,title2vec。

    tag2vec 就是利用词向量去做召回,比如可以用文章的标签向量表示文章的向量,如果一个文章有 4 个 tag(keywords: "蒋凡;离婚;张大奕;网红张大奕")我们的经验是取前 3 个 tag,做等权重向量相加,效果最好。当然了这不是唯一的做法。关于 embedding 向量的用法有很多种比如,等权重相加,加权相加,取平均,取最大等。

    得到文章向量之后就是典型的 item2item 的计算过程了,利用 faiss 计算每篇文章的相似文章,比如为每一篇文章查询询出 1000 篇候选文章后,按相似度作一个截断,比如 cosin sim<0.6 舍去,对余下的文章,再利用文章的其他特征比如热度,CTR,新鲜度作一个加权,一路最简单的 tag2vec 召回就诞生了。

    其他召回和这个套路类似,就是训练 embedding 向量的时候,略有差异。tag2vec 是训练中文词语的向量,而 item2vec 是训练文章 ID(aid)所对应的向量,media2vec 训练的是文章的作者 ID(mid)所对应的向量,loc2vec 是训练地域名称所对应的向量,title2vec 是用 LSTM 训练得到的文章标题向量,doc2vec 是用 bert 计算出的文章正文(或者摘要)的向量。entity2vec 是利用我们自己构建的知识图谱通过 transE 得到的

    图片

    u2i 召回算法初步

    u2i 召回算法实现了,uese2vec,word2vec 个性化,crosstag,DSSM 个性化等召回算法;user2vec 是拿用户的 tag 向量和文章的 tag 向量求相似度,做的召回;DSSM 个性化是拿用户的 DSSM 向量和文章的 DSSM 向量求相似度,做的召回;crosstag 相当于多个 user2vec,需要把用户的 tag 按类别进行统计,每个类取 K 个 tag,共获取 m 组 tag,然后各组分别做 user2vec,最后汇总得到用户的推荐列表。

    u2i 召回算法进阶

    uese2vec 是在做召回的初级阶段,做的一些朴素的尝试,简单暴力见效快,存储压力大。每个 user 都存储一个推荐列表,在产品初期 DAU 不多时,矛盾还不明显,随着 DAU 不断提升,存储问题日益严重,这迫使我们想办法改变现状,可行的策略有两条,一个是把离线提前计算再存储转为线上即时计算不存储,另一个是把按人推荐转化为分群推荐。两种方法我们都做了实践。

    分群召回流程大体如下:

    图片

    分群推荐我们尝试了簇召回,群画像召回,LSTM 分群,DSSM 分群,bnb 分群,增量聚类,动态规则聚类。

    簇召回就是先把所有用户的 tag 向量用聚类算法(如 minibatch-kmeans)聚成若干个簇(比如 500 个,根据肘点法确定),然后保存下簇标签,簇中心,每个用户所属的簇(一个用户可以隶属于一个簇或者多个簇)。得到用户所在的簇后,有两种做法,一种是根据实时点击日志,在簇内做实时 CF,也就是在簇内把点击过的新闻相互推。另一种做法是离线定时计算各个簇中心和候选新闻的相似度,然后和到每个簇的候选集。从实验效果来看簇内做实时 CF 效果要好一些。

    群画像召回是先把用户分群,然后把同一个群里的用户画像全部抽取出来,然后融合为一个群画像,相当于把这一群人合成了一个人,然后对于群画像,再使用和单个用户画像类似的个性化召回。

    LSTM 分群和簇召回类似,不过用户的向量是通过用户最近点击文章的 m 篇文章的 bert 向量(tag2vec 向量亦可)送入 LSTM 得到用户的向量,剩下的步骤和簇召回类似,该算法有一定提升但是计算速度慢,很难铺量。

    DSSM 分群,是把用户画像送入 DSSM,得到一个用户 64 维的向量,把文章画像送入 DSSM,得到一个文章的 64 维的向量,剩下的步骤和簇召回类似。该算法有提升显著,已经铺量使用。

    bnb 分群是借鉴 airbn(爱彼迎)公布的房源推荐算法,把文章的多个特征的 embedding(tag,topic,cat)拼接成一个向量,类似得到文章的向量。剩下的步骤和簇召回类似,该算法有一定提升,不十分显著。

    增量聚类

    增量聚类就是对文章或用户聚完类后,很长一段时间聚类中心,保持不变,用户和类中心的关系可以是变化的,比如一个用户可能今天属于这个簇,明天属于另一个簇。这样的好处是,同一个簇标签的含义长期保持不变,便于排序层更好的学习到这个特征。该算法亦有显著提升,已铺量使用。

    图片

    主要步骤如下

    1. 利用聚类算法预聚类,以 Kmeans 为例

    2. 保存预聚类的聚类中心 C 和类标签 L

    3. 对于新增数据点 Xnew,计算其到各个聚类中心 Ci 的距离

    4. 把新增数据点 Xnew 分到距离其最近的聚类中心 Ci,所属的类别 Li

    5. 在业务低峰期全量更新每个类的聚类中心,以消除增量聚类可能引入的局部偏差,以提高系统的准确性

    动态规则聚类

    根据用户的画像,将用户聚成若个类,然后再根据类大小,将类大小小于一定阈值的类合并到与其最相似的类,经过多次迭代后聚类过程完成。该算法效率高,CTR 提升约 3%。

    主要步骤如下:

    1. 处理用户画像数据,得到每个用户最感兴趣的 K 个兴趣点

    2. 把这 K 个兴趣点按照权重大小,组合成一个兴趣标签

    3. 如果存在相应的聚类标签则直接加入该类,否则创建一个新的聚类标签

    4. 全部数据遍历完成后,统计各个聚类标签下的用户数

    5. 如果该类别下的用户数大于阈值,则该聚类标签可以保留,否则该聚类标签需要和其他聚类标签合并

    6. 对于需要合并的聚类标签,首先把属于该类别的用户标签回退一步,即得到该聚类标签下用户的 k-1 个兴趣点组成的兴趣标签,然后重复 3-5 的过程,最好得到一个类大小相对均衡的聚类结果

    图片

    embedding 召回算法--其他

    这个过程主要是用 DNN 类的算法做一些召回,比如 CNN,attention,YouTube 等;CNN 召回主要是用于图文相关召回,希望把文章的 title,tag,abstract 合成为一个向量做召回;attention 主要是把文章信息和图片信息做了融合。

    YouTube 是利用 embedding 特征做推荐的开山之作,由于名声比较大,我们还是复用了他的网络结构,只不过在使用的特征上稍有差别。从一个 embedding 主义者的角度看,他的典型特点是把所有的特征(无论离散连续,单值多值)全部转化为 embedding,然后把各种 embedding 拼接在一起,构成一个一字长蛇阵的向量,然后送入 DNN,最后得到文章的向量。在我们的实践中主要用了 cat1,cat2,mid,topic,kg 等特征的 embedding,来训练。从实践的效果来看,第一版效果不佳,并未达到预期效果,主要是视频推荐和新闻推荐有时效性的差异(一个视频时效性可以很长,因此这个 VID 的 embedding 就可以反复不断地训练,越来越好,而新闻的生命周期则很短,往往是还没来得及曝光就过期了),后续又做了各种优化,效果也不断提升。

    airbnb 主要贡献是在稀疏样本的构造上有所创新,个人感觉 Airbnb 这个操作部分弥补了 YouTube 在新闻推荐领域水土不服的问题。从一个 embedding 主义者的角度看,他的创新点主要有一下两点,一个是分群 embedding,另一个是用户和 item 混合训练。在移动腾讯网的动态规则聚类召回算法中就借鉴了 Airbnb 分群训练 embedding 的思想。

    图片

    在特征工程中,对于离散值,连续值,多值大致有以下几种 embedding 的方法。预先训练的 embedding 特征向量,训练样本大,参数学习更充分。end2end 是通过 embedding 层完成从高维稀疏向量到低维稠密特征向量的转换,优点是端到端,梯度统一,缺点是参数多,收敛速度慢,如果数据量少,参数很难充分训练。

    图片

    不同的深度学习模型中,除了对网络结构的各种优化外,在 embedding 的运算上也进行了各种优化的尝试,个人觉得对网络结构的各种优化本质上也是对 embedding 的运算的优化。

    图片

    embedding 作为一种技术,虽然很流行,但是他也存在一些缺陷,比如增量更新的语义不变性,很难同时包含多个特征,长尾数据难以训练等。

    图片

    针对 embedding 的空间分布影响模型的泛化误差的问题阿里和谷歌先后在 embedding 的表示和结构上进行了各种尝试,其中阿里提出了 residual embedding 的概念,希望把一个向量用中心向量和残差向量的形式去表示,以达到同一类别向量簇内高度聚集的目的。谷歌则希望对 embedding 的编码空间进行优化,简单来说就是为更高频更有效的特征分配更多的编码位置,反之则分配更少的编码位置。

    图片

    embedding 总体来说还是一种很有效的技术,在实践过程中大致经历了以下演进路线:

    图片

    展开全文
  • Embedding

    2020-04-01 20:34:10
    参考:embedding层和全连接层的区别是什么? - Hover的回答 - 知乎 https://www.zhihu.com/question/344209738/answer/843929870 Embedding描述的是一种功能:数据降维和稠密表示(≈向量化),且通常所指的Embedding...

    参考:embedding层和全连接层的区别是什么? - Hover的回答 - 知乎
    https://www.zhihu.com/question/344209738/answer/843929870

    Embedding描述的是一种功能:数据降维和稠密表示(≈向量化),且通常所指的Embedding是中间的产物,为了方便后面的处理。

    Embedding的目的是进行数据的降维和向量化,比如图像用CNN卷了之后也可以叫做Embedding,Auto-Encoder里面前面的那一部分也可以叫做Embedding,LSTM可以视作将状态Embedding等等。

    展开全文
  • EMbedding

    2018-08-15 09:29:00
    FNN模型:非端到端 输入 --> 特征onehot --->FM 模型--->输出每个特征权重及因子值 ----> 输入神经网络 ----> 输出每个预测值 此为一个embdding模型。其中的 fm模型实现了...NLP中的embedding: ...

      FNN模型:非端到端

    输入 --> 特征onehot --->FM 模型--->输出每个特征权重及因子值  ----> 输入神经网络  ----> 输出每个预测值  

    此为一个embdding模型。其中的 fm模型实现了embedding过程。他将大量的onehot之后的特征缩短为少量特征。然后输入另一个模型中。

      

    NLP中的embedding:       https://www.cnblogs.com/bonelee/p/7904495.html

    大量单词 ---> onehot --->word2wec ---> 词向量  --->  输入神经网络 --->输出预测值 

     

    神经网络中embedding层作用——本质就是word2vec,数据降维,同时可以很方便计算同义词(各个word之间的距离),底层实现是2-gram(词频)+神经网络

     

    转载于:https://www.cnblogs.com/zhangbojiangfeng/p/9479515.html

    展开全文
  • 深度学习中Embedding层有什么用?

    万次阅读 多人点赞 2017-09-05 10:57:14
    在深度学习实验中经常会遇...比如 Keras中文文档中对嵌入层 Embedding的介绍除了一句 “*嵌入层将正整数(下标)转换为具有固定大小的向量*”之外就不愿做过多的解释。那么我们为什么要使用嵌入层 Embedding呢?

    2019年03月24日15:23:32更新:
    由于CSDN图片经常显示不出来,本文最新链接请点击:https://fuhailin.github.io/Embedding/
    博主所有博客写作平台已迁移至:https://fuhailin.github.io/ ,欢迎收藏关注。


    在这里插入图片描述

    这篇博客翻译自国外的深度学习系列文章的第四篇,想查看其他文章请点击下面的链接,人工翻译也是劳动,如果你觉得有用请打赏,转载请打赏:

    1. Setting up AWS & Image Recognition
    2. Convolutional Neural Networks
    3. More on CNNs & Handling Overfitting

    在深度学习实验中经常会遇Embedding层,然而网络上的介绍可谓是相当含糊。比如 Keras中文文档中对嵌入层 Embedding的介绍除了一句 “嵌入层将正整数(下标)转换为具有固定大小的向量”之外就不愿做过多的解释。那么我们为什么要使用嵌入层 Embedding呢? 主要有这两大原因:

    1. 使用One-hot 方法编码的向量会很高维也很稀疏。假设我们在做自然语言处理(NLP)中遇到了一个包含2000个词的字典,当时用One-hot编码时,每一个词会被一个包含2000个整数的向量来表示,其中1999个数字是0,要是我的字典再大一点的话这种方法的计算效率岂不是大打折扣?

    2. 训练神经网络的过程中,每个嵌入的向量都会得到更新。如果你看到了博客上面的图片你就会发现在多维空间中词与词之间有多少相似性,这使我们能可视化的了解词语之间的关系,不仅仅是词语,任何能通过嵌入层 Embedding 转换成向量的内容都可以这样做。

    上面说的概念可能还有点含糊. 那我们就举个栗子看看嵌入层 Embedding 对下面的句子做了什么:)。Embedding的概念来自于word embeddings,如果您有兴趣阅读更多内容,可以查询 word2vec

    “deep learning is very deep”

    使用嵌入层embedding 的第一步是通过索引对该句子进行编码,这里我们给每一个不同的句子分配一个索引,上面的句子就会变成这样:

    1 2 3 4 1

    接下来会创建嵌入矩阵,我们要决定每一个索引需要分配多少个‘潜在因子’,这大体上意味着我们想要多长的向量,通常使用的情况是长度分配为32和50。在这篇博客中,为了保持文章可读性这里为每个索引指定6个潜在因子。嵌入矩阵就会变成这样:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hA09OczB-1615965508624)(https://cdn-images-1.medium.com/max/1000/1*Di85w_0UTc6C3ilk5_LEgg.png)]

    这样,我们就可以使用嵌入矩阵来而不是庞大的one-hot编码向量来保持每个向量更小。简而言之,嵌入层embedding在这里做的就是把单词“deep”用向量[.32, .02, .48, .21, .56, .15]来表达。然而并不是每一个单词都会被一个向量来代替,而是被替换为用于查找嵌入矩阵中向量的索引。其次这种方法面对大数据时也可有效计算。由于在深度神经网络的训练过程中嵌入向量也会被更新,我们就可以探索在高维空间中哪些词语之间具有彼此相似性,再通过使用t-SNE 这样的降维技术就可以将这些相似性可视化。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ydoX5Rjd-1615965508625)(https://cdn-images-1.medium.com/max/1000/1*m8Ahpl-lpVgm16CC-INGuw.png)]


    Not Just Word Embeddings

    These previous examples showed that word embeddings are very important in the world of Natural Language Processing. They allow us to capture relationships in language that are very difficult to capture otherwise. However, embedding layers can be used to embed many more things than just words. In my current research project I am using embedding layers to embed online user behavior. In this case I am assigning indices to user behavior like ‘page view on page type X on portal Y’ or ‘scrolled X pixels’. These indices are then used for constructing a sequence of user behavior.

    In a comparison of ‘traditional’ machine learning models (SVM, Random Forest, Gradient Boosted Trees) with deep learning models (deep neural networks, recurrent neural networks) I found that this embedding approach worked very well for deep neural networks.

    The ‘traditional’ machine learning models rely on a tabular input that is feature engineered. This means that we, as researchers, decide what gets turned into a feature. In these cases features could be: amount of homepages visited, amount of searches done, total amount of pixels scrolled. However, it is very difficult to capture the spatial (time) dimension when doing feature-engineering. By using deep learning and embedding layers we can efficiently capture this spatial dimension by supplying a sequence of user behavior (as indices) as input for the model.

    In my research the Recurrent Neural Network with Gated Recurrent Unit/Long-Short Term Memory performed best. The results were very close. From the ‘traditional’ feature engineered models Gradient Boosted Trees performed best. I will write a blog post about this research in more detail in the future. I think my next blog post will explore Recurrent Neural Networks in more detail.

    Other research has explored the use of embedding layers to encode student behavior in MOOCs (Piech et al., 2016) and users’ path through an online fashion store (Tamhane et al., 2017).


    Recommender Systems

    Embedding layers can even be used to deal with the sparse matrix problem in recommender systems. Since the deep learning course (fast.ai) uses recommender systems to introduce embedding layers I want to explore them here as well.

    Recommender systems are being used everywhere and you are probably being influenced by them every day. The most common examples are Amazon’s product recommendation and Netflix’s program recommendation systems. Netflix actually held a $1,000,000 challenge to find the best collaborative filtering algorithm for their recommender system. You can see a visualization of one of these models here.

    There are two main types of recommender systems and it is important to distinguish between the two.

    1. Content-based filtering. This type of filtering is based on data about the item/product. For example, we have our users fill out a survey on what movies they like. If they say that they like sci-fi movies we recommend them sci-fi movies. In this case al lot of meta-information has to be available for all items.
    2. Collaborative filtering: Let’s find other people like you, see what they liked and assume you like the same things. People like you = people who rated movies that you watched in a similar way. In a large dataset this has proven to work a lot better than the meta-data approach. Essentially asking people about their behavior is less good compared to looking at their actual behavior. Discussing this further is something for the psychologists among us.

    In order to solve this problem we can create a huge matrix of the ratings of all users against all movies. However, in many cases this will create an extremely sparse matrix. Just think of your Netflix account. What percentage of their total supply of series and movies have you watched? It’s probably a pretty small percentage. Then, through gradient descent we can train a neural network to predict how high each user would rate each movie. Let me know if you would like to know more about the use of deep learning in recommender systems and we can explore it further together. In conclusion, embedding layers are amazing and should not be overlooked.

    If you liked this posts be sure to recommend it so others can see it. You can also follow this profile to keep up with my process in the Fast AI course. See you there!

    References

    Piech, C., Bassen, J., Huang, J., Ganguli, S., Sahami, M., Guibas, L. J., & Sohl-Dickstein, J. (2015). Deep knowledge tracing. In Advances in Neural Information Processing Systems (pp. 505–513).

    Tamhane, A., Arora, S., & Warrier, D. (2017, May). Modeling Contextual Changes in User Behaviour in Fashion e-Commerce. In Pacific-Asia Conference on Knowledge Discovery and Data Mining (pp. 539–550). Springer, Cham.

    Embedding layers in keras

    嵌入层embedding用在网络的开始层将你的输入转换成向量,所以当使用 Embedding前应首先判断你的数据是否有必要转换成向量。如果你有categorical数据或者数据仅仅包含整数(像一个字典一样具有固定的数量)你可以尝试下Embedding 层。
    如果你的数据是多维的你可以对每个输入共享嵌入层或尝试单独的嵌入层。

    from keras.layers.embeddings import Embedding
    
    Embedding(input_dim, output_dim, embeddings_initializer='uniform', embeddings_regularizer=None, activity_regularizer=None, embeddings_constraint=None, mask_zero=False, input_length=None)
    

    -The first value of the Embedding constructor is the range of values in the input. In the example it’s 2 because we give a binary vector as input.

    • The second value is the target dimension.
    • The third is the length of the vectors we give.
    • input_dim: int >= 0. Size of the vocabulary, ie. 1+maximum integer
      index occuring in the input data.

    本文译自:https://medium.com/towards-data-science/deep-learning-4-embedding-layers-f9a02d55ac12

    How does embedding work? An example demonstrates best what is going on.

    Assume you have a sparse vector [0,1,0,1,1,0,0] of dimension seven. You can turn it into a non-sparse 2d vector like so:

    model = Sequential()
    model.add(Embedding(2, 2, input_length=7))
    model.compile('rmsprop', 'mse')
    model.predict(np.array([[0,1,0,1,1,0,0]]))
    
    array([[[ 0.03005414, -0.02224021],
            [ 0.03396987, -0.00576888],
            [ 0.03005414, -0.02224021],
            [ 0.03396987, -0.00576888],
            [ 0.03396987, -0.00576888],
            [ 0.03005414, -0.02224021],
            [ 0.03005414, -0.02224021]]], dtype=float32)
    

    Where do these numbers come from? It’s a simple map from the given range to a 2d space:

    model.layers[0].W.get_value()
    
    array([[ 0.03005414, -0.02224021],
           [ 0.03396987, -0.00576888]], dtype=float32)
    

    The 0-value is mapped to the first index and the 1-value to the second as can be seen by comparing the two arrays. The first value of the Embedding constructor is the range of values in the input. In the example it’s 2 because we give a binary vector as input. The second value is the target dimension. The third is the length of the vectors we give.
    So, there is nothing magical in this, merely a mapping from integers to floats.

    Now back to our ‘shining’ detection. The training data looks like a sequences of bits:

    X
    
    array([[ 0.,  1.,  1.,  1.,  0.,  1.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,
             1.,  0.,  0.,  0.,  0.,  0.],
           [ 0.,  1.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,
             0.,  0.,  0.,  0.,  0.,  0.],
           [ 0.,  1.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,
             0.,  0.,  1.,  0.,  1.,  0.],
           [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,
             0.,  1.,  0.,  1.,  0.,  0.],
           [ 0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  1.,  0.,  1.,  0.,  0.,
             0.,  0.,  0.,  0.,  0.,  1.]])
    

    If you want to use the embedding it means that the output of the embedding layer will have dimension (5, 19, 10). This works well with LSTM or GRU (see below) but if you want a binary classifier you need to flatten this to (5, 19*10):

    model = Sequential()
    model.add(Embedding(3, 10, input_length= X.shape[1] ))
    model.add(Flatten())
    model.add(Dense(1, activation='sigmoid'))
    model.compile(loss='binary_crossentropy', optimizer='rmsprop')
    model.fit(X, y=y, batch_size=200, nb_epoch=700, verbose=0, validation_split=0.2, show_accuracy=True, shuffle=True)
    

    It detects ‘shining’ flawlessly:

    model.predict(X)
    
    array([[  1.00000000e+00],
           [  8.39483363e-08],
           [  9.71878720e-08],
           [  7.35597965e-08],
           [  9.91844118e-01]], dtype=float32)
    

    An LSTM layer has historical memory and so the dimension outputted by the embedding works in this case, no need to flatten things:

    model = Sequential()
     
    model.add(Embedding(vocab_size, 10))
    model.add(LSTM(5))
    model.add(Dense(1, activation='sigmoid'))
    model.compile(loss='binary_crossentropy', optimizer='rmsprop')
    model.fit(X, y=y,  nb_epoch=500, verbose=0, validation_split=0.2, show_accuracy=True, shuffle=True)
    

    Obviously, it predicts things as well:

    model.predict(X)
    
    array([[ 0.96855599],
           [ 0.01917232],
           [ 0.01917362],
           [ 0.01917258],
           [ 0.02341695]], dtype=float32)
    

    本文译自:http://www.orbifold.net/default/2017/01/10/embedding-and-tokenizer-in-keras/

    展开全文
  • keras:3)Embedding层详解

    万次阅读 多人点赞 2017-08-26 08:54:04
    详解Keras的Embedding
  • 1.graph embedding指图(CS领域的图)的embedding. 2.word embedding指nlp里的词向量 3.image embedding 车牌文字没有语义,所以单纯把文字embedding应该无太大意义。 图像检索领域,特征领域以及 ...
  • embedding可以描述为Many models of source code are based on learned representation called embedding。 word embedding可以看作为word vector contextual embedding可以表述为it captures the context, since ...
  • embedding constraints

    2021-01-11 04:34:34
    <div><p>Does UMAP currently support specifying any embedding constraints? <p>In the past I've found it useful when doing dimensionality reduction to specify targets for a few key inputs. For ...
  • 本文完全是复制与知乎中的一个问答,因为该作者的确写的很好,所以就直接复制过来了。(本人也只是初级入门小白,感觉...题主问的是embedding的含义,楼上几位的回答都是拿word embedding说了一通,也没解释出embedd...
  • Word Embedding

    2021-03-17 13:45:18
    Day29Word Embedding例子 Word Embedding 例子
  • KG embedding

    2020-12-09 08:54:21
    <div><p>Could you provide the setting of KG embedding modulo? i.e. how can I get E.py&R.py with your train_embedding code. I cannot train it properly with default setting.</p><p>该提问来源于开源...
  • 理解Embedding

    2020-04-06 21:50:11
    理解Embedding
  • Tensorflow Embedding

    2021-03-28 17:46:43
    一、随机初始化Embedding 1.1 原理 Embedding其实就是个lookup table, 通过tf.nn.embedding_lookup()来调用Embedding. 注意:在调用Embedding后,可以考虑使用dropout层。 注意:在Embedding内,可以考虑对提取的...
  • GraphEmbedding Method Model Paper Note DeepWalk [KDD 2014]DeepWalk: Online Learning of Social Representations 【Graph Embedding】DeepWalk:算法原理,实现和应用 LINE [WWW 2015]LINE: Large-...
  • Vertex embedding approaches: LLE, Laplacian Eigenmaps, Graph Factorization, GraRep, HOPE, DNGR, GCN, LINE Graph embedding approaches: Patchy-san, sub2vec (embed subgraphs), WL kernel andDeep WL ...
  • embedding实践

    2020-12-15 09:19:05
    导读:当前主流的推荐系统中,embedding 无处不在,从一定意义上可以说,把 embedding 做好了,整个推荐系统的一个关键难题就攻克了。因此,本文总结了移动腾讯网推荐系统中的 embedding 技术实践,力图达到娱人娱己...
  • WL EMbedding

    2020-12-25 21:38:51
    <div><p>Include a new example directory for WL Embedding try-out</p><p>该提问来源于开源项目:chainer/chainer-chemistry</p></div>
  • embedding

    2021-03-24 21:13:39
    参照:embedding层_万物皆Embedding,从经典的word2vec到深度学习
  • Graph Embedding

    2020-12-01 18:14:00
    <div><p>Good evening, <p>Is it planned to implement the Graph Embedding for this library? Best, Leonid </p><p>该提问来源于开源项目:tensorflow/graphics</p></div>
  • Embedding mirror

    2020-11-22 04:41:30
    <div><p>Small fixes in the tau embedding code, and an option to transform the input muon four-vectors while preserving the polarization of the Z.</p><p>该提问来源于开源项目:cms-sw/cmssw</p></...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,661
精华内容 6,264
热门标签
关键字:

embedding