Embeding如何理解?
参考:
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如何理解?的更多相关文章
- 理解CSS视觉格式化
前面的话 CSS视觉格式化这个词可能比较陌生,但说起盒模型可能就恍然大悟了.实际上,盒模型只是CSS视觉格式化的一部分.视觉格式化分为块级和行内两种处理方式.理解视觉格式化,可以确定得到的效果是应 ...
- 彻底理解AC多模式匹配算法
(本文尤其适合遍览网上的讲解而仍百思不得姐的同学) 一.原理 AC自动机首先将模式组记录为Trie字典树的形式,以节点表示不同状态,边上标以字母表中的字符,表示状态的转移.根节点状态记为0状态,表示起 ...
- 理解加密算法(三)——创建CA机构,签发证书并开始TLS通信
接理解加密算法(一)--加密算法分类.理解加密算法(二)--TLS/SSL 1 不安全的TCP通信 普通的TCP通信数据是明文传输的,所以存在数据泄露和被篡改的风险,我们可以写一段测试代码试验一下. ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念
一.前言 DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...
- 学习AOP之透过Spring的Ioc理解Advisor
花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...
- ThreadLocal简单理解
在java开源项目的代码中看到一个类里ThreadLocal的属性: private static ThreadLocal<Boolean> clientMode = new Thread ...
- JS核心系列:理解 new 的运行机制
和其他高级语言一样 javascript 中也有 new 运算符,我们知道 new 运算符是用来实例化一个类,从而在内存中分配一个实例对象. 但在 javascript 中,万物皆对象,为什么还要通过 ...
- 深入理解JS 执行细节
javascript从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习JS引擎工作机制之前,我们需要引入几个相关的概念:执行环境栈.全局对象.执行环境.变量对象.活动对象.作用域和作用域链等 ...
随机推荐
- eclipse导入Javaweb文件出错解决
在项目名上右击打开properties,如图在箭头指的位置可以看出有个unbound表示导入的资源库出现 异常,需要手动导入,1.点击Server Library{Apache Tomcat v9.0 ...
- 2.6、Flask扩展
Flask 被设计为可扩展形式,故而没有提供一些重要的功能,例如数据库和用户认证,所以开发者可以自由选择最适合程序的包,或者按需求自行开发. 社区成员开发了大量不同用途的扩展,如果这还不能满足需求,你 ...
- Junit在SSH中的集成测试
测试Spring容器 在Junit的测试类中,继承AbstractJUnit4SpringContextTests就可以进行Spring容器测试, 例如下面测试用例, @RunWith(SpringJ ...
- CPA-IBE
1.Transaction ID 生成机制 在有的情况下,我们需要得到固定格式的序列号,而不是数据库默认的自增序列号, 1.1 通常方式(隐式生成并通过触发器实时插入相关表) 例如我们要求此序列号必须 ...
- Codeforces 902C/901A - Hashing Trees
传送门:http://codeforces.com/contest/902/problem/C 本题是一个关于“树”的问题. 将一棵高度为h的有根树表示为数列{ai|i=0,1,2,...,h},其中 ...
- CodeForces 396C On Changing Tree
On Changing Tree Time Limit: 2000ms Memory Limit: 262144KB This problem will be judged on CodeForces ...
- Visifire实现统计图
/// <summary> /// 柱形图 /// </summary> public static Chart InitCompareChart(string fundNam ...
- javascript面向对象之Javascript 继承
转自原文javascript面向对象之Javascript 继承 在JavaScript中实现继承可以有多种方法,下面说两种常见的. 一,call 继承 先定义一个“人”类 //人类 Person=f ...
- HDU 4505
哈哈哈哈哈哈哈哈哈,省赛,一等奖,一定的一定的一定的一定的... #include <iostream> #include <cstdio> #include <cstr ...
- Android SQLite服务--创建、增删改查
<pre name="code" class="java">import android.content.Context; import andro ...