【转】embedding概念理解

2023-10-27

原文来自google developer的机器学习入门课程。主要觉得有几个点,很能说明embedding的本质,以及为什么要用embedding来做矢量化。以下我对原文做了我需要的信息的摘录,需要阅读原文的请自行去google developer上查看。


1、分类数据矢量化

分类数据是指表示来自有限选择集的一个或多个离散项的输入特征。分类数据最直接的是通过稀疏张量(sparse tensors)表示,即one-hot编码实现矢量化。

但one-hot编码实现的分类数据向量化,有两个问题使得机器学习不能有效学习。主要问题是构造的ont-hot vector太大以及vector之间距离刻画问题。

问题一one-hot vector太大,在深度学习中,巨大的输入向量意味着神经网络的超大数量的权重。 如果你的词汇表中有M个单词,并且输入上的网络的第一层中有N个节点,则您需要使用MxN个权重来训练该层。 大量的权重会导致进一步的问题:

  1. 数据量:模型中的权重越多,有效训练需要的数据就越多。
  2. 计算量:权重越多,训练和使用模型所需的计算量就越多。 很容易超出硬件的能力。

问题二向量间缺少有意义的关系。如果将RGB通道的像素值提供给图像分类器,那么谈论“相近”值是有意义的。 略带红色的蓝色接近纯蓝色,无论是在语义上还是在向量之间的几何距离方面。 但是对于索引1247的1的向量表示的“马”,与索引50,430为1的向量表示的“羚羊”的关系不比索引238为1表示的向量“电视”的更接近。

我们需要足够大的维度来编码丰富的语义关系,同时又想要一个足够小的向量空间,以便能够更快地训练系统。

解决方案:embedding

这些问题的解决方案是使用embedding,embedding将大型稀疏向量转换为保留语义关系的低维空间。 我们将在本单元的以下部分中直观地、概念上地和编程式地探索embedding。

2、Embedding

将高维数据映射到较低维空间来解决稀疏输入数据的核心问题。即第一解决了向量空间高维度的问题,第二赋予了单词间几何空间距离大小的实际意义。
向量空间中的位置(距离和方向)可以把语义编码到一个好的embedding中。 例如,以下真实的embedding可视化显示了捕获的语义关系,如国家与其首都之间的几何关系:
在这里插入图片描述
这种有意义的空间为机器学习系统提供了检测可能有助于学习任务的机会。

 

Embeddings as lookup tables(embedding看作查表)

embedding是一种矩阵,其中每列是与词汇表中的item对应的向量。 要获取单个词汇item的稠密向量,就检索与该item对应的列。可以参照tensorflow中的tf.nn.embedding_lookup函数。

但你怎么转换一堆稀疏的词袋(bag of words)向量? 要获得表示多个词汇item(例如句子或段落中的所有单词)的稀疏向量的稠密向量,可以检索每个单独item的embedding,然后将它们相加

如果稀疏向量包含词汇项的计数,则可以将每个embedding乘以其相应项的计数,然后再相加。

Embedding lookup as matrix multiplication(查找看作矩阵乘法)

我们刚才描述的查找、乘法和加法过程等同于矩阵乘法。 给定1×N稀疏表示S和N×M的embedding表E,矩阵乘法S X E给出1×M稠密向量。
但是你怎么在第一时间得到E? 我们将在下一节中介绍如何获取embedding。

 

3、Obtaining Embeddings(获取embedding)

有许多方法可以实现embedding,包括在Google创建的最先进的算法。

Standard Dimensionality Reduction Techniques(标准降维技术)

有许多用于捕获低维空间中的高维空间的重要结构的现有数学技术。 理论上,这些技术中的任何一种都可用于为机器学习系统创建embedding。

例如,主成分分析(PCA)已用于创建单词embedding。 给定一组像词袋向量一样的实例,PCA试图找到可以折叠成单个维度的高度相关的维度。

Word2vec

Word2vec是Google发明的用于训练单词embedding的算法。 Word2vec依赖于分布假设(distributional hypothesis)来将语义相似的词映射到几何上相近的embedding向量。
word2vec参考https://www.tensorflow.org/tutorials/word2vec/index.html

Training an Embedding as Part of a Larger Model(当作训练网络的一部分)

您还可以通过作为目标任务的神经网络的一部分来学习embeeding。 这种方法可以为特定系统定制良好的embedding,但可能需要比单独训练embedding花更长的时间。

通常,当有稀疏数据(或您想要作embedding的稠密数据)时,你可以创建一个embedding单元,它只是一种特殊类型的大小为d的隐藏单元。 该embedding层可以与任何其他特征和隐藏层组合。 与任何DNN一样,最后一层将是优化的损失函数。
在这里插入图片描述
Figure 5. A sample DNN architecture for learning movie embeddings from collaborative filtering data.

当学习d维embedding时,每个item被映射到d维空间中的点,使得相似的item在该空间中是相近的。 图6有助于说明embedding层中学习的权重与几何视图之间的关系。 输入节点和d维embedding层中的节点之间的边权重对应于每个d轴的坐标值
在这里插入图片描述
Figure 6. A geometric view of the embedding layer weights.

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【转】embedding概念理解 的相关文章

  • c语言进行菜单制作

    include stdlib h include
  • Lecture11: (增强)拉格朗日松弛技术

    目录 1 理论背景 2 数学分析 3 LR计算案例 3 1 分解 3 2 算法 4 ALR计算案例 4 1 主要思想 4 2 ADMM 当你的问题中包含复杂约束时 你可能需要该方法 本节目标 阐述拉格朗日松弛 增强拉格朗日松弛和交替方向乘子
  • Ubuntu22.04安装Git及配置

    Git安装配置 apt get install git 安装Git git version 安装成功后显示版本 git version 2 34 1 git config global user name name 配置用户名 git co
  • Scrapy之CsvItemExporter生成的CSV文件乱码解决

    环境信息 Python 3 6 5 Scrapy 2 2 导出文件逻辑 self file open Users chenjunfeng02 Downloads enrolldata csv wb self exporter CsvItem
  • 【电脑蓝屏】—— inaccessible boot device

    文章目录 一 问题描述 二 问题出现场景及原因分析 1 重装系统后出现该蓝屏情况 三 问题解决方法 附件 一 问题描述 蓝屏提示 inaccessible boot device 二 问题出现场景及原因分析 1 重装系统后出现该蓝屏情况 设

随机推荐

  • 【matlab深度学习工具箱】classificationLayer参数详解

    classificationLayer 文章目录 classificationLayer 语法 描述 例子 创建分类图层 创建加权分类图层 输入参数 名称 值参数 Name 图层名称 默认 字符向量 字符串标量 ClassWeights 加
  • 多元回归预测

    文章目录 效果一览 文章概述 部分源码 参考资料 效果一览 文章概述 多元回归预测 Matlab基于粒子群算法 PSO 优化径向基神经网络 PSO RBF 的数据回归预测 多变量输入模 评价指标包括 MAE RMSE和R2等 代码质量极高
  • 眼底图像血管分割学习笔记

    一 图像处理 训练集的图片格式为tif 其中相应的分割标签格式 为gif 一开始想着这些图片是不是都要先转换成 jpg或者 png 在查阅了一些资料后其实还是不太清楚 然后在看别人的代码时 发现没有处理 所以就先这样弄着 出现的问题 cla
  • Centos7 上的sqlite3安装及升级

    一 wget升级 yum install y wget 二 sqlite3安装 sudo yum install sqlite devel 查看sqlite3的版本 sqlite3 version 三 sqlite3升级 下载源码 wget
  • 试试这两个方法,做视频二次剪辑并不难,新手一天可以收入200

    很多新手看到别人每天做短视频一个月有过万 几万的收益 看到别人能赚钱 觉得自己可能赚不到这么多 赚个7 8千应该没问题 于是开始自己学着也做起了短视频自媒体 每天埋头苦干 但每天的收益却很低 只有几块 几十 有的甚至更少 跟自己想象的完全不
  • 部署Promethuse监控Hadoop节点

    部署Promethuse监控Hadoop节点 目标 安装 将hadoop的jmx信息采集到指定端口 配置prometheus 其他说明 目标 Hadoop本身是对相当数量的指标 metrics 进行实时监控的 但是Hadoop本身并不提供方
  • Java多线程详解及示例

    Java多线程详解 摘要 本文将深入探讨Java多线程编程的重要性和使用方法 介绍多线程概念 讨论多线程的优势 并提供实际示例 此外 还将探讨多线程编程中的常见问题以及如何避免这些问题 通过本文 您将获得对Java多线程编程的全面理解和实践
  • html5 游戏 动画设计,HTML5 Canvas 动画实例

    原标题 HTML5 Canvas 动画实例 在开发在线游戏时 绘制动画是非常重要的 本节介绍一个使用 Canvas API 实现的动画实例 游戏人物的跑步动画 动画的概念及原理 1 动画 动画是通过一幅幅静止的 内容不同的画面 即帧 快速播
  • 【六祎-JS特效】页面JS特效背景

    JS代码
  • Python3中strip()、lstrip()、rstrip()用法详解

    Python中有三个去除头尾字符 空白符的函数 它们依次为 strip 用来去除头尾字符 空白符 包括 n r t 即 换行 回车 制表符 空格 lstrip 用来去除开头字符 空白符 包括 n r t 即 换行 回车 制表符 空格 rst
  • 流式计算简介

    1 数据的时效性 日常工作中 我们一般会先把数据存储在一张表中 然后对这张表的数据进行加工 分析 那这里是先存储在表中 那就会涉及到时效性这个概念 如果我们处理以年 月为单位的级别的数据处理 进行统计分析 个性化推荐 那么数据的的最新日期离
  • Docker容器学习笔记

    目录 一 初始Docker 1 1Docker的概念 1 2Docker的安装 1 3Docker的架构 1 4Docker配置镜像加速器 二 Docker命令 2 1服务相关的命令 2 2镜像相关命令 2 3容器相关命令 三 Docker
  • 小程序实现搜索历史记录,去重搜索字段以及限制展示字段数量

    使用微信小程序实现搜索历史记录 去重搜索字段 限制字段数量以及点击重新搜索功能 对应界面
  • 指纹功能适配文档

    指纹功能适配文档 本文档主要介绍第三方设备厂商如何将指纹功能集成到系统中 另外也简单描述了系统上的用户认证流程 指纹功能的集成需要实现系统定义的指纹接口规范 然后将实现的接口程序安装到系统中 并提供规范中定义的配置文件 就可在重启后使用系统
  • 口罩检测——环境准备(1)

    文章目录 前言 一 工具及环境要求 工具 本地环境要求 二 工具介绍 1 labelimg 2 AI Studio 3 YOLO2COCO 4 PaddleUtils 5 paddleyolo 三 库的安装 总结 前言 小编之前做过一期 O
  • Matlab 2016a 安装教程

    Matlab 2016a 安装包及破解教程百度云分享链接 链接 https pan baidu com s 1i6BgD8p 密码 17gg Matlab安装教程 1 下载文件 得到R2016a win64 part1 rar R2016a
  • DataGrip 连接 Kerberos 认证的 hive 报 Hive JDBC Kerberose Authentication Error: GSS initiate failed 错误

    版本 hive 3 1 2 问题描述 使用工具连接 hive 时 报如下错误 The specified database user password combination is rejected 08S01 Could not open
  • producer参数---Kafka从入门到精通(七)

    上篇文章说了 kafka需要先构造properties指定server和kafka集群 key 和 value用stringSerialize序列化 通过producer发送send 需要records参数指定topic和value 之后发
  • 利用边缘监督信息加速Mask R-CNN实例分割训练

    欢迎关注 我爱计算机视觉 公众号 一个有价值有深度的公众号 今天跟大家分享一篇有意思的arXiv上新出的论文 作者来自德国宝马汽车公司 BMW Car IT GmbH Germany 的两位实习生 Mask R CNN是实例分割的经典模型
  • 【转】embedding概念理解

    原文来自google developer的机器学习入门课程 主要觉得有几个点 很能说明embedding的本质 以及为什么要用embedding来做矢量化 以下我对原文做了我需要的信息的摘录 需要阅读原文的请自行去google develo