人工智能的奥义是:“万物皆可Embedding”
不知道大家有没有这种感受,在学习各种算法模型时,特别是深度学习模型,少不了嵌入(Embedding)的应用。
嵌入可以说是人工智能最基础的功能。机器学习模型只接受数值组作为输入,字符或者图片首先需要转化成数值组,才能进入模型。常用的转化方式有3种:One-hot编码,整数编码,嵌入(Embedding)的方法。
- One-hot编码是最常用的特征表示方法,优点是简单,但是随着特征空间的变大维度爆炸,而且无法学习到词语间的联系。
- 整数编码(编码数值本身无含义,具有误导性。
- 嵌入的方法,通过学习构造一个低维、稠密的向量,可以更好地学习到字符的表示。常见的框架有,Word2Vec(基于浅窗口的方法), fasttext(基于浅窗口的方法), GloVe(矩阵分解方法+窗口方法)等方式。**在表示学习后,相似的词汇在向量空间中是比较的距离接近的。**如下图:
接下来,我们一起了解下什么是嵌入,以及它的原理及作用:
什么是嵌入?
嵌入是将某些数据对象表示为向量,其构造使得数据对象的某些属性被编码到其向量表示的几何属性中。
这非常抽象,但并不像听起来那么复杂。
首先,我们需要介绍一点(很少)的数学知识。向量是两个听起来不同但实际上相同的东西:
- 向量是多维空间中的一个点。
- 向量是标量值(即数字)的有序列表。
要了解其工作原理,请考虑包含两个数字的列表。例如, (6,4)(6,4) 和 (2,8)(2,8) .您可以看到,我们可以将它们视为 x-y 轴上的坐标,每个列表对应于二维空间中的一个点:
如果我们有三个数字,比如 (3,2,5)(3,2,5) 和 (4,5,2)(4,5,2) ,那么这对应于三维空间中的点:
重要的一点是,我们可以将其扩展到更多维度:四、五、一百、一千,甚至数百万或数十亿。绘制一个有一千个维度的空间是非常困难的,想象一个几乎是不可能的,但从数学上讲,这真的很容易。
例如,点与点 (6,4)(6,4) (2,8)(2,8) 之间的距离只是毕达哥拉斯定理的应用。给定两个点 ,它们之间的距离为:
对于 (6,4)(6,4) 和 (2,8)(2,8) ,这意味着:
对于三维,我们只是通过添加一个项来扩展公式。对于 a=(3,2,5) 和 b=(4,5,2) :
我们可以将这个公式扩展到任意数量的向量。我们只是添加更多的术语,就像我们从二维到三维一样。
除了距离之外,我们在高维向量空间中使用的另一种测量是两个向量之间角度的余弦。如果您不仅将每个向量视为一个点,而且将其视为原点(由向量指定的点 (0,0,0,…)(0,0,0,…) )的一条线,则可以计算两个向量之间的角度( �θ 如下图所示)。
为了计算这一点,我们有另一个公式可以扩展到任意数量的维度。我们知道向量 �a 与 �b 之间的角度 �θ 的余弦为 :
这比看起来要复杂,但并不多。 �⋅�a⋅b 称为两个向量的点积,很容易计算。如果 �=(3,2,5)a=(3,2,5) 和 �=(4,5,2)b=(4,5,2) ,则:
至于 ‖�‖‖a‖ 和 ‖�‖‖b‖ ,这些是向量的长度,即从原点到该点的距离。所以:
因此,要计算 cosθ :
这个余弦对应于大约 39.3° 的角度,但在机器学习中,我们通常会在计算余弦后停止,因为如果两个向量中的所有数字都大于零,那么角度的余弦将在 0 和 1 之间。
这看起来像很多数学,但如果你仔细看一下,你会发现它只是加法、减法、乘法、除法、一个指数和一个平方根。简单但无聊和重复的东西。你实际上不必做任何这些数学运算。我们保留计算机的全部原因就是为了做这种事情。但是你应该明白向量是数字的列表,了解使用向量的概念,并了解无论向量有多少个维度,我们仍然可以做一些事情,比如计算距离和角度。
这一点之所以如此重要,是因为我们在计算机上保存的任何数据也只是一个数字列表。如果我们选择以这种方式看待它,那么每个数据项——数字图片、文本、录音、3D 模型文件,以及任何你能想到的可以放入计算机文件中的东西——都是一个向量。
①人工智能/大模型学习路线
②AI产品经理资源合集
③200本大模型PDF书籍
④超详细海量大模型实战项目
⑤LLM大模型系统学习教程
⑥640套-AI大模型报告合集
⑦从0-1入门大模型教程视频
⑧LLM面试题合集
我们如何为事物分配嵌入向量?
嵌入的目的是将向量分配给数据对象,以便它们在高维空间中的位置对有关它们的有用信息进行编码。数据对象——文本或图像或我们正在处理的任何其他对象——如果我们选择以这种方式看待它们,它们就已经是向量了。这些向量的位置并不能告诉我们任何关于它们的有用信息。
请看以下四张图片:
每个都是 450x450 像素的图像,使用标准 RGB 调色板着色。这意味着图片由 202,500 个像素组成,每个像素的红色、绿色和蓝色值都有一个介于 0 到 255 之间的数字。将其转换为具有 607,500 个维度的向量是微不足道的。
我们可以拍摄任何一对图像并计算它们之间的距离或测量它们的余弦,但苹果不太可能彼此特别接近或与橙子特别远。至少,如果我们使用数百张苹果和橙子的图片,而不仅仅是四张,那是不可能的。
更有可能的是,我们会得到这样的东西:
我们不能画600,000维的图画,所以这张图只用两个维度来证明这一点:我们应该期望苹果和橙子是半随机放置并混合在一起的。
我们希望为每个图像分配一个唯一的嵌入,以便苹果靠近和远离橙子,反之亦然。我们想要这样的东西:
为此,我们构建了一个神经网络(我们称之为嵌入模型),该网络将 607,500 维向量作为输入并输出一些其他向量,通常具有较少的维度。例如,广泛使用的 ViT-B-32 图像嵌入模型将输入图像转换为 512 维嵌入向量。
然后,我们用苹果和橙子的标记图片训练嵌入模型,指示它慢慢调整网络的权重,以分离苹果和橙子的嵌入向量。经过许多周期的训练后,我们预计,当我们将苹果的图片作为输入时,它将输出彼此更接近的向量,而不是当我们将橙子图片作为输入时,它们更接近我们得到的向量。
这些输出向量是嵌入,它们共同形成一个嵌入空间。单个嵌入的位置对有关其相应数据对象的有用信息进行编码:在这种情况下,无论某物是苹果还是橙子的图片。
区分苹果和橙子是一个非常简单的场景,但你可能很容易想象将其扩展到许多功能。
在某些用例中,我们甚至可以构建嵌入,其中我们没有明确说明哪些特征是相关的,我们让神经网络在训练过程中弄清楚。例如,我们可以通过拍摄人脸照片并训练嵌入模型来构建人脸识别系统,以输出将同一个人的照片放在一起的嵌入。然后,我们可以构建一个以嵌入向量为键的人物图片数据库。
我们希望存储的面通过嵌入空间分布:
我们可能期望这个嵌入空间会编码许多我们从未显式训练它编码的特征。例如,它可能会将男性和女性隔离开来:
或者,我们可能会发现人们通过头发的特征聚集在一起,例如秃顶或灰色:
但是我们预计,如果我们在数据库中给它另一张某人的图片,那么该新图片的嵌入将更接近我们存储的该人的图片,而不是其他任何人:
当然,它也会找到长相相似的人,尽管我们希望他们不会像实际上相同的两个人那样亲密:
这突出了嵌入空间的逻辑:输入是多种多样的,但通过将它们转换为嵌入,我们将特征(有时是复杂的、隐藏的、微妙的或不明显的特征)转化为软件可以轻松识别的几何属性。
嵌入空间还可以支持多种输入类型,如文本和图像,从而创建公共嵌入空间,并使您能够在两者之间进行映射。
例如,如果我们有一个带有描述性标题的图片数据库,我们可以共同训练两个嵌入模型(一个用于图像,一个用于文本)以在同一嵌入空间中输出向量。结果是图像描述的嵌入和图像本身的嵌入将彼此接近。
原则上,任何类型的数字数据都可以作为创建嵌入的输入,任何成对的数据类型(不仅仅是文本和图像)都可以用于创建多模态联合嵌入空间。
嵌入有什么用?
我们已经展示了如何使用嵌入进行图像分类和人脸识别,但这还远远没有穷尽所有可能性。例如,从文本描述生成 AI 图像首先为文本和图像构建一个联合嵌入空间,然后,当用户输入文本时,它会计算该文本的嵌入并尝试构建一个将产生附近嵌入的图像。
嵌入通常非常有用,以至于它们在人工智能和机器学习中都可以看到应用。任何需要相似性/差异性评估、依赖于隐藏或不明显的特征,或者需要不同输入和输出之间的隐式上下文相关映射的对象,都可能以某种形式使用嵌入。
结论
**嵌入背后的理论甚至并不复杂:它所涉及的只是从数据对象到高维向量空间中的点的映射,让具有共同属性的事物聚集在一起,相似事物有相近的向量数值。**使用它们只是向量距离和余弦的问题,这仅仅是简单的数学运算!
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓