Word Embedding

单词表示最简单的是 one-hot

但是它的缺点是

  1. 矩阵表示过于稀疏,占用空间
  2. 对相关的词语无法得知它们的含义是相近的。

Word Embedding 解决了上述两个缺点,一个 Word Embedding 直观的例子如下图所示。


每个维度表示一个特征,当然在实际任务中,每个特征可能并不会像例子中的那么明显,是网络自己学习得来的。

Word Embedding 可视化如下图所示


通过 t-SNE 算法将 300 维的词向量映射到二维,方便观察,可以看到含义相近的词语距离更近。从这里也可以看到词嵌入的直观解释,那就是在一个 300 维的空间,每个单词都被嵌入其中,就像上图三维立方体中的每个点,就代表一个单词。这也是嵌入的由来。

广义 Embedding

在人脸识别领域,一张图片通过卷积网络到一个向量的过程称为编码,这里的 encoding 和 embedding 是一个意思,可以理解为广义的 embedding。

Embedding 在 Pytorch 中实现

import torch
import torch.nn as nn# an Embedding module containing 10 tensors of size 3
embedding = nn.Embedding(10, 3)
# a batch of 2 samples of 4 indices each
input = torch.LongTensor([[1,2,4,5],[4,3,2,9]])
output = embedding(input)
print(output)
tensor([[[ 0.3373,  0.3316, -1.3433],[ 1.3109, -0.3448, -0.4087],[ 1.2792, -1.0822, -0.1846],[-0.8766,  0.5696, -0.1815]],[[ 1.2792, -1.0822, -0.1846],[-0.0850,  0.8372, -0.0310],[ 1.3109, -0.3448, -0.4087],[ 1.3273,  0.5631,  0.6411]]], grad_fn=<EmbeddingBackward0>)

nn.Embedding 输入参数

  • num_embeddings (int) – size of the dictionary of embeddings
  • embedding_dim (int) – the size of each embedding vector

相当于把一个标量映射成一个向量。

来看一下 Embedding 层的参数。

Embedding 的权重是 10*3,和输入参数 size 相同。可以理解为,共有 10 个单词,单词用 0-9 表示,分别乘以 3 个权重,得到词向量。

以 input[0][0] 也就是 1 为例,可以看到对应的权重和输出一致,即1 分别乘以三个权重得到输出。

参考

[双语字幕]吴恩达深度学习deeplearning.ai —— P163 2.1 词汇表征
李宏毅2020机器学习深度学习(完整版)国语 —— P23 Unsupervised Learning - Word Embedding

Embedding 理解相关推荐

  1. Embedding理解、Keras实现Embedding

    @创建于:20210714 @修改于:20210714 文章目录 1 Embedding介绍 1.1 embedding 有3 个主要目的 1.2 图形化解释 2 包模块.方法介绍 3 Keras实现 ...

  2. embedding理解

    embedding理解 本质就是量化相似性,将相似性通过在多个维度上的量化,从而通过判断两个向量的距离来判断相似性. 意义:将类别数据(无限维度/多维度)用低维表示且可自学习. 协同过滤 推荐系统有两 ...

  3. torch.nn.Embedding理解

    Pytorch官网的解释是:一个保存了固定字典和大小的简单查找表.这个模块常用来保存词嵌入和用下标检索它们.模块的输入是一个下标的列表,输出是对应的词嵌入. torch.nn.Embedding(nu ...

  4. ViT Patch Embedding理解

    ViT(Vision Transformer)中的Patch Embedding用于将原始的2维图像转换成一系列的1维patch embeddings. 假设输入图像的维度为HxWxC,分别表示高,宽 ...

  5. Embedding理解+代码

    目录 Embedding 主要思想 Word2vec 主要思想 两种模型: 目的: 算法 一.定义超参数 二.将语料库转换one-hot编码表示 三.模型训练 代码手动实现 skip-gram模型 一 ...

  6. torch.nn.Embedding()理解

    https://blog.csdn.net/tommorrow12/article/details/80896331

  7. 10分钟带你深入理解Transformer原理及实现

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|深度学习这件小事 基于 Transformer<A ...

  8. Word Embedding 知识总结

    一 Word Embedding的基本概念 1.1 什么是Word Embedding? 现有的机器学习方法往往无法直接处理文本数据,因此需要找到合适的方法,将文本数据转换为数值型数据,由此引出了Wo ...

  9. nn.embding()使用注意点

    关于nn.embedding的维度的定义,函数的理解,一些需要注意的点 https://blog.csdn.net/a845717607/article/details/104752736 Embed ...

最新文章

  1. 在 react 里使用 antd
  2. Java 8 中 HashMap 到底有啥不同?
  3. JButton的setRollover出现的奇怪问题
  4. 成功解决pandas\core\generic.py:3660: SettingWithCopyWarning:  A value is trying to be set on a copy of a
  5. 【学习笔记】14、标准数据类型—字典
  6. 对XMLHttpRequest异步请求的面向对象封装
  7. springboot创建单个对象
  8. URAL 1033 Labyrinth
  9. 轻松带你走进shiro的世界
  10. php gzip 关闭,php能否在当前脚本页关闭nginx的gzip输出
  11. 如何查看sql2005数据库的端口号
  12. GNN | 从序列神经网络到GCN、GraphSage、GAT图模型总结
  13. Microsoft Silverlight 4 Tools for Visual Studio 2010
  14. 计算机网络结构示意图,常见的五种计算机网络拓扑结构分析
  15. 一篇关于程序员的文章
  16. android 如何启动apk,Android JS启动APK
  17. docker配置国内加速器的两种方法
  18. NLP 模型压缩方法综述
  19. linux 下简单安装 pathogen.vim
  20. 程序员在二线城市工作爽吗?

热门文章

  1. 如何创建透明的FLASH
  2. 【Linux学习】基础IO——理解缓冲区 | 理解文件系统
  3. 谷歌身份验证器无法弹出问题解决
  4. 探寻 vivo 印度崛起背后的秘密
  5. 南网elink文件保存位置_eLink客户端标准版功能
  6. 2010年1月14日
  7. Office控件开发总结-Office 开发基本知识
  8. Fiddler抓包工具使用(一)
  9. 新版标准日本语高级_第10课
  10. 小米十周年公开演讲 碎碎念