《深入浅出Embedding》随笔

news2024/11/18 6:16:23

ChatGPT的核心运行机制或许是Transformer, ChatGPT的核心数据机制或许就是嵌入(Embedding)了。什么是Embedding呢?了解Embedding可以为我们的软件研发工作带来哪些帮助呢?鉴于此,老码农阅读了《深入浅出Embedding》(吴茂贵 王红星著,机械工业出版社,2021年)一书,本文是阅读该书的读书笔记和随感。

1. 关于Embedding

Embedding是一个向量,用以表达一个实体对象。该实体对象可以是一个单词,一个序列,一件商品,一个动作,一本书,一部电影等等。机器无法直接接收或处理标识符,标识符数据的数值化表示即为嵌入,即分布式表达。

Embedding 起源于Word2vec的Word Embedding,在NLP领域中取得了成功之后,开始把Item、Graph、Node、Position 甚至图像都转换为Embedding。就NLP而言,处理的一般步骤,首先做必要的清理工作,例如清楚特殊符号、格式转换、过滤停用词等等,然后进行分词、索引化,再利用相关模型和算法单词、短语等标识符向量化,形成静态或动态的词嵌入,最后输出给下游的任务,例如问答,机器翻译,自动摘要等等。其中,词嵌入或预训练模型是关键所在。

0968cf81570d0d3084cfb2c4681769f5.jpeg

词嵌入是预训练模型的学习载体,其中,ELMo和GPT采用自回归语言模型,BERT采用mask语言模型,XLNet采用排列语言模型。训练一个神经网络,意味着要输入训练样本并不断调整神经元的权重,从而不断提高对目标预测的准确性。vocabulary的大小决定了神经网络权重矩阵的具体规模,负样本可以提高训练速度并改善词嵌入的质量。

如今,Embedding几乎无处不在,无论是传统机器学习、推荐系统,还是深度学习、自然语言处理,甚至图像处理都涉及了Embedding的技术问题。由于Embedding在本质上是一种数据表达,了解Embedding还需要了解诸如注意力机制、神经网络等基础知识。

2. 注意力机制

注意力机制源于对人类视觉的研究,指人类关注一些信息的同时忽略其他信息的选择能力,俗称“抓重点”。注意力机制主要有两种,软注意力是对所有key求权重概率,是一种全局计算机制,而硬注意力是直接精确定位到某个key,而忽略其他。在NLP中,注意力机制被看作单词对齐模型,在机器学习语境下非常直观,这就容易理解到那篇经典论文的示例。

Transformer可以看成一种特征提取器,能够平行处理序列问题,利用self-attention机制有效解决长期依赖问题。Transformer 彻底改变了深度学习领域。

Transformer 使用自注意力机制,可以让单词之间直接建立联系。Transformer模型涉及两种掩码方式:padding mask 和sequence mask。padding mask 用于长短不一的语句,sequence mask 只用在Decoder的自注意力中。掩码语言模型是一种真正的双向方法。

多头注意力可以从3个方面提升注意力层的性能:

  1. 扩展了模型专注于不同位置的能力

  2. 将缩放点积注意力过程重复多次,在把输出会并起来

  3. 提高了多个“表示子空间”

3. 神经网络基础

CNN是一种前馈神经网络,由一个或多个卷积层和顶端的全连接层组成,同时包括关联权重和池化层。增加通道就是增加卷积核,卷积核相当于过滤器,类似于标准神经网络中的权重矩阵,一般通过梯度下降算法反复迭代求得。加深网络层数是为了减少参数的数量,扩大感受域。而层数增加会导致梯度消失,除了采用合适的激活函数外,还要使用残差连接。 

RNN适合处理序列数据,及前后顺序有关的数据。RNN除了增加时间步长或序列长度外,也可以纵向扩展成多层循环神经网络,但只具备短期记忆。LSTM可以用于解决长期依赖问题,其变种GRU则提高了计算的效率。双向循环神经网络是集成算法思想的体现。

4. 词嵌入(Word Embedding)

Word Embedding 本质上是一种静态嵌入的方法,模型训练完成后每个单词的表达就固定了。Word2vec实现了从one-shot到词嵌入的转换,但没有解决一词多义的问题。ELMo则将Word Embedding带到了语境词嵌入的时代。

4.1 ELMo 词嵌入

ELMo是最早进行语境化词嵌入的方法之一,是典型的自回归预训练模型,包括了两个单向LSTM实现的单向语言模型。其核心思想体现在深度上下文上,首先把输入转化成字符级的Embedding,然后生成上下文无关的词嵌入,再双向语言模型生成上下文相关的词嵌入。但ELMo基于BI-LSTM,并发能力受到影响。

GPT和BERT是生成式的预训练模型,基于可平行处理的Transformer。

4.2 BERT 词嵌入

BERT使用上下文来预测单词,是在海量语料的基础上进行自监督学习,即没有人工标注的数据上进行监督学习。BERT的输入编码项链是标识嵌入(token Embedding)、位置嵌入(position Embedding)和段嵌入(segment Embedding)这三个嵌入特征的单位和。基于BERT的词嵌入可同时关注左右词的信息。

在下游的NLP任务中,可以使用BERT的特征表示作为该下游任务的词嵌入特征。也就是说,BERT提供的是供下游任务迁移学习的模型,该模型可以根据下游任务微调或固定之后作为特征提取器。除微调方法外,BERT也可使用特征提取方法,使用预先训练好的BERT模型来创建上下文的词嵌入,擅长处理自然语言理解任务。

4.3 GPT 词嵌入

GPT采用多层单向的transformer decoder,可以使用传统的语言模型进行训练,通过上文预测下一个单词,更擅长处理自然语言生成任务。GPT和GPT-2在架构上没有大的变化,只在规模、数据量上有所不同。GPT对下游采用有监督学习方式,通过修改输入格式,并添加一个全连接层。而GPT-2对下游采用无监督学习方式,不改变不同下游任务的参数和模型。

GPT-3 延续了GPT的单向语言模型训练方式,规模参数增大到1750亿,并使用45TB数据进行训练。同时,聚焦于更通用的NLP模型。

BERT由Transformer的Encoder模块构成,使用多头注意力,可以同时从某词的左右两边进行关注。而GPT-2采用遮掩多头注意力,只能关注词的右边,如下图所示——

aa6e3c1c0dfd7671ace6d8597b9b03e7.jpeg

5. 生成/获取 Embedding

词嵌入的学习方法主要有两种:1)将嵌入作为一层,随机初始化那些词向量,然后通过正负向学习得到最终的词向量;2)使用预训练的词嵌入。传统上,根据上下文生成目标词嵌入,可以使用CBOW模型,根据目标生成上下文采用skip-gram模型。CBOW 模型是根据某个词前后的若干词来预测该词,可以看成多分类,skip-gram则根据某个词的条件概率生成这个词的上下文。

使用PyTorch的Embedding Layer,把一个张量(tensor)转换为词嵌入,TensorFlow平台也有对应的网络层,具体步骤如下:

  1. 准备语料库

  2. 预处理,得到不同单词构成的词典,词典包含各单词及其索引

  3. 构建神经网络,把Embedding layer作为第一层,初始化对应的矩阵权重(查表获得)

  4. 通过训练来不断更新权重矩阵。

把预训练好的词嵌入作为模型的权重,进行微调,是一种迁移学习的方法。使用预训练模型,首先要考虑目标模型的数据量及目标数据与源数据的相关性,入门可以选择:github.com/huggingface/transformers. 微调允许修改预训练模型的参数来学习目标任务,常用方法是固定底层参数,调整顶层或具体层的参数。

6. Embedding 的应用

词嵌入诞生于NLP 领域, 因此在NLP领域中有着广泛的应用。除了NLP领域之外, Embedding 同样对各种领域产生非常大的影响。

6.1 用Embedding 表现分类特征

对结构化数据使用神经网络或深度学习框架进行分析时,首先需要对连续特征和类别特征进行处理。如果是连续特征一般进行分段处理,对分类特征则可以进行数字编码或者Embedding。如果类别颗粒度很粗,可以采用one-hot编码,如果颗粒度较细可以使用Embedding,最后拼接这些数据作为网络的输入层。

6.2 用Embedding提升ML性能

对于传统的机器学习算法,例如XGBoost,采用相同的数据集和算法,但输入预处理的方式如果是Embedding处理,机器学习模型的性能会有较大提升。

6.3 在推荐系统中的应用

在结构化数据上运行神经网络时, entity Embedding 表现得很好。在推荐系统中,协同过滤基于矩阵分解模型,利用潜在特征的内积进行推荐,而内积属于线性变换,其特征的表现有限。如果利用神经网络取代内积部分,可以学到特征之间任意的函数关系。多层感知机利用FM、DNN等特征提取方法,这个架构可以无需人工特征工程,能同时学习低阶和高阶的组合特征,FM和DNN模块可以共享特征嵌入部分,进而提升训练效率及模型性能。用户对商品评价数据的稀疏性是影响推荐系统质量的主要因素之一,利用卷积神经网络的特征提取功能来学习高阶产品特征表示,然后作用到商品矩阵。 同样,使用Transformer的自注意力机制也可拥有强大的特征提取功能。

7. 小结

如果模型是大厦,那么Embedding就是砖瓦。Embedding技术由最初的自然语言处理领域在向机器学习、搜索排序、推荐和知识图谱领域延伸,具体表现为Word Embedding向item embbeding,graph Embedding,categorical variable embbeding 的扩展。同时,Embedding自身也在从单一的静态表达向实体的动态表达演变,例如,Word Embedding 向ELMo,GPT,BERT等动态预训练模型演进,这是技术系统动态化趋势的一种体现。

【参考资料与关联阅读】

  • 人工智能伦理学的一知半解

  • 感知人工智能操作系统

  • 《人工智能简史》读后

  • 面向AI 的数据生态系统

  • AI系统中的偏差与偏见

  • AI 语音交互开放平台的构建与演进

  • 老码农的AI漫谈

  • 对AI产品经理的一知半解

  • 揭秘“语音交互”背后的AI硬核黑科技!

  • 企业赋能  AI 服务生活

  • 老码农眼中的简明AI

  • 《基于混合方法的自然语言处理》译者序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/455431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端切图仔入门Docker,三分钟上线自己的博客平台

依稀记得2022年趁某平台优惠买了台云服务器,周未准备安装MySQL数据库,两天时间卡在MySQL环境配置上,实在是折磨一气之下把服务器给退了。 要是我早一点学会Docker,我的博客估计已上线一年啦!前端切图仔学会Docker&…

AI魔法秀:D-ID助你打造视频虚拟数字人

随着ChatGPT的各种玩法,写文章、做PPT、编程、修bug等,大家都玩的不亦说乎,可以说真的给家人们提升的效率很高,最近个人尝试着制作一个虚拟数字人,也是一个玩法,可以帮助很多中小企业做企业文化宣讲或者是产…

闲谈【Stable-Diffusion WEBUI】的插件:美不美?交给AI打分

文章目录 (零)前言(一)咖啡店艺术评价(Cafe Aesthetic) (零)前言 本篇主要提到了WEBUI的Cafe Aesthetic插件,这是一个相对独立的插件,单独标签页,…

周杰伦代言的蕉下,3年半广告宣传费超10亿,全靠营销?

五一假期将至,各地即将迎来旅游小热潮,不少游客也开始为自己的出行准备攻略。随着露营、徒步等城市户外运动的兴起,防晒理念“再度升温”,靠卖小黑伞起家的蕉下瞄准年轻世代消费者,又在疯狂收割“防晒焦虑”。 去年4月…

【JavaWeb】JavaScript

1、JavaScript 介绍 Javascript 语言诞生主要是完成页面的数据验证。因此它运行在客户端,需要运行浏览器来解析执行 JavaScript 代码。 JS 是 Netscape 网景公司的产品,最早取名为 LiveScript;为了吸引更多 java 程序员。更名为 JavaScript。 JS 是弱…

排序 - 冒泡排序(Bubble Sort)

文章目录 冒泡排序介绍冒泡排序实现复杂度和稳定性冒泡排序时间复杂度冒泡排序稳定性 代码实现核心&注意结尾 每日一道算法提高脑力,今天是第一天,来个最简单的算法–冒泡排序。 冒泡排序介绍 它是一种较简单的排序算法。它会遍历若干次要排序的数列…

对话庄表伟老师-文字实录

我内心有一套价值观,有一套世界观,它是一个完整的整体,无论我做任何的事情,工作也好、生活也好、学习也好、去做社区也好、或者是结识朋友也好、去聊天也好,背后的价值观在内心都是一整套的,互相之间是不会…

Python学习之简易图片浏览器

俗话说实践是学习最有效的方法。最近在学习python,于是就参考着各类文章,也倒腾了一个简易图片浏览器,效果图如下: 整个浏览器分为左右两侧,左侧是地址栏图片文件列表;右侧则是图片显示区域。 左侧地址栏有…

数据结构,二叉搜索树的详解

🧑‍💻作者:程序猿爱打拳,Java领域新星创作者,阿里云社区博客专家。 🗃️文章收录于:数据结构与算法 🗂️JavaSE的学习:JavaSE 🗂️MySQL数据库的学习: MySQL…

Python基础之类

一:什么是类 类即类别/种类,是面向对象分析和设计的基石,如果多个对象有相似的数据与功能,那么该多个对象就属于同一种类。有了类的好处是:我们可以把同一类对象相同的数据与功能存放到类里,而无需每个对象…

【AI绘画】Midjourney的使用及程序示例

Midjourney 1.背景2.Midjourney的原理3.Midjourney的使用方法4.Midjourney的示例代码 1.背景 Midjourney 是一款基于深度学习的图像转换工具,其可以将一张图像转换成具有不同风格的图像,例如将一张照片转换成卡通风格的图像。Midjourney 基于 TensorFlow…

Jetson Nano一步到位打开USB摄像头(Rosmaster小车)

背景:我用的rosmaster r2小车配的摄像头是Astra pro,也就是下图这款: 1. 支持的摄像头 Jetson开发包有多个用于连接相机的接口,包括USB、以太网和MIPI CSI-2。流行的相机是现成的支持,而Jetson生态系统合作伙伴支持广…

基于树莓派的OpenEuler基础实验二

文章目录 基于树莓派的OpenEuler基础实验二一、ROS中间件介绍1. ROS话题通信与服务通信2. 常见的ROS终端命令 二、中间件基础实验1. ROS的移植2. ROS的安装和环境配置3. 第一个ROS实践之开启小海龟4. ROS话题实践1)ROS工作区与软件包的创建2)ROS的话题通…

可能是最强的Python可视化神器,建议一试

数据分析离不开数据可视化,我们最常用的就是Pandas,Matplotlib,Pyecharts当然还有Tableau,看到一篇文章介绍Plotly制图后我也跃跃欲试,查看了相关资料开始尝试用它制图。 Plotly Plotly是一款用来做数据分析和可视化的…

《商用密码应用与安全性评估》第二章政策法规2.4商用密码应用安全性评估工作

商用密码应用安全性评估体系发展历程 第一阶段:制度奠基期(2007年11月至2016年8月) 第二阶段:再次集结期(2016年9月至2017年4月) 第三阶段:体系建设期(2017年5月至2017年9月&…

【Vue3】vue3中的watchEffect使用及其他的API

目录 一,watchEffect 二,生命周期 三,什么是hooks? 四,toRef 五,其他组合式API 5.1shallowReactive&shallowRef 5.2readonly&shallowReadonly 5.3.toRaw&markRaw 5.4自定义Ref-customRef ​5.5pr…

SSM框架整合之单表操作

1、Spring和Spring MVC父子容器 概念介绍 1.在Spring与SpringMVC进行整合的时候,一般情况下我们会使用不同的配置文件来配置Spring和SpringMVC,因此我们的应用中会存在至少2个ApplicationContext的实例,由于是在Web应用中,因此最…

基于Html+Css的图片展示26

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

AlgoC++第五课:基于矩阵的算法实现

目录 基于矩阵的算法实现前言1. 矩阵2. 矩阵求导推导3. 矩阵示例代码3.1 Matrix.hpp3.2 Matrix.cpp3.3 main.cpp3.4 拓展-cblas_sgemm3.5 拓展-LU分解 4. 多元线性回归5. 多元逻辑回归6. 最小二乘法7. 岭回归(L2)8. 多元牛顿法9. 高斯牛顿法10. Levenberg-Marquardt(修正牛顿法…

[Platforimio] LVGL +TFT_eSPI实现触摸功能

💥💥💞💞欢迎来到本博客❤️❤️💥💥 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识,如果大家喜欢,别忘点个赞加个关注哦,让我们一起共同进步~ &#x…