「嵌入」(Embedding)如何更好地理解?
yuyutoo 2024-12-15 17:41 1 浏览 0 评论
图:unsplash
原文来源:arxiv
作者:Krishna
「雷克世界」编译:嗯~阿童木呀
众所周知,一直以来嵌入都是非常受欢迎的,原因是什么呢?接下来,就让我们从相关背景中窥探一二。所有机器学习模型都要求输入数据是数字。不幸的是,实际中的数据都是数值和分类值的混合(考虑结构化数据)。
分类数据的示例如下所示:
原始数据
其中,我们有两个分类变量(此处忽略用户Id),最喜欢的颜色(FC)和T恤大小(TS)。我们可以使用以下方法来表示我们的输入数据:
标签编码(Label Encoding)
将FC表示为整数值是不正确的。为什么呢?如果我把red相加两次(1 + 1),它的相加结果会是blue(2)吗?不,这是没有意义的,这样做,只会将有关这个变量的完整信息稀释掉。
将TS表示为数值也是不正确的。为什么呢?如果我将small和medium相加(1 + 2),它的相加结果会是large(3)吗?不,再次这样做将会导致丢失关于这个变量的信息。
标签编码
独热编码(One Hot Encoding)
使用独热编码可能算是一个更好的注意。它是一种将分类数据表示为稀疏向量的简单方法。 例如下面的这个示例:
独热编码
用独热编码来表示FC是一个好主意。我们将Red表示为{1,0,0},Blue表示为{0,1,0},Green表示为{0,0,1}。这意味着每个等级(Red、Green和Blue)彼此之间距离相等。
但是用同样的方式来表示TS并不是一个好主意,我们都知道,small<medium<large。如果这样做的话,订购信息将会丢失。这个变量中的所有等级都被处理为彼此之间距离相等。另外,如果我们有1000个等级而不是3个,将会发生什么呢?这将使我们的矩阵大而稀疏。
嵌入(Embedding)
可以说,我们想用将具有三个等级的输入变量表示为二维数据。使用嵌入层,底层自微分引擎(the underlaying automatic differentiation engines,例如Tensorflow或PyTorch)将具有三个等级的输入数据减少为二维数据。
输入数据
用标签编码表示输入数据
嵌入式数据
输入数据需要用索引表示。这一点可以通过标签编码轻松实现。这是你的嵌入层的输入。
最初,权重是随机初始化的,它们使用随机梯度下降得到优化,从而在二维空间中获得良好的数据表示。可以说,当我们有100个等级时,并且想要在50个维度中获得这个数据的表示时,这是一个非常有用的主意。
罗斯曼挑战赛
这个策略已经被很多Kaggle参赛者使用,用以使得他们的分类数据集能够获得好的表示。(提出此想法的队伍在本次比赛中排名第三)。
你可以观察到,在对输入数据进行一次独热编码之后,他们将其嵌入到来自不同分类变量的较低维度中。
这些嵌入的输出被连接并馈送到两层神经网络中。
变量状态的嵌入表示
周变量的嵌入表示
从上面我们可以看到,在二维环境下,周变量的嵌入表示。
令人惊讶的是,嵌入是如何设法找出周末的销售与工作日的销售之间的不同的。
状态变量的嵌入表示几乎等同于世界地图上的实际表示。
这里有一个简单的例子,在keras中使用嵌入层,点击链接,查看详情:https://github.com/krishnakalyan3/FastAI_Practice/blob/master/notebooks/RecSys.ipynb。
相关推荐
- 了解 SQL 语言特点、分类及规则
-
SQL语言概述SQL全称是结构化查询语言(structuredQueryLanguage),它是一种在关系型数据库中定义和操纵数据的标准语言。最早是由IBM的圣约瑟(Sanjose)研究...
- SQL的语言规范及分类详解
-
SQL:StructureQueryLanguage结构化查询语言,它是使用关系模型的数据库应用语言,由IBM上世纪70年代开发出来。后由美国国家标准局(ANSI)开始着手制定SQL标准,先后有S...
- 2分钟,快速认识什么是SQL
-
结构化查询语言,简称SQL,它是与关系数据库管理系统通信的黄金标准语言。今天就来一起快速认识一下什么是SQL,您可以通过以下的文字内容学习,也可以通过文末的视频学习,希望本文对您有所帮助。...
- SQL语言书写与规则详解
-
SQL语言SQL语言主要包含6个部分,什么是SQL语言?SQL语言被称之为结构化查询语言(StructuredQueryLanguage),它是关系型数据库的**标准语言[所有数据库厂商都要遵守S...
- SQL知识大全(一):数据库的语言分类你都知道吗?
-
点击上方蓝字关注我们今天是数据库语言分类的第一讲,主要会介绍数据库的四类语言,以及其语法,课程大纲详见脑图。...
- 数据查询语言SQL基本语法
-
SQL(StructuredQueryLanguage)即结构化查询语言,是用来管理和处理关系型数据库的标准计算机语言。其语法非常丰富,允许用户执行各种操作,包括但不限于查询、插入、更新和删除数据...
- SQL(structured query language)语言
-
SQL(structuredquerylanguage)关系数据库标准语言-SQL数据库是表的汇集,它用一个或多个SQL模型定义-基本表是实际存储在数据库中的表,视图是由若干个基本表或其他视图导出...
- SQL查询逻辑执行顺序:从FROM到LIMIT,步步解析
-
SQL(StructuredQueryLanguage)作为关系型数据库的标准语言,被广泛应用于数据查询和管理。虽然我们通常按照...
- SQL大宝剑-已燃尽所有SQL的理解
-
作者:京东物流向往一、背景从事数据开发将近四年,过程中有大量任务交接或阅读同事代码的场景。在这些场景中发现有些SQL读起来赏心悦目,可以一目了然地了解业务逻辑,一些复杂的业务需求实现方法也可以做到简...
- 《图解SQL:数据库语言轻松入门》
-
《图解SQL:数据库语言轻松入门》当初入手这本书的时候,我还是蛮有勇气的。毕竟我是一个除了数据库三个汉字会写之外,对数据库一无所知的人。当时我是想到了一个故事,才决定入手这本书的。这个故事你小时候应该...
- 【数据管理】数据库通用概念和常用SQL讲解
-
数据库是计算机领域的专业词汇,大部分人也许觉得和数据库没有交集。但其实每天,甚至连你自己都没有意识到,我们一直在使用数据库。淘宝购物挑选的商品信息,手机通讯录里面的联系人,微信发送的聊天记录等,数据都...
- 慢 SQL 分析与优化
-
背景介绍从系统设计角度看,一个系统从设计搭建到数据逐步增长,SQL执行效率可能会出现劣化,为继续支撑业务发展,我们需要对慢SQL进行分析和优化,严峻的情况下甚至需要对整个系统进行重构。所以我们往...
- SQL学习:实例讲解SQL必会的12个高频语句
-
在数据库查询中,总结了12个高频常用SQL语句,供大家参考学习:1、复制表结构,不包括数据(用于建立同一个表结构)...
- SQL语言包括哪几部分?每部分都有哪些操作关键字?
-
【死记硬背】SQL即StructuredQueryLanguage结构化查询语言,包括数据定义(DDL)、数据操纵(DML)、数据查询(DQL)、数据控制(DCL)、事物控制(TCL)和指针控制(...
- 数据库中sql语句大全
-
结构化查询语言(StructuredQueryLanguage)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)