为什么对ChatGPT、ChatGLM这样的大语言模型说“你是某某领域专家”( 十 )


例如,我们可以将词嵌入视为一种试图在某种“意义空间”中布置单词的方式,在该空间中,意义上相近的单词在嵌入中靠近 。实际使用的嵌入(比如在中)往往涉及大量的数字列表 。但如果我们将其投影到二维空间,我们可以展示单词在嵌入中的布局示例:
然而,我们该如何构建这样的嵌入呢?大致的思路是观察大量的文本(比如来自网络的50亿个单词),然后看不同单词出现在哪些“环境”中时有多相似 。举个例子,""和""在其他相似的句子中几乎可以互换,这意味着它们在嵌入中会被放置在附近 。但"萝卜"和"老鹰"在其他相似的句子中不太可能同时出现,因此它们会在嵌入中被放置得很远 。
那么,如何使用神经网络来实现这样的嵌入呢?让我们首先讨论图像的嵌入,而不是单词的嵌入 。我们希望找到一种方式,通过一系列数字来描述图像,以便“我们认为相似的图像”被分配相似的数字列表 。
我们如何判断是否应该“认为图像相似”呢?嗯,如果我们的图像是手写数字的图像,我们可能会“认为两个图像相似”,如果它们是相同的数字 。之前我们讨论过一个被训练用于识别手写数字的神经网络 。我们可以将这个神经网络设置为将图像分为10个不同的类别,每个类别对应一个数字,在其最终输出中 。
但如果我们在最终“它是一个‘4’”的决策被做出之前“拦截”神经网络内部发生的情况呢?我们可能会预期,在神经网络内部存在一些数字,用于描述图像“在很大程度上类似于‘4’,但有点像‘2’”或类似的情况 。这个想法是选择这些数字作为嵌入中的元素 。
所以,这是个概念 。我们不直接尝试描述“哪个图像靠近哪个图像”,而是考虑一个明确定义的任务(在这种情况下是数字识别),我们可以获得明确的训练数据,然后利用这个事实,在执行这个任务时,神经网络隐含地做出了类似于“靠近性决策”的决策 。所以,我们不必明确讨论“图像的靠近性”,我们只是在讨论关于图像所代表的具体问题,然后我们“交给神经网络”隐含地确定这对于“图像的靠近性”意味着什么 。
那么,对于数字识别网络,具体是如何工作的呢?我们可以将该网络看作由11个连续的层组成,我们可以将其以如下方式进行图示总结(其中激活函数显示为单独的层):
在开始时,我们将实际图像输入到第一层,图像由像素值的二维数组表示 。在最后一层,我们得到一个包含10个值的数组,可以理解为表示网络对图像对应于数字0到9的确定程度 。
输入图像后,最后一层神经元的值为:
换句话说,到这一步,神经网络对这个图像是数字4非常确定,而要得到输出的“4”,我们只需选出具有最大值的神经元的位置 。
但是如果我们再往前看一步呢?网络中的最后一个操作是所谓的,它试图“强制确定性” 。但在应用之前,神经元的值是:
仍然有一个神经元代表着数字“4”,并具有最高的数值 。但其他神经元的值中也包含了信息 。我们可以预期,这个数字列表可以在某种程度上用来表征图像的“本质”,从而提供我们可以用作嵌入的东西 。例如,这里的每个数字“4”都有略微不同的“特征签名”(或“特征嵌入”),而与数字“8”完全不同:
在这里,我们基本上使用了10个数字来描述我们的图像 。但通常最好使用更多的数字 。例如,在我们的数字识别网络中,通过访问前一层,我们可以得到一个包含500个数字的数组 。这可能是一个合理的用作“图像嵌入”的数组 。
如果我们想对手写数字的“图像空间”进行明确的可视化,我们需要“降低维度”,通过将我们得到的500维向量投影到,比如,3D空间中: