LLM是一个向量程序库,提示是查询语言

2013 年,Mikolov 等人在 Google。 注意到一些值得注意的事情。

他们正在构建一个模型,将单词嵌入到向量空间中——这个问题从 20 世纪 80 年代开始就已经有很长的学术历史了。 他们的模型使用了一个优化目标,旨在将单词之间的相关关系转化为嵌入空间中的距离关系:一个向量与词汇表中的每个单词相关联,并且对向量进行优化,以便表示向量之间的点积(余弦接近度) 频繁共现的单词将更接近 1,而表示很少共现的向量之间的点积将更接近 0。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包

他们发现由此产生的嵌入空间不仅仅能够捕获语义相似性。 它具有某种形式的突发学习能力——它能够执行“文字算术”,这是它未经训练的能力。 空间中存在一个向量,可以将其添加到任何男性名词上,以获得一个接近其女性对应词的点。 如: V(king) - V(man) + V(woman) = V(queen)。 “性别向量”。 很酷! 似乎有几十个这样的神奇向量——一个复数向量,一个从野生动物名称到最接近的宠物名称的向量,等等。

插图:一个 2D 嵌入空间,使得连接“狼”和“狗”的向量与连接“虎”和“猫”的向量相同。

1、Word2Vec 和LLM:赫布学习类比

快进十年——我们现在处于LLM时代。 从表面上看,现代LLM似乎与原始的 word2vec 模型相差无几。 它们能生成完美流利的语言——这是 word2vec 完全无法做到的——并且似乎对任何主题都很了解。 然而,它们实际上与古老的 word2vec 有很多共同点。

两者都是关于在向量空间中嵌入标记(单词或子单词)。 两者都依赖相同的基本原理来学习这个空间:一起出现的标记最终在嵌入空间中靠近在一起。 在这两种情况下,用于比较标记的距离函数是相同的:余弦距离。 甚至嵌入空间的维数也相似:约为 10e3 或 10e4。

你可能会问——等等,有人告诉我LLM是自回归模型,经过训练可以根据前一个单词序列预测下一个单词。 这与 word2vec 最大化共现标记之间点积的目标有何关系?

在实践中,LLM似乎确实在接近的位置对相关标记进行编码,因此必须存在联系。 答案是自注意力(self-attention)。

自注意力是 Transformer 架构中最重要的组成部分。 它是一种通过线性重新组合来自某些先前空间的令牌嵌入来学习新令牌嵌入空间的机制,加权组合对已经彼此“更接近”的令牌(即具有更高的点积)给予更大的重要性。 它将倾向于将已经接近的标记的向量聚集在一起——随着时间的推移,在一个空间中,标记相关关系转变为嵌入邻近关系(以余弦距离而言)。 Transformer 通过学习一系列逐步完善的嵌入空间来工作,每个嵌入空间都基于重新组合前一个嵌入空间的元素。

自注意力如何工作:这里计算“station”和序列中每个其他单词之间的注意力分数,然后使用它们对成为新“station”向量的单词向量之和进行加权。

自注意力赋予 Transformer 两个关键属性:

  • 他们学习的嵌入空间在语义上是连续的,即在嵌入空间中移动一点只会稍微改变相应标记的面向人类的含义。 word2vec空间也验证了这个性质。
  • 他们学习的嵌入空间在语义上是插值的,即在嵌入空间中的两点之间取中间点会产生一个代表相应标记之间“中间含义”的点。 这是因为每个新的嵌入空间都是通过在前一个空间的向量之间进行插值来构建的。

请注意,这与大脑的学习方式并不完全不同。 大脑中的关键学习原理是赫布学习——简而言之,“神经元一起放电,连接在一起”。 神经放电事件(可能代表动作或感知输入)之间的相关关系被转化为大脑网络中的邻近关系,就像transformer(和 word2vec)将相关关系转变为向量邻近关系一样。 两者都是信息空间的地图。

3、从涌现词算术到涌现向量程序

当然,word2vec 和 LLM 之间也存在显着差异。 Word2vec 并不是为生成文本采样而设计的。 LLM 更大,可以编码更复杂的转换。 事实是,word2vec 在很大程度上是一个玩具模型:它对于语言建模就像 MNIST 像素上的逻辑回归对于最先进的图像计算机视觉模型一样。 基本原理基本相同,但玩具模型缺乏任何有意义的表示能力。 Word2vec 甚至不是深度神经网络——它具有浅层、单层架构。 与此同时,LLM 具有任何人训练过的任何模型中最高的表示能力——它们具有数十个 Transformer 层,总共数百层,参数数量范围达到数十亿。

就像 word2vec 一样,LLM最终会学习有用的语义函数,作为将标记组织到向量空间的副产品。 但由于表示能力的增强和更精细的自回归优化目标,我们不再局限于“性别向量”或“复数向量”等线性变换。 LLM 可以存储任意复杂的向量函数——事实上,如此复杂,以至于将它们称为向量程序而不是函数会更准确。

Word2vec 使你能够执行基本操作,例如 plural(cat) → cats or male_to_female(king) → queen。 与此同时,LLM可以创造纯粹的魔法——比如 write_this_in_style_of_shakespeare("…your poem…") → "…new poem…"。 它们包含数百万个这样的程序。

4、LLM作为程序数据库

你可以将 LLM 视为类似于数据库:它存储信息,你可以通过提示检索这些信息。 但LLM和数据库之间有两个重要的区别。

第一个区别是LLM是一种连续的插值数据库。 你的数据不是存储为一组离散条目,而是存储为向量空间(一条曲线)。 你可以在曲线上移动(正如我们所讨论的,它在语义上是连续的)以探索附近的相关点。 你可以在不同数据点之间的曲线上进行插值以找到它们的中间值。 这意味着你可以从数据库中检索的内容比你输入的内容多得多 - 尽管并非所有内容都是准确的,甚至是有意义的。 插值可以导致泛化,但也可能导致幻觉。

第二个区别是LLM不仅仅包含数据。 它确实包含大量数据——事实、地点、人物、日期、事物、关系。 但它也是——或许主要是——一个程序数据库。

请注意,它们并不完全是你习惯处理的那种程序。 你可能会想到确定性的 Python 程序——一系列逐步处理数据的符号语句。 不是这个。 相反,这些向量程序是高度非线性的函数,将潜在嵌入空间映射到自身。 类似于 word2vec 的魔法向量,但要复杂得多。

5、作为程序查询的提示

要从LLM那里获取信息,你必须提示它。 如果LLM就像一个包含数百万个矢量程序的数据库,那么提示就像该数据库中的搜索查询。 提示的一部分可以解释为“程序键”,即您要检索的程序的索引,部分可以解释为程序输入。

考虑以下示例提示: rewrite the following poem in the style of Shakespeare: …my poem…

  • “rewrite this in the style of”是程序的关键。 它指向程序空间中的特定位置。
  • “Shakespeare”和 “..my poem…”是程序输入。
  • LLM 的输出是程序执行的结果。

现在,请记住,LLM 作为程序数据库的类比只是一个心理模型 - 你还可以使用其他模型。 一种更常见但不太具有启发性的方法是将LLM视为自回归文本生成器,它输出最有可能遵循给定训练数据分布的提示的单词序列之一,即专注于LLM优化的任务。 如果你牢记多种方法来模拟LLM的工作,你就会更好地理解LLM——希望你会发现这个新方法很有用。

6、提示工程作为程序搜索过程

请记住,这个“程序数据库”是连续的和插值的——它不是一组离散的程序。 这意味着稍微不同的提示,例如“以 x 的风格抒情地重新表述此文本”仍然会指向程序空间中非常相似的位置,从而导致程序的行为非常接近但不完全相同。

你可以使用数千种变体,每种变体都会产生相似但略有不同的程序。 这就是为什么需要提示的工程设计。 没有先验的理由说明为什么你的第一个简单的程序密钥会产生该任务的最佳程序。 LLM不会“理解”你的意思,然后以最好的方式执行它——它只是在你可能到达的许多可能的位置中获取你的提示指向的程序。

提示工程是搜索程序空间以找到根据经验似乎在目标任务上表现最佳的程序的过程。 这与在 Google 搜索某个软件时尝试不同的关键字没有什么不同。

如果LLM实际上理解了你告诉他们的内容,则不需要此搜索过程,因为无论你的提示使用““rewrite”一词而不是“rephrase”,,还是你使用前缀,所传达的有关目标任务的信息量都不会改变你的提示是“一步一步思考”。 永远不要假设LLM第一次就“明白了”——请记住,你的提示只是无限程序海洋中的一个地址,所有这些都是通过自回归优化目标将标记组织到向量空间中的副产品。

一如既往,理解LLM最重要的原则是你应该抵制将其拟人化的诱惑。


原文链接:我理解的LLM提示工程 - BimAnt

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

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

相关文章

Nicn的刷题日常之获得月份天数

目录 1.题目描述 描述 输入描述: 输出描述: 示例1 2.解题 1.题目描述 描述 KiKi想获得某年某月有多少天,请帮他编程实现。输入年份和月份,计算这一年这个月有多少天。 输入描述: 多组输入,一行有两…

JVM Java虚拟机入门指南

文章目录 为什么学习JVMJVM的执行流程JVM的组成部分类加载运行时数据区本地方法接口执行引擎 垃圾回收什么样的对象是垃圾呢内存溢出和内存泄漏定位垃圾的方法对象的finalization机制垃圾回收算法分代回收垃圾回收器 JVM调优参数JVM调优工具Java内存泄漏排查思路CPU飙高排查方案…

Jmeter 01 -概述线程组

1、Jmeter:概述 1.1 是什么? Jmeter是Apache公司使用Java 开发的一款测试工具 1.2 为什么? 高效、功能强大 模拟一些高并发或多次循环等特殊场景 1.3 怎么用? 下载安装 1、下载jmeter,解压缩2、安装Java环境(jmet…

SpringBoot Security安全认证框架初始化流程认证流程之源码分析

SpringBoot Security安全认证框架初始化流程&认证流程之源码分析 以RuoYi-Vue前后端分离版本为例分析SpringBoot Security安全认证框架初始化流程&认证流程的源码分析 目录 SpringBoot Security安全认证框架初始化流程&认证流程之源码分析一、SpringBoot Security安…

BUUCTF-Real-[struts2]s2-001

漏洞描述 struts2漏洞 S2-001是当用户提交表单数据且验证失败时,服务器使用OGNL表达式解析用户先前提交的参数值,%{value}并重新填充相应的表单数据。例如,在注册或登录页面中,如果提交失败,则服务器通常默认情况下将返…

Linux嵌入式开发+驱动开发-中断

swi汇编指令可以产生软中断,以下是硬件中断的产生到执行完毕的全过程: 在自己设计的芯片“CPU响应中断”程序的第四个步骤可以转向“中断向量控制器”,中断向量控制器中存储中断元服务地址即处理中断处理程序的地址,而不用使用0X1…

算法学习——LeetCode力扣链表篇2

算法学习——LeetCode力扣链表篇2 24. 两两交换链表中的节点 24. 两两交换链表中的节点 - 力扣(LeetCode) 描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&…

ppt怎么转成pdf文件?3种超实用PPT转PDF方法分享

ppt怎么转成pdf文件?在日常办公中,将PPT转换为PDF文件具有很多实际的好处。首先,PDF文件是一种通用的文件格式,可以在各种操作系统和设备上轻松打开和查看,不受源文件的限制。其次,将PPT转换为PDF可以很好地…

龙测科技荣获2023年度技术生态构建奖

本月,由极客传媒举办的“有被Q到”2024 InfoQ 极客传媒合作伙伴年会顺利举办,龙测科技喜获2023年度技术生态构建奖。 InfoQ是首批将Node.js、HTML5、Docker等技术全面引入中国的技术媒体之一,秉承“扎根社区、服务社区、引领社区”的理念&…

ctfshow-web1~10-WP

web1 右键查看源码就能看到flag web2 打开网页提示无法查看源代码,右键也使用不了,那我们就在url前面加上view-source: view-source:http://83a83588-671e-4a94-9c6f-6857f9e20c2f.chall.ctf.show/ 访问后即可获得flag web3 右键源码也没看到信息,去查看一下请求头和响应…

C# Onnx GroundingDINO 开放世界目标检测

目录 介绍 效果 模型信息 项目 代码 下载 介绍 地址:https://github.com/IDEA-Research/GroundingDINO Official implementation of the paper "Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection" 效果 …

二叉树经典题题解(超全题目)(力扣)

✨欢迎来到脑子不好的小菜鸟的文章✨ 🎈创作不易,麻烦点点赞哦🎈 所属专栏:刷题 我的主页:脑子不好的小菜鸟 文章特点:关键点和步骤讲解放在 代码相应位置 144. 二叉树的前序遍历 题目链接:h…

MySQL组复制的介绍

前言 本文介绍关于MySQL组复制的背景信息和基本原理。包括,介绍MySQL传统复制方法的原理和隐患、介绍组复制的原理,单主模式和多主模式等等。通过结合原理图学习这些概念,可以很好的帮助我们理解组复制技术这一MySQL高可用方案,有…

7.0 Zookeeper 客户端基础命令使用

zookeeper 命令用于在 zookeeper 服务上执行操作。 首先执行命令,打开新的 session 会话,进入终端。 $ sh zkCli.sh 下面开始讲解基本常用命令使用,其中 acl 权限内容在后面章节详细阐述。 ls 命令 ls 命令用于查看某个路径下目录列表。…

LRU缓存

有人从网络读数据,有人从磁盘读数据,机智的人懂得合理利用缓存加速数据的读取效率,提升程序的性能,搏得上司的赏识,赢得白富美的青睐,进一步走向人生巅峰~ LRU假说 LRU缓存(Least Recently Used…

Webshell一句话木马

一、webshell介绍(网页木马) 分类: 大马:体积大、隐蔽性差、功能多 小马:体积小,隐蔽强,功能少 一句话木马:代码简短,灵活多样 二、一句话木马: :…

架构整洁之道-软件架构-展示器和谦卑对象、不完全边界、层次与边界、Main组件、服务

6 软件架构 6.9 展示器和谦卑对象 在《架构整洁之道-软件架构-策略与层次、业务逻辑、尖叫的软件架构、整洁架构》有我们提到了展示器(presenter),展示器实际上是采用谦卑对象(humble object)模式的一种形式&#xff…

Linux第42步_移植ST公司uboot的第3步_uboot命令测试,搭建nfs服务器和tftp服务器

测试uboot命令,搭建nfs服务器和tftp服务器,是测试uboot非常关键的一步。跳过这一节,后面可能要踩坑。 一、输入“help回车”,查询uboot所支持的命令 二、输入“? bootz回车”,查询“bootz”怎么用 注意:和…

如何正确理解和获取S参数

S参数是网络参数,定义了反射波和入射波之间的关系,给定频率的S参数矩阵指定端口反射波b的矢量相对于端口入射波a的矢量,如下所示: bS∙a 在此基础上,如下图所示,为一个常见的双端口网络拓扑图:…

红队打靶练习:HEALTHCARE: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 目录探测 1、gobuster 2、dirsearch WEB web信息收集 gobuster cms sqlmap 爆库 爆表 爆列 爆字段 FTP 提权 信息收集 本地提权 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Inte…