参考:
http://www.sohu.com/a/206922947_390227
https://zhuanlan.zhihu.com/p/27830489

https://www.jianshu.com/p/0bb00eed9c63

https://www.baidu.com/link?url=CwDMHi72fOR8BzSlKAR0_01oYq-Jn79tNdrWrISguElN1w4Ng9DBZhihxCNjrWUBavktHOALF41rzvar191r4SlbKHO_EgiY_dmSYpDoq5C&wd=&eqid=c0fe574e00063f08000000035d11e9c6

https://www.jianshu.com/p/2a76b7d3126b

https://www.baidu.com/link?url=XI4NojXLflTT49Am0pQmaWXoPfqvBqdB1K8nkt6sFX1LRqsVwDyedyyN9vOH76GXquBBTfW7b2DfzYumTwYjaRBl87APzOD0u_YCeu4zWGW&wd=&eqid=c0fe574e00063f08000000035d11e9c6

https://blog.csdn.net/k284213498/article/details/83474972

嵌入(Embedding)

例如,想用将具有三个等级的输入变量表示为二维数据。使用嵌入层,底层自微分引擎(the underlaying automatic differentiation engines,例如Tensorflow或PyTorch)将具有三个等级的输入数据减少为二维数据。

嵌入式数据

输入数据需要用索引表示。这一点可以通过标签编码轻松实现。这是你的嵌入层的输入。
这里有一个简单的例子,在keras中使用嵌入层,点击链接,查看详情:https://github.com/krishnakalyan3/FastAI_Practice/blob/master/notebooks/RecSys.ipynb

最初,权重是随机初始化的,它们使用随机梯度下降得到优化,从而在二维空间中获得良好的数据表示。可以说,当我们有100个等级时,并且想要在50个维度中获得这个数据的表示时,这是一个非常有用的主意。
示例:
原始数据:

标签数据:

独热编码:

嵌入数据:

2.机器学习中的embedding原理及tensorflow 相关API的理解

embedding 算法主要用于处理稀疏特征,应用于NLP、推荐、广告等领域。所以word2vec 只是embbeding 思想的一个应用,而不是全部。

原文地址:https://gshtime.github.io/2018/06/01/tensorflow-embedding-lookup-sparse/
代码地址:git@github.com:gshtime/tensorflow-api.git

embedding原理

常见的特征降维方法主要有PCA、SVD等。
而embedding的主要目的也是对(稀疏)特征进行降维,它降维的方式可以类比为一个全连接层(没有激活函数),通过 embedding 层的权重矩阵计算来降低维度。
假设:

  • feature_num : 原始特征数
  • embedding_size: embedding之后的特征数
  • [feature_num, embedding_size] 权重矩阵shape
  • [m, feature_num] 输入矩阵shape,m为样本数
  • [m, embedding_size] 输出矩阵shape,m为样本数

从id(索引)找到对应的 One-hot encoding ,然后红色的weight就直接对应了输出节点的值(注意这里没有 activation function),也就是对应的embedding向量。

3.Word Embedding的发展和原理简介
https://www.jianshu.com/p/2a76b7d3126b

可以将Word Embedding理解为一种映射,其过程是:将文本空间中的某个word,通过一定的方法,映射或者说嵌入(embedding)到另一个数值向量空间(之所以称之为embedding,是因为这种表示方法往往伴随着一种降维的意思。

1.2 Word Embedding的输入
Word Embedding的输入是原始文本中的一组不重叠的词汇,假设有句子:apple on a apple tree。那么为了便于处理,我们可以将这些词汇放置到一个dictionary里,例如:["apple", "on", "a", "tree"],这个dictionary就可以看作是Word Embedding的一个输入。

1.3 Word Embedding的输出
Word Embedding的输出就是每个word的向量表示。对于上文中的原始输入,假设使用最简单的one hot编码方式,那么每个word都对应了一种数值表示。例如,apple对应的vector就是[1, 0, 0, 0],a对应的vector就是[0, 0, 1, 0],各种机器学习应用可以基于这种word的数值表示来构建各自的模型。当然,这是一种最简单的映射方法,但却足以阐述Word Embedding的意义。下文将介绍常见的Word Embedding的方法和优缺点。

2 Word Embedding的类型
Word Embedding也是有流派的,主流有以下两种:

基于频率的Word Embedding(Frequency based embedding)
基于预测的Word Embedding(Prediction based embedding)

下面分别介绍之。
2.1 基于频率的Word Embedding
基于频率的Word Embedding又可细分为如下几种:

Count Vector
TF-IDF Vector
Co-Occurence Vector

其本质都是基于one-hot表示法的,以频率为主旨的加权方法改进。

代码实现:
https://www.baidu.com/link?url=XI4NojXLflTT49Am0pQmaWXoPfqvBqdB1K8nkt6sFX1LRqsVwDyedyyN9vOH76GXquBBTfW7b2DfzYumTwYjaRBl87APzOD0u_YCeu4zWGW&wd=&eqid=c0fe574e00063f08000000035d11e9c6

Embeding如何理解?的更多相关文章

  1. 理解CSS视觉格式化

    前面的话   CSS视觉格式化这个词可能比较陌生,但说起盒模型可能就恍然大悟了.实际上,盒模型只是CSS视觉格式化的一部分.视觉格式化分为块级和行内两种处理方式.理解视觉格式化,可以确定得到的效果是应 ...

  2. 彻底理解AC多模式匹配算法

    (本文尤其适合遍览网上的讲解而仍百思不得姐的同学) 一.原理 AC自动机首先将模式组记录为Trie字典树的形式,以节点表示不同状态,边上标以字母表中的字符,表示状态的转移.根节点状态记为0状态,表示起 ...

  3. 理解加密算法(三)——创建CA机构,签发证书并开始TLS通信

    接理解加密算法(一)--加密算法分类.理解加密算法(二)--TLS/SSL 1 不安全的TCP通信 普通的TCP通信数据是明文传输的,所以存在数据泄露和被篡改的风险,我们可以写一段测试代码试验一下. ...

  4. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  5. 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念

    一.前言     DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...

  6. 学习AOP之透过Spring的Ioc理解Advisor

    花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...

  7. ThreadLocal简单理解

    在java开源项目的代码中看到一个类里ThreadLocal的属性: private static ThreadLocal<Boolean> clientMode = new Thread ...

  8. JS核心系列:理解 new 的运行机制

    和其他高级语言一样 javascript 中也有 new 运算符,我们知道 new 运算符是用来实例化一个类,从而在内存中分配一个实例对象. 但在 javascript 中,万物皆对象,为什么还要通过 ...

  9. 深入理解JS 执行细节

    javascript从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习JS引擎工作机制之前,我们需要引入几个相关的概念:执行环境栈.全局对象.执行环境.变量对象.活动对象.作用域和作用域链等 ...

随机推荐

  1. 洛谷P1101 单词方阵【DFS】

    给一n \times nn×n的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着 88 个方向的任一方向,同一单词摆放时不再改变方向 ...

  2. 【ABCD组】Scrum meeting 2

    前言 第2次会议在6月14日由组长在教9 405召开. 主要对下一步的工作进行说明安排,时长90min. 主要内容 经会议讨论,由于一些对知识掌握的原因,决定放弃java语言实现系统,改用c#完成此系 ...

  3. 孟晓阳:IT运行监控系统设计与使用心得

    http://www.cn-healthcare.com/article/20160325/content-482138.html

  4. Python 字符串 String 内建函数大全(1)

    关于 Python 的字符串处理相关的方法还是许多的.因为我正在学习 Python,于是就把 Python 中这些混杂的用于 string 的函数总结出来,在自己忘记的时候便于查找,希望对于有相似需求 ...

  5. 拓扑排序---AOV图

    对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中全部顶点排成一个线性序列, 使得图中随意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出如 ...

  6. 优雅的App全然退出方案(没有不论什么内存泄漏隐患)

    在Android开发过程中,特别是界面比較多的情况下,用寻常的退出方式往往是不能全然退出这个应用,网络上也好多各种退出方案.当中一种应该是被广大开发人员採纳使用,也很的清晰方便.就是在Applicat ...

  7. Android开机键失灵启动手机的解决的方法

    问题描写叙述 Android手机的关机键损坏,无法开机. 解决方法 将手机通过USB线链接电脑,进入命令行.找到adb命令所在文件夹.执行例如以下命令: adb reboot 注意:用这样的方法的前提 ...

  8. luogu2431 正妹吃月饼

    题目大意 求一个正整数集合\(K\),使得\(\sum_{k\in K}2^k\in[A,B]\),且\(|K|\)最大.\(A,B\)大小在long long范围内. 思路 \(\sum_{k\in ...

  9. 分享3个Putty配色方案【转】

    本文转载自:https://www.coder4.com/archives/1506 分享3个Putty配色方案 4 Replies 虽然服务器都是Linux的,平时也基本用Linux,但是难免还是要 ...

  10. 架构-Eureka:第一个方法

    ylbtech-架构-Eureka:第一个方法 工程介绍 Spring Cloud 工程目录 model registry-center Servers tzxyfx tzxyfx-provider ...