继上文https://blog.csdn.net/weixin_42078618/article/details/82999906探讨了embedding层的降维效果,时隔一个月,分享一下嵌入层在NPL领域的巨大作用。

本文的发表建立在了解文本转向量(如one-hot)的用法的前提上。

首先,继续假设我们有一句话,叫“公主很漂亮”,如果我们使用one-hot编码,可能得到的编码如下:

公 [0 0 0 0 1]
主 [0 0 0 1 0]
很 [0 0 1 0 0]
漂 [0 1 0 0 0]
亮 [1 0 0 0 0]
咋一眼看过似乎没毛病,其实本来人家也没毛病,或者假设咱们的词袋更大一些

公 [0 0 0 0 1 0 0 0 0 0]
主 [0 0 0 1 0 0 0 0 0 0]
很 [0 0 1 0 0 0 0 0 0 0]
漂 [0 1 0 0 0 0 0 0 0 0]
亮 [1 0 0 0 0 0 0 0 0 0]
假设吧,就假设咱们的词袋一共就10个字,则这一句话的编码如上所示。

这样的编码,最大的好处就是,不管你是什么字,我们都能在一个一维的数组里用01给你表示出来。并且不同的字绝对不一样,以致于一点重复都没有,表达本征的能力极强。

但是,因为其完全独立,其劣势就出来了。表达关联特征的能力几乎为0!!!

我给你举个例子,我们又有一句话“王妃很漂亮”

那么在这基础上,我们可以把这句话表示为

王 [0 0 0 0 0 0 0 0 0 1]
妃 [0 0 0 0 0 0 0 0 1 0]
很 [0 0 1 0 0 0 0 0 0 0]
漂 [0 1 0 0 0 0 0 0 0 0]
亮 [1 0 0 0 0 0 0 0 0 0]
从中文表示来看,我们一下就跟感觉到,王妃跟公主其实是有很大关系的,比如:公主是皇帝的女儿,王妃是皇帝的妃子,可以从“皇帝”这个词进行关联上;公主住在宫里,王妃住在宫里,可以从“宫里”这个词关联上;公主是女的,王妃也是女的,可以从“女”这个字关联上。

但是呢,我们用了one-hot编码,公主和王妃就变成了这样:

公 [0 0 0 0 1 0 0 0 0 0]
主 [0 0 0 1 0 0 0 0 0 0]
王 [0 0 0 0 0 0 0 0 0 1]
妃 [0 0 0 0 0 0 0 0 1 0]
你说,你要是不看前面的中文注解,你知道这四行向量有什么内部关系吗?看不出来,那怎么办?

既然,通过刚才的假设关联,我们关联出了“皇帝”、“宫里”和“女”三个词,那我们尝试这么去定义公主和王妃

公主一定是皇帝的女儿,我们假设她跟皇帝的关系相似度为1.0;公主从一出生就住在宫里,直到20岁才嫁到府上,活了80岁,我们假设她跟宫里的关系相似度为0.25;公主一定是女的,跟女的关系相似度为1.0;

王妃是皇帝的妃子,没有亲缘关系,但是有存在着某种关系,我们就假设她跟皇帝的关系相似度为0.6吧;妃子从20岁就住在宫里,活了80岁,我们假设她跟宫里的关系相似度为0.75;王妃一定是女的,跟女的关系相似度为1.0;

于是公主王妃四个字我们可以这么表示:

皇 宫
帝 里 女
公主 [ 1.0 0.25 1.0]
王妃 [ 0.6 0.75 1.0]
这样我们就把公主和王妃两个词,跟皇帝、宫里、女这几个字(特征)关联起来了,我们可以认为:

公主=1.0 *皇帝 +0.25*宫里 +1.0*女

王妃=0.6 *皇帝 +0.75*宫里 +1.0*女

或者这样,我们假设没歌词的每个字都是对等(注意:只是假设,为了方便解释):

皇 宫
帝 里 女
公 [ 0.5 0.125 0.5]
主 [ 0.5 0.125 0.5]
王 [ 0.3 0.375 0.5]
妃 [ 0.3 0.375 0.5]
这样,我们就把一些词甚至一个字,用三个特征给表征出来了。然后,我们把皇帝叫做特征(1),宫里叫做特征(2),女叫做特征(3),于是乎,我们就得出了公主和王妃的隐含特征关系:

王妃=公主的特征(1) * 0.6 +公主的特征(2) * 3 +公主的特征(3) * 1

于是乎,我们把文字的one-hot编码,从稀疏态变成了密集态,并且让相互独立向量变成了有内在联系的关系向量。

所以,embedding层做了个什么呢?它把我们的稀疏矩阵,通过一些线性变换(在CNN中用全连接层进行转换,也称为查表操作),变成了一个密集矩阵,这个密集矩阵用了N(例子中N=3)个特征来表征所有的文字,在这个密集矩阵中,表象上代表着密集矩阵跟单个字的一一对应关系,实际上还蕴含了大量的字与字之间,词与词之间甚至句子与句子之间的内在关系(如:我们得出的王妃跟公主的关系)。他们之间的关系,用的是嵌入层学习来的参数进行表征。从稀疏矩阵到密集矩阵的过程,叫做embedding,很多人也把它叫做查表,因为他们之间也是一个一一映射的关系。

更重要的是,这种关系在反向传播的过程中,是一直在更新的,因此能在多次epoch后,使得这个关系变成相对成熟,即:正确的表达整个语义以及各个语句之间的关系。这个成熟的关系,就是embedding层的所有权重参数。

Embedding是NPL领域最重要的发明之一,他把独立的向量一下子就关联起来了。这就相当于什么呢,相当于你是你爸的儿子,你爸是A的同事,B是A的儿子,似乎跟你是八竿子才打得着的关系。结果你一看B,是你的同桌。Embedding层就是用来发现这个秘密的武器。
---------------------
作者:罗大黑
来源:CSDN
原文:https://blog.csdn.net/weixin_42078618/article/details/84553940
版权声明:本文为博主原创文章,转载请附上博文链接!

深入理解 Embedding层的本质相关推荐

  1. 【文本分类】深入理解embedding层的模型、结构与文本表示

    [1] 名词理解   embedding层:嵌入层,神经网络结构中的一层,由embedding_size个神经元组成,[可调整的模型参数].是input输入层的输出.   词嵌入:也就是word em ...

  2. word2vec的词向量神经网络的embedding层的关系

    自己之前学习了一波word2vec的词向量&&神经网络的embedding,关于这2者的原理和实践,可以参看我之前的博客: 利用神经网络的embedding层处理类别特征 (一)理解w ...

  3. 人工智能--Embedding层

    学习目标: 理解Embedding层的用法. 掌握利用Embedding层对单词进行向量化. 学习内容: 对如下中文词语,利用Embedding层训练,得到向量化的特征,并在二维平面上把词语显示出来, ...

  4. 神经网络 Embedding层理解; Embedding层中使用预训练词向量

    1.Embedding层理解 高维稀疏特征向量到低维稠密特征向量的转换:嵌入层将正整数(下标)转换为具有固定大小的向量:把一个one hot向量变为一个稠密向量 参考:https://zhuanlan ...

  5. 嵌入(embedding)层的理解

    首先,我们有一个one-hot编码的概念. 假设,我们中文,一共只有10个字...只是假设啊,那么我们用0-9就可以表示完 比如,这十个字就是"我从哪里来,要到何处去" 其分别对应 ...

  6. Keras embedding层的理解与使用

    看了很多博客没有解释清楚Embedding层input_dim的意思,下面这篇博客我认为是解释清楚了,欢迎借鉴:  首先搞懂这里embedding的原理就是one-hot,那这样就能理解为什么inpu ...

  7. [阿里DIN] 从论文源码学习 之 embedding层如何自动更新

    [阿里DIN] 从论文源码学习 之 embedding层如何自动更新 文章目录 [阿里DIN] 从论文源码学习 之 embedding层如何自动更新 0x00 摘要 0x01 DIN源码 1.1 问题 ...

  8. Embedding层

    https://www.jiqizhixin.com/articles/2019-03-27-7 经常提到的Embedding层有什么用? 在深度学习实验中经常会遇Eembedding层,然而网络上的 ...

  9. 利用神经网络的embedding层处理类别特征

    类别特征在现实里十分常见,处理的方法也很多,最常见的思路是转为one-hot编码,当然这种处理方式比较粗暴,在许多算法里效果也不是很好.还有的处理方式寻找类别特征的最优切分,这个需要特定工具的支持,如 ...

最新文章

  1. MEMS传感器前景光明,国内产业如何创新破局
  2. python 配置文件对比_difflib模块对比apache配置文件差异
  3. rvm RuvyGem Cocoapods brew
  4. 第四章 大网高级   NSSA
  5. 《Improving Langugage Understanding by Generative Pre-Tranining》 —— GPT
  6. ftp 工具_ftp,win7的ftp工具
  7. zblog修改上传服务器,【记录有用】ZBlog备份、恢复与搬家(换空间换服务器)方法...
  8. 高效率实现web自动完成功能-三叉搜索树
  9. 计算机基础(五):堆和栈区别
  10. hanlp提取文本关键词的使用方法记录
  11. Unknown label type: ‘continuous
  12. 二、5移动端网页适配
  13. 万人总结的软件测试面试简历及软件测试面试题
  14. JS盒子点击时跟随鼠标移动
  15. TSP-粒子群算法求解
  16. Docker官网浅学---最原汁原味的Docker循序渐进接触之旅
  17. ABBYY FineReader 14 中文最新版含中文补丁【OCR文字识别软件】
  18. mysql语句一定要大写_请问SQL语句必须用大写,是不是规范
  19. SpringMVC和SSM整合步骤(最详细)
  20. zabbix的使用-部署zabbix客户端

热门文章

  1. libACE-6.3.3.so: cannot open shared object file: No such file or directory
  2. 抽样方法,采样方法 shuffle
  3. TVM性能评估分析(一)
  4. 激光雷达基础-光探测和测距-遥感
  5. Yolov1目标检测算法详细分析
  6. [JAVA EE]session 和 token 机制
  7. 零起点学算法01——第一个程序Hello World!
  8. jquery 监听的案例
  9. 微信小程序scroll-view的使用
  10. java中对Excel的创建、样式修改