ChatGPT在做什么 第9章嵌入的概念

ChatGPT在做什么 第9章嵌入的概念

00:00
04:18
ChatGPT在做什么 第9章嵌入的概念
【“环绕”】
神经网络——至少目前是这样——基本上是基于数字的。因此,如果我们要使用它们来处理文本之类的东西,我们需要一种方法来用数字表示我们的文本。当然,我们可以开始(本质上像ChatGPT一样)仅为字典中的每个单词分配一个数字。但有一个重要的想法——比如chatgpt的核心——超越了这一点。这就是“嵌入”的概念。人们可以把嵌入看作是一种用数字数组来表示事物“本质”的方法,其属性是“附近的事物”由附近的数字表示。因此,例如,我们可以把一个词嵌入想象成试图在一种“意义空间”中布局单词,在这种空间中,在某种程度上“意义相近”的单词出现在嵌入的附近。实际使用的嵌入(比如在chatgpt中)往往涉及大量数字列表。但如果我们将其投影到2D,我们可以展示文字是如何通过嵌入来布局的例子:是的,我们所看到的在捕捉典型的日常印象方面表现得非常好。但是我们如何构建这样的嵌入呢?大致的想法是查看大量的文本(这里是来自网络的50亿个单词),然后看看不同单词出现的“环境”有多相似。例如,“短吻鳄”和“鳄鱼”通常会在相似的句子中互换出现,这意味着它们会被放置在嵌入的附近。但是“萝卜”和“鹰”不会出现在其他相似的句子中,所以它们在嵌入时被放置得很远。但是如何用神经网络实现这样的东西呢?让我们从讨论嵌入开始,不是为单词,而是为图像。我们想找到一种方法,通过数字列表来描述图像,这样“我们认为相似的图像”就会被分配到类似的数字列表。我们如何判断我们是否应该“考虑图像相似”?好吧,如果我们的图像是手写的数字,如果它们是相同的数字,我们可能会“认为两张图像相似”。前面我们讨论了一个神经网络,它被训练来识别手写数字。我们可以把这个神经网络想象成这样,在它的最终输出中,它把图像放入10个不同的箱子里,每个箱子对应一个数字。但是,如果我们在最终做出“这是一个‘4’”的决定之前,“拦截”神经网络内部正在发生的事情呢?我们可能会期望在神经网络中有一些数字将图像描述为“主要像4,但有点像2”或诸如此类的数字。这个想法是挑选这样的数字作为嵌入的元素。这就是这个概念。我们没有直接尝试描述“哪个图像靠近另一个图像”,而是考虑一个定义良好的任务(在这种情况下是数字识别),我们可以获得明确的训练数据,然后利用这样一个事实,即在执行这个任务时,神经网络隐含地必须做出“接近决策”。因此,我们从来没有明确地讨论过“图像的接近性”,我们只是在讨论图像代表哪个数字的具体问题,然后我们“把它留给神经网络”来隐含地确定“图像的接近性”意味着什么。那么,在数字识别网络中,这是如何工作的呢?我们可以把网络想象成由11个连续的层组成,我们可以像这样总结(激活函数显示为单独的层):在开始时,我们向第一层提供实际图像,由像素值的2D数组表示。在最后——从最后一层——我们得到了一个包含10个值的数组,我们可以认为网络“有多确定”图像对应于0到9的每一个数字。换句话说,神经网络在这一点上“非常确定”这张图像是4,为了实际得到输出“4”,我们只需要挑出值最大的神经元的位置。但如果我们早一步看呢?网络中的最后一个操作是所谓的softmax,它试图“强制确定”。但在此之前,神经元的值是:表示“4”的神经元仍然具有最高的数值。但在其他神经元的值中也有信息。我们可以预期,这一系列数字在某种意义上可以用来描述图像的“本质”,从而提供一些我们可以用作嵌入的东西。因此,例如,这里的每个4都有一个略微不同的“签名”(或“特征嵌入”)——都与8非常不同:在这里,我们本质上是用10个数字来描述我们的图像。但通常情况下,用得更多会更好。例如,在我们的数字识别网络中,我们可以通过接入上一层来获得一个500个数字的数组。和
【以上,把单词看成“图像”来识别,来嵌入周围】

如果我们想对手写数字进行“图像空间”的显式可视化,我们需要“降维”,有效地将我们已经得到的500维向量投影到3D空间中:我们刚刚讨论了通过确定图像是否对应于相同的手写数字(根据我们的训练集)来有效地识别图像的相似性,从而为图像创建特征(从而嵌入)。如果我们有一个训练集,可以识别出每张图像是5000种常见对象(猫、狗、椅子……)中的哪一种,那么我们可以更普遍地对图像做同样的事情。通过这种方式,我们可以通过识别常见物体来“锚定”图像嵌入,但随后根据神经网络的行为“围绕它进行推广”。关键是,只要这种行为与我们人类感知和解释图像的方式一致,这将最终成为一种“对我们来说似乎正确”的嵌入,并在实践中用于执行“类似人类判断”的任务。那么,我们如何遵循同样的方法来为单词寻找嵌入呢?关键是从我们可以很容易训练的单词任务开始。这样的标准任务是“单词预测”。想象我们得到了“___猫”。基于一个大型的文本语料库(比如,web的文本内容),不同的单词可能“填补空白”的概率是多少?或者,或者,给定“___黑___”,不同“侧翼词”的概率是多少?我们如何为神经网络设置这个问题呢?最终我们必须用数字来表示所有东西。其中一种方法就是给英语中大约5万个常用单词中的每一个都指定一个唯一的数字。例如,“the”可能是914,而“cat”(前面有空格)可能是3542。(这些是GPT-2使用的实际数字。)所以对于“___猫”问题,我们的输入可能是{914,3542}。输出应该是什么样的?好吧,它应该是一个大约5万个数字的列表,有效地给出了每个可能的“填充”单词的概率。再一次地,为了找到一个嵌入,我们想要在神经网络“得出结论”之前“拦截”神经网络的“内部”,然后选择出现在那里的数字列表,我们可以认为这是“表征每个单词”。那么这些特征是怎样的呢?在过去的10年里,已经开发了一系列不同的系统(word2vec, GloVe, BERT, GPT,…),每个系统都基于不同的神经网络方法。但最终它们都用成百上千个数字组成的列表来描述单词。在它们的原始形式中,这些“嵌入向量”是相当没有信息的。例如,这是GPT-2为三个特定的单词生成的原始嵌入向量:如果我们做一些事情,比如测量这些向量之间的距离,那么我们可以找到单词的“接近度”。稍后,我们将更详细地讨论我们可能认为这种嵌入的“认知”意义。但目前的重点是,我们有一种方法可以有效地将单词转化为“神经网络友好”的数字集合。但实际上,我们可以更进一步,不仅仅是用数字的集合来描述单词;我们也可以对单词序列或整个文本块进行此操作。在ChatGPT内部,这就是它处理事情的方式。它获取到目前为止的文本,并生成一个嵌入向量来表示它。然后,它的目标是找出接下来可能出现的不同单词的概率。它用一组数字来表示这个问题的答案这些数字给出了这5万个左右可能单词的概率。(严格来说,ChatGPT不处理单词,而是处理“标记”——方便的语言单位,可能是整个单词,也可能只是像“pre”、“ing”或“ized”这样的小块。使用令牌可以让ChatGPT更容易处理罕见、复合和非英语单词,有时还可以发明新词。)
以上内容来自专辑
用户评论

    还没有评论,快来发表第一个评论!