机器学习入门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-近邻算法 先来一个简单的例子,我们如何来区分动作类电影与爱情类电影呢?动作片中存在很多的打斗镜头,爱情片中可能更多的是亲吻镜头,所以我们姑且通过这两种镜头的数量来预测这部电影的主题. ...
随机推荐
- Python之copy模块
概念 官方解释:Python中的赋值语句不复制对象,它们在目标和对象之间建立索引.对于可变项目或可变项目的集合,有时需要一个副本,以便可以更改一个副本而不更改其他副本.该模块提供通用的浅层和深层cop ...
- MonkeyFest2018Guangzhou
MonkeyFest 是一个一年一度由全球Microsoft Xamarin开发者发起的全球性社区活动,主旨推广在云计算.人工智能.大数据.移动开发等技术. 跨平台技术移动开发(卢建晖) .NET C ...
- GCJ-02火星坐标系和WGS-84坐标系转换关系
GCJ-02火星坐标系和WGS-84坐标系转换关系 WGS-84:GPS坐标系 GCJ-02:火星坐标系,国测局02年发布的坐标体系,高德,腾讯等使用. BD-09:百度坐标系,百度自研,百度地图使用 ...
- Final Cut Pro X for Mac(FCPX专业视频剪辑工具)实用技巧篇!
Final Cut Pro X for Mac是一款非常强大的专业视频剪辑工具,全球很多人都在用!现在小编给大家带来一些关于Final Cut Pro X for Mac的使用技巧,希望对大家以后的应 ...
- C语言第零次作业
Q1.你对网络专业或者计算机专业了解是怎样? 说实话不了解网络专业,在甚至在填志愿之前我都不曾听说过.但经过一番的查阅资料.现在,首先我了解到我们主要学习计算机.通信以及网络方面的基础理论.设计原理, ...
- Kali Linux更新后无法启动解决了
Kali Linux更新后无法启动解决了 1月3日,Kali Linux从上游Debian引入systemd组件的升级版本240-2.一旦更新该版本,就可能造成系统无法启动,直接进入(initra ...
- PBRT笔记(9)——贴图
采样与抗锯齿 当高分辨率贴图被缩小时,贴图会出现严重的混淆现象.虽然第7章中的非均匀采样技术可以减少这种混叠的视觉影响,但是更好的解决方案是实现基于分辨率进行采样的纹理函数. 可以在使用贴图时先对贴图 ...
- VB中StdPicture尺寸(Width,Height)转像素单位
首先获得一个图片对象 Dim spic As StdPicture Set spic = LoadPicture("d:\0.bmp") '从文件获得 Set spic = Cli ...
- margin与padding的bug
1.在页面布局时,值对于块元素来说,相邻的两个兄弟块元素间的margin-top与上一个兄弟的margin-bottom重合时, 解决办法:对其中一个块元素中设置 display:inline- ...
- 移动端h5 实现多个音频播放
前一段时间做到一个项目,其中用到很多之前没用过的东西,其中一个就是h5的多音频实现,背景音频和说话同时播放,其中出现了很多问题,不过总算找到了解决方案. 平时做H5如果只有一个音乐的话就直接在页面里面 ...