要搞清楚embeding先要弄明白他和one hot encoding的区别,以及他解决了什么one hot encoding不能解决的问题,带着这两个问题去思考,在看一个简单的计算例子

以下引用 YJango的Word Embedding–介绍
https://zhuanlan.zhihu.com/p/27830489

One hot representation
程序中编码单词的一个方法是one hot encoding。
实例:有1000个词汇量。排在第一个位置的代表英语中的冠词"a",那么这个"a"是用[1,0,0,0,0,…],只有第一个位置是1,其余位置都是0的1000维度的向量表示,如下图中的第一列所示。

也就是说,
在one hot representation编码的每个单词都是一个维度,彼此independent。

这里我们可以看到One hot方式处理的数据
1、会产生大量冗余的稀疏矩阵
2、维度(单词)间的关系,没有得到体现

继续引用

神经网络分析
假设我们的词汇只有4个,girl, woman, boy, man,下面就思考用两种不同的表达方式会有什么区别。
One hot representation
尽管我们知道他们彼此的关系,但是计算机并不知道。在神经网络的输入层中,每个单词都会被看作一个节点。 而我们知道训练神经网络就是要学习每个连接线的权重。如果只看第一层的权重,下面的情况需要确定43个连接线的关系,因为每个维度都彼此独立,girl的数据不会对其他单词的训练产生任何帮助,训练所需要的数据量,基本就固定在那里了。

Distributed representation
我们这里手动的寻找这四个单词之间的关系 f 。可以用两个节点去表示四个单词。每个节点取不同值时的意义如下表。 那么girl就可以被编码成向量[0,1],man可以被编码成[1,1](第一个维度是gender,第二个维度是age)。

那么这时再来看神经网络需要学习的连接线的权重就缩小到了2
3。同时,当送入girl为输入的训练数据时,因为它是由两个节点编码的。那么与girl共享相同连接的其他输入例子也可以被训练到(如可以帮助到与其共享female的woman,和child的boy的训练)。

Word embedding也就是要达到第二个神经网络所表示的结果,降低训练所需要的数据量。
Word embedding就是要从数据中自动学习到输入空间到Distributed representation空间的 映射f 。

以上的计算都没有涉及到label,所以训练过程是无监督的

看一个实际代码计算的例子

假设有一个维度为7的稀疏向量[0,1,0,1,1,0,0]。你可以把它变成一个非稀疏的2d向量,如下所示:

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)

这个转换实际上是把[0,1,0,1,1,0,0]增加一个纵向展开的维度

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

通过比较两个数组可以看出0值映射到第一个索引,1值映射到第二个索引。嵌入构造函数的第一个值是输入中的值范围。在示例中它是2,因为我们给出了二进制向量作为输入。第二个值是目标维度。第三个是我们给出的向量的长度。
所以,这里没有什么神奇之处,只是从整数到浮点数的映射。

计算例子的model.layers[0].W.get_value(),就是上面引用图示中的映射f

讲清楚embedding到底在干什么相关推荐

  1. 汇编语言C什么意思,C和汇编的对应—main之前之后的汇编到底在干什么

    C和汇编的对应-main之前之后的汇编到底在干什么 Posted on 2010年07月21日 by sstompkins 下面以一个非常简洁的C来进行讲解ASM的实现方式 查看汇编语言实现方法,把程 ...

  2. 我们到底在干什么? —— 一名普通程序员的心声

    我们到底在干什么? -- 一名普通程序员的心声 当害怕的时候,请想想梦想-- 当你听到程序设计这个词,你首先想到的是什么?枯燥.乏味.神秘.辛苦.没错,每一个初次接触的人,都会因为不了解而恐惧甚至是抵 ...

  3. svd奇异值分解_SVD(奇异值分解)到底在干什么

    奇异值分解就是在低维空间中寻找最接近原矩阵 的低维矩阵 ,说白了就是数据降维. 奇异值分解是一种十分重要但又难以理解的矩阵处理技术,据人工智能的大牛吴恩达老师所说,在机器学习中是最重要的分解没有之一的 ...

  4. python与审计底稿关系_审计到底在干什么——做底稿

    审计?审计到底都在干嘛?为什么那么累?接下来的日子里,我来讲一讲,审计究竟在干什么. 投标--中标--签合同--做审计计划--做底稿 一般入职以后,我们的生活节奏就是预审--年审--Q1--中期--复 ...

  5. 【旅行青蛙】你的蛙到底在干什么?

    在SegmentFault里看到一位学长整理的[旅行青蛙]游戏中以程序员算法角度统计出来的一系列蛙的一切.十分佩服! 记录这一次2018年日本最热APP. 呱呱走火入魔 - 逆向游戏代码 - 终结玄学 ...

  6. 当 CPU 摸鱼时,它到底在干什么?

    人空闲时会发呆会无聊,计算机呢? 假设你正在用计算机浏览网页,当网页加载完成后你开始阅读,此时你没有移动鼠标,没有敲击键盘,也没有网络通信,那么你的计算机此时在干嘛? 有的同学可能会觉得这个问题很简单 ...

  7. 如何用初中知识理解机器学习到底在干什么事情

    前言 百度百科搜索"机器学习",映入眼帘的是我无法企及的高度: 机器学习是一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门学科.专门研究计算机怎样模拟或 ...

  8. mysql用来干嘛的_CPU占用又爆了?MySQL到底在干什么

    作者 王文安,腾讯CSIG数据库专项的数据库工程师,主要负责腾讯云数据库 MySQL 的相关的工作,热爱技术,欢迎留言进行交流.文章首发于腾讯云+社区的腾讯云数据库专家服务专栏. 在日常工作中,发现 ...

  9. 四大里snr是什么职位_四大会计师事务所的 Manager 到底在干什么?

    四大Manager的主要工作任务 四大的Manager一般都是入职后第六年的级别.按照常规路线来说,一般入职前两年是Associate,之后会做3年的Sr. Associte.过了CPA的并且表现不是 ...

最新文章

  1. 初具雏形的UL标准侧重于自主车辆的安全性
  2. python抓包工具_「docker实战篇」python的docker爬虫技术-fiddler抓包软件详细配置(七)...
  3. 自适应采样非局部神经网络的点云鲁棒操作
  4. 转载 干货 | 陪伴我学习NLP、知识图谱的那些资源(教程+书籍+网站+工具+论文...可以说很全面了)
  5. 仿iOS中图标的抖动
  6. Python直接赋值,浅拷贝和深度拷贝
  7. apache php 单入口,apache配置php实现单一入口方法
  8. 华为光模块,华为光纤模块,华为单模光模块,华为多模光模块,华为千兆光模块
  9. C++框架_之Qt的信号和槽的详解
  10. mysql系统自带示例数据库_MySQL系统自带的数据库information schema
  11. linux-安装树形查看工具-tree
  12. 不同数据库的自增代码
  13. DevExpress XtraTreeList的复选框 禁用
  14. 2016百度之星 - 初赛(Astar Round2A)题解
  15. python:使用机器学习算法对卫星遥感影像进行分类
  16. matlab四元一次非线性方程求解,[转载]MATLAB求解非线性方程(转)
  17. 查看Window系统激活信息
  18. 算法题涂小天与他的画
  19. Hexagon Binutils GNU 手册(19)
  20. 新股民快速成为股市高手的八招

热门文章

  1. LVS-DR模式部署实战!!个人整理,.......
  2. 解决localhost:8080被占用
  3. 机器码与字节码的区别
  4. Linux与网络设备 GRE配置经验总结
  5. Java关键字super解释
  6. 哈佛商学院要求学生必看的20部电影
  7. 【文章翻译】解码肿瘤表型的无创成像使用定量放射组学方法
  8. Android中创建内容提供者要继承,Android中创建内容提供者要继承( )。
  9. 批量梯度下降法(BGD)拟合曲线——Python实现
  10. XPSPEAK41软件及教程