实体嵌入

英文是Entity Embedding。我们希望深度学习能够处理结构化数据。在处理类别特征时,常用办法包括独热编码、顺序编码等。在NLP任务处理中,词和文章的表示都得益于嵌入。我们同样可以将这个思想在结构化数据领域加以运用。

原理

假设NNN表示分箱的数量,MMM表示嵌入的维度,BBB表示训练时候的批量尺寸。我们用x∈RB∗1x \in R^{B*1}xRB1代表输入数据,E∈RN∗ME \in R^{N*M}ERNM表示嵌入矩阵,c∈RN∗1c \in R^{N*1}cRN1表示分箱的向量中心。我们的权重。下标中iii表示数据的序号,jjj表示分箱的序号。
Wij=softmax(1∣xi−cj∣+ϵ)W_{ij} = softmax(\frac 1 {|x_i - c_j| + \epsilon}) Wij=softmax(xicj+ϵ1)
我们最后生成的嵌入矩阵可以表示为V∈RB∗NV \in R^{B*N}VRBN
Vi=∑j=1NWijEjV=WEV_i = \sum_{j=1}^N W_{ij} E_j \\\\ V = WE Vi=j=1NWijEjV=WE

代码实现

我们借助pytorch构建实体嵌入层。

import torch
import torch.nn as nn
import torch.nn.functional as Fclass EntityEmbeddingLayer(nn.Module):def __init__(self, num_level, emdedding_dim, centroid):super(EntityEmbeddingLayer, self).__init__()self.embedding = nn.Embedding(num_level, embedding_dim)self.centroid = torch.tensor(centroid).detach_().unsqueeze(1)def forward(self, x): """x: size of (batch_size, 1)"""eps = 1e-7x = x.unsqueeze(1)d = 1.0/((x-self.centroid).abs()+eps)w = F.softmax(d.squeeze(2), 1)v = torch.mm(w, self.embedding.weight)return v

适用场景

深度学习处理结构化数据。

优点

  1. 嵌入向量稠密,非稀疏
  2. 容易计算类别距离
  3. 方便可视化

缺点

  1. 暂无

Reference

  • NLP实战高手课,第三章,王然,极客时间

实体嵌入Entity Embedding及代码实现相关推荐

  1. 【干货】Entity Embeddings : 利用深度学习训练结构化数据的实体嵌入

    [导读]本文是数据科学家Rutger Ruizendaal撰写的一篇技术博客,文章提出深度学习在非结构数据中有不错的表现,当前通过实体嵌入也可以使之在结构化数据中大放异彩.具体讲解了如何利用深度学习训 ...

  2. Spring Boot 实体类 Entity的自动生成,利用Python实现 sql 语句快速转换成 Java 代码(一)

    引言 最近,自己开始学习Java后端开发,作为小白,在导师的指导下,一步步开始学习,从如何搭建springboot项目开始,连接上 MySQL 数据库之后,再创建和编写Entity.Controlle ...

  3. C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名...

    转自:http://www.cnblogs.com/huangcong/archive/2011/07/20/1931107.html 在之前的文本模板(T4)初体验中我们已经知道了T4的用处,下面就 ...

  4. 实体嵌入(向量化):用深度学习处理结构化数据

    摘要: 本文详细阐述了深度学习如何来实现处理结构化数据的方法. 嵌入源自于NLP(word2vec)中的单词学习,上图来自Aylien 本博文将涉及机器学习中两个重复出现的问题:第一个问题是深度学习在 ...

  5. java model类_java 实体类entity,model模型,javabean的理解以及使用场景

    一.java实体类entity 实体类场景:比如mvc设计中model层定义java实体 对java实体类的众多理解: A. 通常定义在model层里面 B. 一般的实体类对应一个数据表,其中的属性对 ...

  6. Embedding理解+代码

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

  7. 实体识别+entity resolution

    实体识别+entity resolution 定义:不同的数据提供方对同一个事物即实体 (Entity)可能会有不同的描述 (这里的描述包括数据格式 .表示方法等) ,每一个对实体的描述称为该实体的一 ...

  8. 创建一列矩阵数字一样吗_吴恩达深度学习笔记(122) | NLP | 嵌入矩阵Embedding Matrix...

    嵌入矩阵(Embedding Matrix) 接下来我们要将学习词嵌入这一问题具体化,当你应用算法来学习词嵌入时,实际上是学习一个嵌入矩阵,我们来看一下这是什么意思. 和之前一样,假设我们的词汇表含有 ...

  9. 实体框架(Entity Framework)快速入门

    实体 框架 (Entity Framework )简介 实体框架Entity Framework 是 ADO .NET 中的一组支持 开发 面向数据的软件应用程序的技术.是微软的一个ORM框架. OR ...

最新文章

  1. 超过200m文件发送_喜大普奔!微信官宣:最高支持200M高清视频、图片文件!
  2. yii2 / Console - yii2开发控制台应用时的还我漂漂拳
  3. 网站本地调试工具_一款Web调试代理工具:Fiddler
  4. 开源Math.NET基础数学类库使用(03)C#解析Matlab的mat格式
  5. 如何对行 表 数据库加锁
  6. Android自定义View入门级
  7. 编译原理第三章学习总结
  8. 数据库索引选择的探索(二)之直方图
  9. 念念英文音标学习笔记
  10. NCPC 2015 - Problem A - Adjoin the Networks
  11. Masked Image Modelling(MAE,iBOT,Data2vec,SimMIM,CAE,BEVT)
  12. 循环语句介绍(笔记学习)
  13. AS(android studio) 添加第三方库时报,Error: Failed to resolve: com.github Affected Modules 解决办法
  14. 收藏!2022年开发运维必备的10款顶级工具
  15. 【TS TSP】基于matlab禁忌搜索算法求解31城市旅行商问题【含Matlab源码 1143期】
  16. 软考新思维--2017年上半年信息系统项目管理师上午试题分析与答案(试题46-50题)
  17. signature=66ee059bbdb9aa026cf4962f2fe679a7,a00896.html
  18. 新浪微博、微信朋友圈、qq空间分享---qq空间分享
  19. HTTP协议header标头详解
  20. AI人工智能领域精美绘图模板分享

热门文章

  1. 全链路压测自动化实践
  2. 为什么越来越多的人都不再愿意做程序员了?
  3. 用7ch中断例程完成jmp near ptr s指令的功能,用bx向中断例程传送转移位移。
  4. C++访问属性和继承属性浅析
  5. Ansible详解(二)
  6. CocoaPods安装与使用
  7. InetAddress类的一些方法
  8. 在iOS 8中使用UIAlertController
  9. webservice restful一个小例子
  10. Metro中文件夹和文件的创建