LLM(6):理解词嵌入

news2025/3/20 21:39:28

深度神经网络模型,包括 LLM,无法直接处理原始文本。由于文本是分类的,它与用于实现和训练神经网络的数学操作不兼容。因此,我们需要一种方法来将词语表示为连续值向量。

注意:如果读者对向量和张量不太了解,请参阅《机器学习数学基础》(电子工业出版社)

将数据转换为向量格式的概念通常被称为嵌入(embedding)。通过使用特定的神经网络层或另一个预训练的神经网络模型,我们可以嵌入不同类型的数据——例如视频、音频和文本,如图 2.2 所示。然而,需要注意的是,不同的数据格式需要不同的嵌入模型。例如,为文本设计的嵌入模型不适合用于嵌入音频或视频数据。

在这里插入图片描述

图 2.2 深度学习模型无法直接处理视频、音频和文本等原始数据格式。因此,我们使用嵌入模型将这些原始数据转换成密集的向量表示,以便深度学习架构能够容易地理解并处理。具体来说,此图展示了将原始数据转换为三维数值向量的过程。

在原理上讲,嵌入是从诸如词语、图像甚至是整个文档等离散对象到连续向量空间点的映射——嵌入的主要目的是将非数值数据转换成神经网络可以处理的格式。

虽然词嵌入是最常见的文本嵌入形式,但也存在针对句子、段落或整个文档的嵌入。句子或段落嵌入是增强检索生成(retrieval-augmented generation,RAG)的通常选择。RAG 结合了生成(如产生文本)与检索(如搜索外部知识库),以在生成文本时提取相关信息。但现在,我们的目标是训练类似 GPT 的 LLM,这些模型学习一次生成一个词的文本,所以还是要专注于词嵌入。

为了生成词嵌入,已经开发了多种算法和框架。一个较早且非常流行的是 Word2Vec 方法。Word2Vec 通过给定目标词预测其上下文或者相反的方式来训练神经网络架构以生成词嵌入。Word2Vec 背后的主要思想是出现在相似上下文中的词语往往具有相似的意义。因此,当为了可视化目的被投影到二维词嵌入时,相似的术语会被聚集在一起,如图 2.3 所示。

在这里插入图片描述

图 2.3 如果词嵌入是二维的,我们可以将它们绘制在一个二维散点图中以便于可视化,如这里所示。当使用词嵌入技术(例如Word2Vec)时,表示相似概念的词语在嵌入空间中往往彼此靠近。例如,在嵌入空间中,不同类型的鸟类相互之间的距离比国家和城市的距离要近。

词嵌入可以有不同的维度,从一维到数千维不等。更高的维度可能捕捉到更细致的关系,但会牺牲计算效率。

虽然我们可以使用预训练的模型如 Word2Vec 为机器学习模型生成嵌入,但 LLM 通常会生成作为输入层一部分并在训练过程中更新的自有嵌入。将嵌入作为 LLM 训练的一部分进行优化而非使用 Word2Vec 的优势在于,这些嵌入是针对特定任务和数据进行优化的。在后续内容中将实现这样的嵌入层。

不幸的是,高维嵌入对可视化提出了挑战,因为我们的感官感知和常用的图形表示本质上被限制在三维或更低维度,这就是为什么图 2.3 展示了二维嵌入在一个二维散点图中的原因。然而,在使用 LLM 时,通常使用的嵌入具有更高的维度。对于 GPT-2 和 GPT-3 来说,嵌入大小(通常称为模型隐藏状态的维度)根据具体的模型变体和大小而变化,这是性能与效率之间的权衡。最小的 GPT-2 模型(具有1.17亿和1.25亿参数)使用 768 维度的嵌入大小以提供具体的例子。最大的 GPT-3 模型(拥有1750亿参数)则使用 12,288 维度的嵌入大小。


原文:Sebastian Raschka. Build a Large Language Model(From Scratch),此处为原文的中文翻译,为了阅读方便,有适当修改。

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

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

相关文章

SQLMesh系列教程:利用date_spine宏构建日期序列实践指南

引言:为什么需要日期维度表? 在数据分析和报表开发中,日期维度表是不可或缺的基础结构,其中包括一定日期范围的日期序列,每个序列包括对应日期属性,如年季月日、是否周末等。无论是计算日粒度销售额、分析…

Java 大视界 -- 企业数字化转型中的 Java 大数据战略与实践(93)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

linux:环境变量,进程地址空间

一.命令行参数 main的参数:int argc,char*argv[],char*env[] 1.参数意义: argc是命令行调用次程序时传递的参数 例: ls -l -a 传递了三个参数,“ls" "-l" "-a"三个字符串 argv是传递的参…

mybatis集合映射association与collection

官方文档&#xff1a;MyBatis的一对多关联关系 一、用途 一对一&#xff1a;association 一对多&#xff1a;collection 二、association 比较容易理解&#xff0c;可参考官方文档 三、collection <?xml version"1.0" encoding"UTF-8"?> &l…

【AIGC】Win10系统极速部署Docker+Ragflow+Dify

【AIGC】WIN10仅3步部署DockerRagflowDify 一、 Docker快速部署1.F2进入bios界面&#xff0c;按F7设置开启VMX虚拟化技术。保存并退出。2.打开控制面板配置开启服务3.到官网下载docker安装包&#xff0c;一键安装&#xff08;全部默认勾选&#xff09; 二、 RagFlow快速部署1.确…

全局上下文网络GCNet:创新架构提升视觉识别性能

摘要&#xff1a;本文介绍了全局上下文网络&#xff08;GCNet&#xff09;&#xff0c;通过深入分析非局部网络&#xff08;NLNet&#xff09;&#xff0c;发现其在重要视觉识别任务中学习的全局上下文与查询位置无关。基于此&#xff0c;提出简化的非局部模块、全局上下文建模…

鸿蒙NEXT项目实战-百得知识库03

代码仓地址&#xff0c;大家记得点个star IbestKnowTeach: 百得知识库基于鸿蒙NEXT稳定版实现的一款企业级开发项目案例。 本案例涉及到多个鸿蒙相关技术知识点&#xff1a; 1、布局 2、配置文件 3、组件的封装和使用 4、路由的使用 5、请求响应拦截器的封装 6、位置服务 7、三…

Linux上位机开发实战(qt编译之谜)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很多同学都喜欢用IDE&#xff0c;也能理解。因为不管是visual studio qt插件&#xff0c;还是qt creator其实都帮我们做了很多额外的工作。这里面最…

【人工智能】【Python】在Scikit-Learn中使用网格搜索对决策树调参

这次实践课最大收获非网格搜索莫属。 # 导入包 import matplotlib.pyplot as plt import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split, GridSearchCV # 网格搜索 from sklearn.tree import DecisionTreeClassi…

用Python代码生成批量下单json

需求 根据以下json体&#xff0c;生成230OrderList对象生成10位有序的数字字母随机数赋值给OrderDetailList.ApiOrderId 和 OrderDetailList.Traceid生成的Json文件 保存在项目JSON目录中 {"UAccount": "xxxx","Password": "","…

TCP、UDP协议的应用、ServerSocket和Socket、DatagramSocket和DatagramPacket

DAY13.1 Java核心基础 TCP协议 TCP 协议是面向连接的运算层协议&#xff0c;比较复杂&#xff0c;应用程序在使用TCP协议之前必须建立连接&#xff0c;才能传输数据&#xff0c;数据传输完毕之后需要释放连接 就好比现实生活中的打电话&#xff0c;首先确保电话打通了才能进…

配置VMware Workstation中Ubuntu虚拟机与Windows主机的剪贴板共享功能

步骤1&#xff1a;安装或更新VMware Tools组件‌ ‌卸载旧版本工具&#xff08;可选&#xff09;‌ 若已安装旧版工具&#xff0c;建议先卸载&#xff1a; sudo apt-get autoremove open-vm-tools‌安装必需组件‌ sudo apt-get updatesudo apt-get install open-vm-tools o…

深入理解Python闭包与递归:原理、应用与实践

目录 闭包 什么是闭包&#xff1a; 闭包的基本结构&#xff1a; 实现闭包的条件&#xff1a; 1.嵌套函数 2.内函数引用外部函数的变量 3.外部函数返回内部函数 4.外部函数已经执行完毕 递归函数 什么是递归函数&#xff1a; 递归函数条件 1.必须有个明确的结束条…

SeaCMS代码审计

漏洞描述 漏洞分析 根据漏洞描述定位漏洞代码 当actionsaveCus或者save时&#xff0c;可以进行一个文件写入&#xff0c;不过文件类型被进行了限制&#xff0c;只有html,htm,js,txt,css 虽然这里并不能写入php文件&#xff0c;但是当actionadd或者custom时&#xff0c;这里进行…

好看的网络安全登录页面 vue http网络安全

一、http协议 http协议是一种网络传输协议&#xff0c;规定了浏览器和服务器之间的通信方式。位于网络模型中的应用层。&#xff08;盗图小灰。ヾ(◍∇◍)&#xff89;&#xff9e;&#xff09; 但是&#xff0c;它的信息传输全部是以明文方式&#xff0c;不够安全&#xff0c;…

Unity--GPT-SoVITS接入、处理GPTAPI的SSE响应流

GPT-SoVITS GPT-SoVITS- v2&#xff08;v3也可以&#xff0c;两者对模型文件具有兼容&#xff09; 点击后 会进入新的游览器网页 ----- 看了一圈&#xff0c;发现主要问题集中在模型的训练很需要CPU&#xff0c;也就是模型的制作上&#xff0c;问题很多&#xff0c;如果有现有…

Redis哈希槽机制的实现

Redis哈希槽机制的实现 Redis集群使用哈希槽&#xff08;Hash Slot&#xff09;来管理数据分布&#xff0c;整个集群被划分为固定的16384个哈希槽。当我们在集群中存储一个键时&#xff0c;Redis会先对键进行哈希运算&#xff0c;得到一个哈希值。然后&#xff0c;Redis将该哈…

docker pull 提示timeout

通过命令行拉取对应的mysql版本提示网络超时。 开始排查&#xff0c;首先确认是否能浏览器访问。ok的&#xff0c;可以正常访问。 终端curl 排查嗯 有问题 改了下 终端 vim ~/.zshrc 加入 export HTTP_PROXY"http://127.0.0.1:7890" export HTTPS_PROXY"…

(超详细) ETL工具之Kettle

Kettle简介 kettle最早是一个开源的ETL工具&#xff0c;后命名为Pentaho Data Integration。由JAVA开发&#xff0c;支持跨平台运行&#xff0c;其特性包括&#xff1a;支持100%无编码、拖拽方式开发ETL数据管道&#xff0c;可对接包括传统数据库、文件、大数据平台、接口、流…

random_masking 函数测试

文章目录 1. description2. excel3. pytorch code 1. description 功能&#xff1a;按一定比例的随机部分样本&#xff0c;简单来说就是按照一定的比例将行向量从小到大的顺序提取出来。思考1&#xff1a; 用了均匀分布&#xff0c;并且按照一定比例&#xff0c;取前prob概率来…