机器学习入门17 - 嵌套 (Embedding)
原文链接:https://developers.google.com/machine-learning/crash-course/embeddings/
嵌套是一种相对低维的空间,可以将高维矢量映射到这种低维空间里。
通过使用嵌套,可以让在大型输入(比如代表字词的稀疏矢量)上进行机器学习变得更加容易。
在理想情况下,嵌套可以将语义上相似的不同输入映射到嵌套空间里的邻近处,以此来捕获输入的语义。
一个模型学习到的嵌套,也可以被其他模型重用。
1- 协同过滤的目的
协同过滤是一项可以预测用户兴趣(根据很多其他用户的兴趣)的任务。
以影片推荐的任务为例,首先要确定哪些影片是相似的。
可以通过将影片嵌套到低维空间(使得相似的影片彼此邻近)来实现这个目标。
也就是说,将这些影片映射到一个嵌套空间,其中的每个字词都由一组二维坐标来表示。
通常情况下,在学习 d 维嵌套时,每部影片都由 d个实值数字表示,其中每个数字都分别表示在一个维度中的坐标。
可以为每个维度指定了名称。
在学习嵌套时,每个维度的学习跟它们的名字无关。
通常,每个此类维度都称为一个潜在维度,因为它代表的特征没有明确显示在数据中,而是要根据数据推断得出。
最终,真正有意义的是嵌套空间中各个影片之间的距离,而不是单个影片在任意指定维度上的坐标。
2- 分类输入数据
继续以影片推荐的任务为例,分类数据可以是某用户观看过的一组影片,某文档中使用的一系列单词,或某人从事的职业。
如果要构建一个影片推荐模型,可以为每部可能的影片分别分配一个唯一的 ID,然后通过用户已观看影片的稀疏张量来表示每位用户。
由此可知,分类数据是指用于表示一组有限选项中的一个或多个离散项的输入特征,通常使用稀疏张量(一种含有极少非零元素的张量)来表示。
为了能够在机器学习系统中使用这类表示法,需要将每个稀疏矢量表示为数字矢量,从而使语义上相似的项(影片或字词)在矢量空间中具有相似的距离。
如何将字词表示为数字矢量呢?
- - 独热编码(one-hot encoding,只有一个索引具有非零值)
- - 词袋”(bag of words) 表示法:使用一个包含各个单词在大块文本中出现次数的向量
不过,无论如何确定非零值,若将节点与字词一一对应,得到的输入矢量就会比较稀疏 - 即:矢量很大,但非零值相对较少。
稀疏表示法存在多项问题可能会致使模型很难高效地学习。
网络的对应权重数目过大
巨型输入矢量意味着神经网络的对应权重数目会极其庞大,会进一步引发以下问题:
- 数据量:模型中的权重越多,高效训练所需的数据就越多。
- 计算量:权重越多,训练和使用模型所需的计算就越多。这很容易就会超出硬件的能力范围。
矢量之间缺乏有意义的联系
3- 转换到低维度空间
通过使用嵌套(将高维度数据映射到低维度空间)可以解决上述稀疏输入数据的核心问题,
也就是将大型稀疏矢量映射到一个保留语义关系的低维空间。
即便是小型多维空间,也能自由地将语义上相似的项归到一起,并将相异项分开。
借助这种多维空间(嵌套),机器学习系统能够检测出对学习任务可能有帮助的模式:
- 收缩网络:以更小的嵌套空间来更快速地训练系统。实用嵌套的量级大致有数百个维度。
- 嵌套充当查询表
- 嵌套查询充当矩阵乘法
4- 获取嵌套
可以通过多种方式来获取嵌套:
标准降维技术
目前有很多在低维空间捕获高维空间重要结构的数学技术。
理论上,这些技术都可以用来创建用于机器学习系统的嵌套。
例如,主成分分析 (PCA) 已用于创建字词嵌套。
在给定一组实例的情况下,例如字词矢量包,PCA 会尝试查找高度相关且可以合并的维度。
Word2vec
Word2vec 是 Google 为了训练字词嵌套而研发的一种算法。
Word2vec 基于分布假设,将语义上相似的字词映射到在几何图形上邻近的嵌套矢量。
分布假设指出经常具有相同相邻字词的字词往往在语义上相似。
Word2Vec 通过训练神经网络来区分实际共同出现的多组字词与随机出现在一起的字词,从而充分利用此类上下文信息。
字词的向量表示法-word2vec模型:https://www.tensorflow.org/tutorials/word2vec/index.html
将嵌套训练为大型模型的一部分
也可以将嵌套作为目标任务的神经网络的一部分进行学习。
通过这个方法,可以为自己的特定系统量身定制嵌套,不过耗费的时间可能要比单独训练嵌套的时间长。
5- 练习
xxx
6- 关键词
输入层 (input layer)
神经网络中的第一层(接收输入数据的层)。
独热编码 (one-hot encoding)
一种稀疏向量,其中:
一个元素设为 1。
所有其他元素均设为 0。
独热编码常用于表示拥有有限个可能值的字符串或标识符。
例如,假设某个指定的植物学数据集记录了 15000 个不同的物种,其中每个物种都用独一无二的字符串标识符来表示。
在特征工程过程中,您可能需要将这些字符串标识符编码为独热向量,向量的大小为 15000。
稀疏特征 (sparse feature)
一种特征向量,其中的大多数值都为 0 或为空。
例如,某个向量包含一个为 1 的值和一百万个为 0 的值,则该向量就属于稀疏向量。
再举一个例子,搜索查询中的单词也可能属于稀疏特征 - 在某种指定语言中有很多可能的单词,但在某个指定的查询中仅包含其中几个。
与密集特征相对。
嵌套 (embeddings)
一种分类特征,以连续值特征表示。
通常,嵌套是指将高维度向量映射到低维度的空间。
例如,您可以采用以下两种方式之一来表示英文句子中的单词:
1- 表示成包含百万个元素(高维度)的稀疏向量,其中所有元素都是整数。
向量中的每个单元格都表示一个单独的英文单词,单元格中的值表示相应单词在句子中出现的次数。
由于单个英文句子包含的单词不太可能超过 50 个,因此向量中几乎每个单元格都包含 0。
少数非 0 的单元格中将包含一个非常小的整数(通常为 1),该整数表示相应单词在句子中出现的次数。
2- 表示成包含数百个元素(低维度)的密集向量,其中每个元素都存储一个介于 0 到 1 之间的浮点值。这就是一种嵌套。
在 TensorFlow 中,会按反向传播损失训练嵌套,和训练神经网络中的任何其他参数一样。
机器学习入门17 - 嵌套 (Embedding)的更多相关文章
- 机器学习入门 - Google机器学习速成课程 - 笔记汇总
机器学习入门 - Google机器学习速成课程 https://www.cnblogs.com/anliven/p/6107783.html MLCC简介 前提条件和准备工作 完成课程的下一步 机器学 ...
- [转]MNIST机器学习入门
MNIST机器学习入门 转自:http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html?plg_ ...
- Azure机器学习入门(三)创建Azure机器学习实验
在此动手实践中,我们将在Azure机器学习Studio中一步步地开发预测分析模型,首先我们从UCI机器学习库的链接下载普查收入数据集的样本并开始动手实践: http://archive.ics.uci ...
- web安全之机器学习入门——3.1 KNN/k近邻
目录 sklearn.neighbors.NearestNeighbors 参数/方法 基础用法 用于监督学习 检测异常操作(一) 检测异常操作(二) 检测rootkit 检测webshell skl ...
- tensorfllow MNIST机器学习入门
MNIST机器学习入门 这个教程的目标读者是对机器学习和TensorFlow都不太了解的新手.如果你已经了解MNIST和softmax回归(softmax regression)的相关知识,你可以阅读 ...
- Andrew Ng机器学习课程17(2)
Andrew Ng机器学习课程17(2) 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:主要介绍了利用value iteration和policy i ...
- Andrew Ng机器学习课程17(1)
Andrew Ng机器学习课程17(1) 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:主要介绍了强化学习与监督学习的设定上的区别,以及强化学习的框架 ...
- 【机器学习】机器学习入门08 - 聚类与聚类算法K-Means
时间过得很快,这篇文章已经是机器学习入门系列的最后一篇了.短短八周的时间里,虽然对机器学习并没有太多应用和熟悉的机会,但对于机器学习一些基本概念已经差不多有了一个提纲挈领的了解,如分类和回归,损失函数 ...
- 机器学习入门:K-近邻算法
机器学习入门:K-近邻算法 先来一个简单的例子,我们如何来区分动作类电影与爱情类电影呢?动作片中存在很多的打斗镜头,爱情片中可能更多的是亲吻镜头,所以我们姑且通过这两种镜头的数量来预测这部电影的主题. ...
随机推荐
- C# Post方式下,取得其它端传过来的数据
// Post方式下,取得java端传过来的数据 if ("post".Equals(context.Request.HttpMethod.ToLower())) { contex ...
- RabbitMQ一个简单可靠的方案(.Net Core实现)
前言 最近需要使用到消息队列相关技术,于是重新接触RabbitMQ.其中遇到了不少可靠性方面的问题,归纳了一下,大概有以下几种: 1. 临时异常,如数据库网络闪断.http请求临时失效等: 2. 时序 ...
- in 索引失效的问题
先安利一篇博文MySQL的or/in/union与索引优化 简单的in查询 索引失效: 步骤 1.检查建立索引没有 order_status 字段为普通索引的tinyint类型 2.检查是否使用了使索 ...
- ARP欺骗配置及演示过程
目录 环境 软件 网络拓扑图 配置流程 配置构思 具体流程 问题 演示过程 状态 检查Attack前centOS7_1的ARP地址表 在kali上输入以下命令发动攻击 此时查看centOS7_1的AR ...
- Centos7中kubernetes-1.11.2基于配置亲和与反亲和
1.题目 通过命令行,创建两个个deployment. – 需要集群中有2个节点 – 第1个deployment名称为<hwcka-002-app1>,使用nginx镜像,用有2个pod, ...
- 光纤网卡与HBA卡区别
1.简介 光纤网卡 ,指的是光纤以太网适配器,简称光纤网卡,学名Fiber Ethernet Adapter.传输输的是以太网通信协议,一般通过光纤线缆与光纤以太网交换机连接.按传输速率可以分为100 ...
- 动态规划——Best Time to Buy and Sell Stock IV
这是这个系列题目的第四个,题目大意和之前的差不多,但是这次提供最多k次的操作,操作还是不能同时操作即必须结束前一个操作才能进行后一个操作. 状态比较好理解,就是题目要求的缩小版,dp[k][i]表示进 ...
- BZOJ.4144.[AMPPZ2014]Petrol(Kruskal重构树)
BZOJ 看别人代码的时候发现哪一步都很眼熟,突然想起来,就在四个月前我好像看过还给别人讲过?mmp=v= 果然不写写就是容易忘.写了好歹忘了的时候还能复习呢(虽然和看别人的好像也没多少差别?). 首 ...
- go 结构体
结构体声明 type Employee struct { ID int Name string Address string DoB time.Time Position string Salary ...
- LeetCode 33 Search in Rotated Sorted Array [binary search] <c++>
LeetCode 33 Search in Rotated Sorted Array [binary search] <c++> 给出排序好的一维无重复元素的数组,随机取一个位置断开,把前 ...