专栏名称: 待字闺中
深度分析大数据、深度学习、人工智能等技术,切中实际应用场景,为大家授业解惑。间或,也会介绍国内外相关领域有趣的面试题。
目录
相关文章推荐
陕西省文化和旅游厅  ·  陕西过大年 | ... ·  2 天前  
陕西省文化和旅游厅  ·  陕西过大年 | ... ·  2 天前  
西安晚报  ·  明天22时10分!陕西正式进入... ·  4 天前  
51好读  ›  专栏  ›  待字闺中

如何看待大型语言模型的Prompt

待字闺中  · 公众号  ·  · 2023-11-24 09:02

正文

回顾:Word2Vec中涌现的词语算术

他们正在构建一个模型,将单词嵌入到向量空间中——这个问题在当时已经有了悠久的学术历史,始于1980年代。他们的模型使用了一个优化目标,旨在将单词之间的相关关系转化为嵌入空间中的距离关系:每个单词都与一个向量相关联,这些向量经过优化,使得代表频繁共现单词的向量之间的点积(余弦接近度)更接近1,而代表罕见共现单词的向量之间的点积更接近0。

他们发现,生成的嵌入空间不仅能捕捉语义相似性,还具有某种形式的涌现学习能力——它能够执行“词算术”,这是它未经训练就能做到的事情。在这个空间中存在一个向量,可以加到任何男性名词上,得到的点会靠近其女性等价物。例如:V(国王) - V(男人) + V(女人) = V(女王)。一个“性别向量”。非常酷!似乎有许多这样的神奇向量——复数向量,从野生动物名称到最接近的宠物等价物的向量,等等。

Word2Vec与LLMs:赫布(Hebbian learning)学习类比

快进十年——我们现在正处于大型语言模型(LLMs)的时代。从表面上看,现代的大型语言模型与原始的word2vec模型似乎完全不同。它们能够生成完全流畅的语言——这是word2vec完全做不到的壮举——并且似乎对任何话题都了如指掌。然而,它们实际上与老朋友word2vec有很多共同之处。

两者都涉及将标记(单词或子词)嵌入到向量空间中。两者都依赖于相同的基本原则来学习这个空间:一起出现的标记在嵌入空间中最终会靠得很近。用于比较标记的距离函数在两种情况下都是相同的:余弦距离。即使是嵌入空间的维度也是相似的:大约在10e3或10e4的数量级。

你可能会问——等等,我被告知LLMs是自回归模型,它们被训练用来预测基于之前单词序列的下一个单词。这和word2vec的目标——最大化共现词汇之间的点积——有什么关系呢?

在实践中,大型语言模型确实似乎在接近的位置编码了相关的标记,因此必然存在某种联系。答案就是自注意力。

自注意力是Transformer架构中最重要的单一组件。它是一种通过线性重新组合来自某个先前空间的令牌嵌入,以加权组合的方式学习新的令牌嵌入空间的机制,这种组合赋予了更大的重要性给那些已经“更接近”彼此的令牌(即,具有更高点积的令牌)。它会倾向于将已经接近的令牌的向量拉近——随着时间的推移,令牌相关性关系会转变为嵌入邻近性关系(就余弦距离而言)。Transformer通过学习一系列逐步精细化的嵌入空间来工作,每个空间都基于从前一个空间重新组合元素。

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

1. 它们学习的嵌入空间在语义上是连续的,即在嵌入空间中稍微移动一点,只会稍微改变相应标记的面向人类的含义。word2vec空间也验证了这一属性。

2. 它们学习的嵌入空间在语义上是可插值的,即在嵌入空间中两点之间取中间点会产生一个代表相应标记之间“中间含义”的点。这是因为每个新的嵌入空间都是通过对前一个空间中的向量进行插值来构建的。

这与大脑学习的方式有些相似,请注意。大脑中的关键学习原则是赫布学习——简而言之,“一起放电的神经元会一起连接”。神经元放电事件(可能代表动作或感知输入)之间的相关关系被转化为大脑网络中的邻近关系,就像Transformer(以及word2vec)将相关关系转化为向量邻近关系一样。两者都是信息空间的映射。

从兴起词算术到兴起向量程序

当然,word2vec和大型语言模型(LLMs)之间也存在显著差异。word2vec并不是为生成文本采样而设计的。大型语言模型要大得多,能够编码更为复杂的转换。问题在于,word2vec非常像一个玩具模型:它之于语言建模,就像逻辑回归在MNIST像素上之于最先进的图像计算机视觉模型。基本原理大体相同,但玩具模型缺乏任何有意义的表示能力。word2vec甚至不是一个深度神经网络——它有一个浅层的单层架构。与此同时,大型语言模型拥有迄今为止任何模型都未曾有过的最高表示能力——它们具有数十个Transformer层,总共数百层,其参数数量达到了数十亿。

就像word2vec一样,LLMs在将标记组织到向量空间的过程中,作为副产品学会了有用的语义功能。但是得益于这种增强的表示能力和更加精细的自回归优化目标,我们不再局限于像“性别向量”或“复数向量”这样的线性变换。LLMs可以存储任意复杂的向量函数——实际上,这些函数复杂到更准确的说法是将它们称为向量程序而不是函数。

Word2vec让你能做一些基本的事情,比如将复数形式(plural(cat))转换为cats,或者将男性转换为女性(male_to_female(king))变为queen。与此同时,大型语言模型(LLMs)可以做纯粹的魔法——比如将write_this_in_style_of_shakespeare("...你的诗...")转换为"…新的诗…”。而且它们包含了数百万这样的程序。

LLM作为程序数据库

你可以将大型语言模型视为类似于数据库:它存储信息,你可以通过提示来检索信息。但是大型语言模型和数据库之间有两个重要的区别。

第一个区别是,LLM是一种连续的、插值式的数据库。你的数据不是以一组离散条目的形式存储,而是以向量空间——一条曲线的形式存储。你可以在曲线上移动(正如我们讨论的,它在语义上是连续的),以探索附近的、相关的点。你还可以在曲线上不同数据点之间进行插值,以找到它们之间的中间点。这意味着你可以从数据库中检索到的信息远远超过你输入的信息——尽管并非所有信息都是准确的或有意义的。插值可能导致概括,但也可能导致幻觉。

第二个区别在于,大型语言模型不仅仅包含数据。它确实包含了大量的数据——事实、地点、人物、日期、事物、关系。但它也是——或许主要是——一个程序数据库。

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

作为程序查询的 Prompt

要从大型语言模型中获取信息,你需要给它提供提示。如果说大型语言模型就像是包含数百万向量程序的数据库,那么提示就像是在该数据库中的搜索查询。你的提示的一部分可以被解释为“程序键”,即你想检索的程序的索引,另一部分可以被解释为程序输入。

请参考以下示例提示:“rewrite the following poem in the style of Shakespeare: …my poem…”







请到「今天看啥」查看全文