什么是Embedding?

近年来,NLP自然语言处理、推荐系统,以及计算机视觉已成为目前工业界算法岗的主流方向,无论在哪个领域,对“Embedding”这个词概念的理解都是每个庞大知识体系的基石。

今天我们就以诙谐生动的方式来理解一下这个看似高大上的名词吧。

“Embedding”直译是嵌入式、嵌入层

看到这个翻译的时候是不是一脸懵圈?什么叫嵌入?意思是牢固地或深深地固定?那么它能把什么嵌入到什么呢?

很开心地告诉你,它能把万物嵌入万物,是沟通两个世界的桥梁,是打破次元壁的虫洞!

用数学的话来说:“它是单射且同构的(看到这么好的性质是不是很激动!)”

简单来说,我们常见的地图就是对于现实地理的Embedding,现实的地理地形的信息其实远远超过三维,但是地图通过颜色和等高线等来最大化表现现实的地理信息

通过它,我们在现实世界里的文字、图片、语言、视频就能转化为计算机能识别、能使用的语言,且转化的过程中信息不丢失。

怎么理解Embedding

首先,我们有一个one-hot编码的概念。

假设,我们中文,一共只有10个字,那么我们用0-9就可以表示完。

比如,这十个字就是“小普喜欢星海湾的朋友”

其分别对应“0-9”,如下:

那么,其实我们只用一个列表就能表示所有的对话。

例如:

或者:

但是,经过one-hot编码把上面变成:

即:把每一个字都对应成一个十个(样本总数/字总数)元素的数组/列表,其中每一个字都用唯一对应的数组/列表对应,数组/列表的唯一性用1表示。

那问题来了,费老大劲整这个干嘛呢?有什么优势?

很明显,计算简单嘛,稀疏矩阵做矩阵计算的时候,只需要把1对应位置的数相乘求和就行,也许你心算都能算出来;而一维列表,你能很快算出来?

何况这个列表还是一行,如果是100行、1000行或1000列呢?所以,one-hot编码的优势就体现出来了,计算方便快捷、表达能力强。

然而,缺点也随着来了。

比如:中文大大小小简体繁体常用不常用有十几万,然后一篇文章100W字,你要表示成100W X 10W的矩阵???

这是它最明显的缺点:过于稀疏时,过度占用资源

比如:其实我们这篇文章,虽然100W字,但是其实我们整合起来,有99W字是重复的,只有1W字是完全不重复的。

那我们用100W X 10W的岂不是白白浪费了99W X 10W的矩阵存储空间。

那怎么办???

这时,Embedding层就出现了!

假设:我们有一个2 x 6的矩阵,然后乘上一个6 x 3的矩阵后,变成了一个2 x 3的矩阵。

先不管它什么意思,这个过程,我们把一个A中的12个元素的矩阵变成C中6个元素的矩阵,直观上,大小是不是缩小了一半?

对!!!Embedding层,在某种程度上,就是用来降维的,降维的原理就是阵乘法

假如我们有一个100W X10W的矩阵,用它乘上一个10W X 20的矩阵,我们可以把它降到100W X 20,瞬间量级降了10W/20=5000倍!!!

这就是嵌入层的一个作用——降维

接着,既然可以降维,当然也可以升维。

为什么要升维?

这张图,如果要你在10米开外找出四处不同!是不是太困难了!(小普这就叫复联的鹰眼来帮我!)

当然,目测这是不可能完成的。

但是让你在一米外,也许你一瞬间就发现鼻子是不同的,然后再走近半米,你又发现右下角元宝也是不同的。再走近20厘米,又发现耳朵也不同,最后,在距离屏幕10厘米的地方,终于发现第四个不同的地方在眼睛的高光。

但是,其实无限靠近并不代表认知度就高了,比如,你只能距离屏幕1厘米远的地方找,找出四处不同,小普怕不是要被读者打死了。

由此可见,距离的远近会影响我们的观察效果

同理也是一样的,低维的数据可能包含的特征是非常笼统的,我们需要不停地拉近拉远来改变我们的感受,让我们对这幅图有不同的观察点,找出我们要的""。

Embedding的又一个作用体现了:对低维的数据进行升维时,可能把一些其他特征给放大了,或者把笼统的特征给分开了

同时,这个Embedding是一直在学习在优化的,就使得整个拉近拉远的过程慢慢形成一个良好的观察点。

比如:小普来回靠近和远离屏幕,发现45厘米是最佳观测点,这个距离能10秒就把4个不同点找出来了。

因此它就是作为这个桥梁的存在,让我们手头的东西可伸可缩,变成我们希望的样子。

语义理解中Embedding意义

理解了它是沟通两个世界的桥梁后,我们再看个例子,它是如何运用在文本数据中的?

如下图所示,我们可以通过将两个无法比较的文字映射成向量,接下来就能实现对他们的计算。例如:

queen(皇后)= king(国王)- man(男人)+ woman(女人)

这样计算机能明白,“皇后啊,就是女性的国王呗!”

walked(过去式)= walking(进行时)- swimming(进行时)+ swam(过去式)

同理计算机也能明白,“walked,就是walking的过去式啦!”

另外,向量间的距离也可能会建立联系,比方说“北京”是“中国”的首都,“巴黎”是“法国”的首都,那么向量:|中国|-|北京|=|法国|-|巴黎|

总结:

Embedding 的基本内容大概就是这么多啦,然而小普想说的是它的价值并不仅仅在于 word embedding 或者 entity embedding 再或者是多模态问答中涉及的 image embedding,而是这种能将某类数据随心所欲的操控且可自学习的思想

通过这种方式,我们可以将神经网络深度学习用于更广泛的领域,Embedding 可以表示更多的东西,而这其中的关键在于要想清楚我们需要解决的问题和应用 Embedding 表示我们期望的内容。

- 完 -

感兴趣可以关注我们的公众号:普适极客

有更多有关于人工智能的资讯在等你~

技术14期:关于深度学习中耳熟能详的Embedding相关推荐

  1. cnn 反向传播推导_深度学习中的参数梯度推导(三)下篇

    前言 在深度学习中的参数梯度推导(三)中篇里,我们总结了CNN的BP推导第一步:BP通过池化层时梯度的计算公式.本篇(下篇)则继续推导CNN相关的其他梯度计算公式. 注意:本文默认读者已具备深度学习上 ...

  2. 【干货】深度学习中的线性代数---简明教程

    作者 | Vihar Kurama 编译 | 专知 整理 | Mandy 线性代数对于理解机器学习和深度学习内部原理至关重要,线性代数是有关连续值的数学.许多计算机科学家在此方面经验不足,传统上计算机 ...

  3. 深度学习中的知识蒸馏技术(下)

    本文概览: 写在前面: 这是一篇介绍知识蒸馏在推荐系统中应用的文章,关于知识蒸馏理论基础的详细介绍,请看我的这篇文章: 深度学习中的知识蒸馏技术(上) 1. 背景介绍 1.1 简述推荐系统架构 如果从 ...

  4. 【2017年第2期】深度学习在化学信息学中的应用(下)

    徐优俊, 裴剑锋 北京大学前沿交叉学科研究院定量生物学中心,北京 100871 摘要:深度学习在计算机视觉.语音识别和自然语言处理三大领域中取得了巨大的成功,带动了人工智能的快速发展.将深度学习的关键 ...

  5. 深度学习中的正则化技术详解

    目录 基本概念 1. 参数范数惩罚 1.1 \(L^2\)正则化 1.2 \(L^1\)正则化 1.3 总结\(L^2\)与\(L^1\)正则化 2. 作为约束的范数惩罚 3. 欠约束问题 4. 数据 ...

  6. 【2017年第2期】深度学习在化学信息学中的应用(上)

    徐优俊, 裴剑锋 北京大学前沿交叉学科研究院定量生物学中心,北京 100871 摘要:深度学习在计算机视觉.语音识别和自然语言处理三大领域中取得了巨大的成功,带动了人工智能的快速发展.将深度学习的关键 ...

  7. 深度学习中的隐私保护技术综述

    摘要:如今机器学习以及深度学习在各个领域广泛应用,包括医疗领域.金融领域.网络安全领域等等.深度学习的首要任务在于数据收集,然而在数据收集的过程中就可能产生隐私泄露的风险,而隐私泄露将导致用户不再信任 ...

  8. 深度学习中的正则化技术(附Python代码)

    作者:SHUBHAM JAIN 翻译:和中华 校对:丁楠雅 本文约3500字,建议阅读20分钟. 本文简单介绍了什么是正则化以及在深度学习任务中可以采用哪些正则化技术,并以keras代码具体讲解了一个 ...

  9. 【技术综述】深度学习中的数据增强(下)

    文章首发于微信公众号<有三AI> [技术综述]深度学习中的数据增强(下) 今天带来深度学习中的数据增强方法的下篇.我们将从以下几个方向入手.1,介绍一下什么是无监督的数据增强方法.2,简单 ...

最新文章

  1. XCode4 实践HelloWorld
  2. 安徽工业大学工商学院计算机,发个帖子(对计算机学弟学妹们的建议)
  3. 单页面与多页面的区别与优缺点?
  4. 服务降级和服务熔断的区别_Spring Cloud 熔断 隔离 服务降级
  5. Java集合篇:集合细节:为集合指定初始容量、asList的缺陷、subList的缺陷
  6. 十个最适合 Web 和 APP 开发的 NodeJS 框架
  7. 矩阵快速幂 HDU3483
  8. 推荐8个超棒的学习 jQuery 的网站
  9. matlab自带SVM算法例子(附函数详解)
  10. 递归法:实现指数型枚举(二叉树递归)
  11. Linux下载WordPress出现错误,从win server 2008迁移wordpress到linux时出现的问题
  12. Unity全新的版本发布计划(2018)【转自游戏蛮牛】
  13. C#实现封装SPC过程能力工具类ProcessCababilityHelper
  14. 公司简介ppt模板如何利用曲线时间轴提升质感
  15. execute immediate使用方法
  16. 计算机高级培训教师感言,教师感言,句句经典
  17. 计算机本地连接xp,xp系统本地连接不见了的解决方法
  18. java对接ntlm_通过NTLM获取信息.
  19. 生活所迫?那些年摆过的地摊,有你么?
  20. 使用wxauto出现ImportError: DLL load failed while importing win32gui: 找不到指定的程序报错的解决方案

热门文章

  1. 确认!语音识别大牛Daniel Povey将入职小米,曾遭霍普金斯大学解雇,怒拒Facebook
  2. 都有Python了,还要什么编译器!
  3. 免费公开课报名 | 达观数据个性化推荐系统实践
  4. 这三个普通程序员,几个月就成功转型AI,他们的经验是...
  5. 深度学习框架哪家强?MXNet称霸CNN、RNN和情感分析,TensorFlow仅擅长推断特征提取
  6. 没错,使用 Nacos 踩坑了
  7. 别再写满屏的try-catch了,真丑,全局异常处理不会吗?
  8. 面试官:你说熟悉MySQL事务,那来谈谈事务的实现原理吧!
  9. MySQL中,当update修改数据与原数据相同时会再次执行吗?
  10. 几种常用 JSON 库性能比较