LLM的基础模型4:初识Embeddings

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于具身智能感兴趣的请移步具身智能专栏。技术宅麻烦死磕AI架构设计。

Embeddings

Embeddings会分为两个章节,前部分主要还是放在常规方法总结,后者主要放在神经网络技术。其实这个英文单词不难理解,就是将对象用数字标识描述。其实一直纠结是否要讲述这个话题,因为可深可浅。

若要用一句话概括,就是给输入分配一个数字标识,可以是一个整数数值也可以是一个向量。不过最重要的目的是在模型训练的过程中能够高效且有效的学习参数。

这里需要解释下向量,例如apple可以使用三维的向量[0.95,0.23,-0.23]来表示,也可以使用四维的向量来表示[0.95,0.23,-0.23,0.12],请注意下图中Embedding Dimensions这一列,不同模型的Embedding维度不一

one-hot encoding

这是一种最直观,也是最不需要动脑子的编码模式。假如有10000个对象,那么每个对象就是一个10000维的向量,朴素也暴力。例如apple这个词在第50个,那么apple对应的编码就是:10000维的向量,这个向量除了第50个为1之外,其余的数值均为0。

#词汇表Vocabulary:{'mat', 'the', 'bird', 'hat', 'on', 'in', 'cat', 'tree', 'dog'}#词汇表中词汇和位置的映射Word to Index Mapping:{'mat': 0, 'the': 1, 'bird': 2, 'hat': 3, 'on': 4, ……}#输入一句话的编码矩阵One-Hot Encoded Matrix:cat: [0, 0, 0, 0, 0, 0, 1, 0, 0]in:  [0, 0, 0, 0, 0, 1, 0, 0, 0]the: [0, 1, 0, 0, 0, 0, 0, 0, 0]hat: [0, 0, 0, 1, 0, 0, 0, 0, 0]dog: [0, 0, 0, 0, 0, 0, 0, 0, 1]on:  [0, 0, 0, 0, 1, 0, 0, 0, 0]the: [0, 1, 0, 0, 0, 0, 0, 0, 0]mat: [1, 0, 0, 0, 0, 0, 0, 0, 0]bird:[0, 0, 1, 0, 0, 0, 0, 0, 0]in:  [0, 0, 0, 0, 0, 1, 0, 0, 0]the: [0, 1, 0, 0, 0, 0, 0, 0, 0]tree:[0, 0, 0, 0, 0, 0, 0, 1, 0]

这种编码方式的缺点显而易见,One-hot编码会产生高维向量,使其计算成本高昂且占用大量内存,尤其是在词汇量较大的情况下;它不捕捉单词之间的语义关系;它仅限于训练期间看到的词汇,因此不适合处理词汇表之外的单词。

Feature Vector

第二种编码方式是基于特征,其实彩色图片是一种很好的例子。做过视觉学习的都知道彩色图片常见的有三种通道(三维向量),分别代表RGB(红绿蓝)。三种颜色取不同的值就可以合成任意一个位置的色块。举个例子橘色其实就可以使用orange = [1, .5, 0]来表示。说白了就是每个维度代表一种特征,然后组合起来就能代表一个输入对象。

为了加深大家的理解,上图这个例子更加直观。假如约定的编码只有4个维度,分别是“春夏秋冬”,那么上图右侧框框中的事物都可以使用下面的编码来替代。具体的意思就是这个物体是不是在四季节出现,当然学过数学组合的都知道这种编码方式只能将整个世界的对象分成16类。但是它已经开始在编码中存储对象之间的某种关系。

emoji = [spring, summer, autumn, winter]🌳    = [1, 1, 1, 0]🍂    = [1, 0, 0, 0]🍁    = [1, 0, 0, 0]🌻    = [0, 1, 0, 0]🎁    = [0, 0, 1, 1]🎅    = [0, 0, 1, 1]...etc

这种编码模式更加符合人脑,人类在记忆某种事物的时候其实也是某种编码,例如看到笔,一般会浮现它的形状,属性和相关的事物,例如纸张。

Document Vector

换个思路,假如收集了大量的文章,然后将文章里面的字词在文章中出现的次数做个标记。可以得到如下的矩阵:每一列代表着文章编号,每一行代表某个词,通过观察图片你就会发现其实traffic和network是不是有点相似,按照这个编码其实也是一种思路。

Co-occurrence Vector

顺着刚才的思路,其实还有一种编码的办法:可以将文章按照特定的长度进行窗口的滑动,然后统计在这个窗口里面单词之间的关联次数。下图给出例子,从其中可以发现其实data和mining还是挺相似的。这种编码的好处在于这种类型的embedding可以准确地捕获单词的使用含义(毕竟单词的含义会根据使用的时间、社区和上下文而变化)。

Neural Embedding

除了基于传统的统计学方法,其实可以采用神经网络来帮助自动化的抽取信息,方法很多。为了帮助大家更好的理解,这里先引入较早机器学习的一个术语,自编码器。其实它的历史很悠久,只不过到近期才被发扬光大而已。

如何理解自编码器呢,请看下图:

当输入一副图、一段语音或者一段文字的时候,通过绿色部分的神经网络,然后输出一个向量,紧接着再将这个向量输入紫色部分的神经网络,紫色部分的输出为重建之后的图、语音或者文字。最后用输出和真实值对比出差异反过来调整两个神经网络的参数。如此循环!

聪明的你一定反应过来了,要是重建之后的正确率很高的话。那么中间变量是不是经过压缩的向量,代表了原图,原语音或者原文。对了!这个就是自编码器。

那么中间的向量代表什么,其实是可以的解释。以输入“图片”为例,中间的向量有些维度描述对象特征,有些描述了材质。有人曾经做过实验,语音通过自编码器之后,中间向量有一部分代表内容,一部分代表音调。取一段中文和一段日文的语音输入编码器,然后将两个向量拆分组合,是可以重建出日语说中文。

如何用神经网络用于Embedding,下文会展开详细讲解。整体的基本思路还是在于将单词的上下文和情景信息,通过神经网络的参数训练进行编码。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12-学生们参加各科测试的次数(高频 SQL 50 题基础版)

12-学生们参加各科测试的次数 -- 学生表中,id是唯一的,将他作为主表 -- CROSS JOIN产生了一个结果集,该结果集是两个关联表的行的乘积 -- 2行表,与3行表使用cross join,得到2*36行数据 select st.student_id, st.student_name,su.subject_na…

【软件测试】自动化测试如何管理测试数据

前言 在之前的自动化测试框架相关文章中,无论是接口自动化还是UI自动化,都谈及data模块和config模块,也就是测试数据和配置文件。 随着自动化用例的不断增加,需要维护的测试数据也会越来越多,维护成本越来越高&#…

【Transformer(7)】Transformer架构解析

一、Transformer结构图 从上图可以看到: Transformer结构主要由编码和解码两大部分组成: (1)输入- position embedding - patch embedding (2)编码器 多头注意力机制 Add & NormMLP Add & Norm &…

爪哇,我初窥门径

2017年3月,我大二下学期了。 虽说一直在学习,持续在解决学习中遇到的问题,但迷茫依旧。 对着黑框编程,还是不知道Java在现实工作中是用来干什么的。 说实话,真的挺枯燥无趣的。 逐渐,我开始意识到&#…

linux部署运维2——centos7.9离线安装部署涛思taos2.6时序数据库TDengine

在实际项目开发过程中,并非一直都使用关系型数据库,对于工业互联网类型的项目来说,时序型数据库也是很重要的一种,因此掌握时序数据库的安装配置也是必要的技能,不过对于有关系型数据库使用的开发工作者来说&#xff0…

基础数学内容重构(后缀0个数)

今天也是参加了一下宁波大学的校赛,其中有一道题是求后缀0的个数,题意是让我们求一下式子的后缀0个数: 看上去比较复杂,但是通过化简我们可以知道以上式子就是求(n 1)!,这里化简的过…

windows上进行git初始化时报错:fatal: unknown write failure on standard output

一、报错描述 1、git init命令一般是在命令行,切换到项目的根目录后执行 2、如果是windows的系统,我们粘贴路径时,需要进行转义命令行才能识别, 也就是像我下面写的 D:\\Users\\...3、报错信息进行解读 一般情况下,…

2024年手机能做的赚钱软件有哪些?整理了八个手机能做的正规赚钱软件分享

在这个指尖滑动的时代,手机不仅仅是通讯工具,更是我们探索财富的钥匙。你是否曾幻想过,躺在沙发上,轻轻一滑,就能让钱包鼓起来? 今天,就让我们一起来探索那些隐藏在手机里的赚钱秘笈&#xff0c…

Apache OFBiz 路径遍历导致RCE漏洞复现(CVE-2024-36104)

0x01 产品简介 Apache OFBiz是一个电子商务平台,用于构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类应用系统。是美国阿帕奇(Apache)基金会的一套企业资源计划(ERP)系统。该系统提供了一整套基于Java的Web应用程序组件和工具。 0x02 漏洞概…

缓存方法返回值

1. 业务需求 前端用户查询数据时,数据查询缓慢耗费时间; 基于缓存中间件实现缓存方法返回值:实现流程用户第一次查询时在数据库查询,并将查询的返回值存储在缓存中间件中,在缓存有效期内前端用户再次查询时,从缓存中间件缓存获取 2. 基于Redis实现 参考1 2.1 简单实现 引入…

STM32 HAL库开发——入门篇(3):OLED、LCD

源自正点原子视频教程: 【正点原子】手把手教你学STM32 HAL库开发全集【真人出镜】STM32入门教学视频教程 单片机 嵌入式_哔哩哔哩_bilibili 一、OLED 二、内存保护(MPU)实验 2.1 内存保护单元 三、LCD 3.1 显示屏分类 3.2 LCD简介 3.3 LCD…

jpeg编码学习

正点原子stm32教程提到过jpeg解码库libjpeg,但是没有提到jpeg编码,我也好奇jpeg编码怎么实现,用代码怎么生成jpeg文件的。所以最近学习了jpeg编码,在这里做记录。 参考文章 jpeg图片格式详解 https://blog.csdn.net/yun_hen/art…

算法004:盛水最多的容器

这道题比较简单,使用双指针。 要求的是最大面积,对于一个水桶(水杯来说),面积的算法是固定的,就是底乘以高。 在这个题中,我们把左边的位置设为left,右边的位置设为right&#xff…

Python语法详解module1(变量、数据类型)

目录 一、变量1. 变量的概念2. 创建变量3. 变量的修改4. 变量的命名 二、数据类型1. Python中的数据类型2. 整型(int)3. 浮点型(float)4. 布尔型(bool)5. 字符串(str)6.复数&#xf…

企业微信接入系列-上传临时素材

企业微信接入系列-上传临时素材 文档介绍上传临时素材写在最后 文档介绍 创建企业群发的文档地址:https://developer.work.weixin.qq.com/document/path/92135,在创建企业群发消息或者群发群消息接口中涉及到上传临时素材的操作,具体文档地址…

OJ题目【栈和队列】

题目导入 栈: 题目一:有效的括号题目二:用栈实现队列 队列 题目:实现循环队列 栈 题目一 有效的括号 题目要求 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘…

信号稳定,性能卓越!德思特礁鲨系列MiMo天线正式发布!

作者介绍 礁鲨系列天线,以其独特的外观设计和强大的性能,成为德思特Panorama智能天线家族的最新成员。这款天线不仅稳定提供5G、WIFI和GNSS信号,更能在各类复杂环境中展现出卓越的性能。它的设计灵感来源于海洋中的礁鲨,象征着力量…

Julia编程11:变量作用域 Scope of Variables

There are two main types of scopes in Julia, global* scope* and local* scope*. Julia有全局变量作用域和局部变量作用域,函数或者一些结构体、循环体如for等是否内部是局部环境可以参照下表。 ConstructScope typeAllowed withinmodule, baremoduleglobalglo…

边缘计算网关:企业数字化转型的重要支撑-天拓四方

在数字化浪潮席卷全球的今天,企业对于数据处理和传输的需求日益增强。然而,传统的数据处理模式往往依赖于中心化的数据中心,这种方式在处理大量数据时存在延迟高、成本高、安全性差等问题。数据量的激增和实时性要求的提高,使得传…

视频汇聚EasyCVR平台视图库GA/T 1400协议与GB/T 28181协议的区别

在公安和公共安全领域,视频图像信息的应用日益广泛,尤其是在监控、安防和应急指挥等方面。为了实现视频信息的有效传输、接收和处理,GA/T 1400和GB/T 28181这两个协议被广泛应用。虽然两者都服务于视频信息处理的目的,但它们在实际…