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


我们可以将其视为实现一种“识别任务”,我们不是在做像识别给定图像最接近哪个数字之类的事情,而是直接确定一个给定的点最靠近哪个点 。(我们在这里展示的“ 图”,将平面欧几里德空间中的点分开;可以将数字识别任务看作是在由每个图像中所有像素的灰度级组成的 784 维空间中进行非常类似的操作 。)
(注:784 维空间 784- space是一个矩阵,不用纠结为什么是784 维,这也是为什么人工智能受制于算力的原因:计算量大 。现在优化计算量也是正在研究的方向之一 。)??
那么,如何使神经网络“执行识别任务”呢?让我们考虑这个非常简单的案例:
我们的目标是获取与位置 { x , y } 相对应的“输入”,然后将其“识别”为最接近的三个点之一 。换句话说,我们希望神经网络计算一个关于 { x , y } 的函数,类似于:
那么如何使用神经网络实现这个功能呢?实际上,神经网络是由理想化的“神经元”组成的连接集合,通常以层的方式排列 。一个简单的示例如下所示:
(注:这个图就是神经网络的基本结构,一共四层,更复杂的神经网络也是在这个基础上演变而来,组合了多层)
每个“神经元”实际上被设置为评估一个简单的数值函数 。为了“使用”网络,我们只需在顶部输入数字(如坐标x和y),然后让每个层上的神经元“评估其函数”并将结果沿网络向前传递,最终在底部产生最终结果 。
在传统的(受生物启发的)设置中,每个神经元从前一层的神经元那里有效地获得一定数量的“传入连接”,每个连接都被赋予一定的“权重”(可以是正数或负数) 。给定神经元的值由将“前一层神经元”的值乘以它们对应的权重,然后加总并加上一个常数来确定,并最终应用“阈值化”(或“激活”)函数来确定 。在数学上,如果一个神经元具有输入x = {x1,x2 ...},我们计算f[w . x + b],其中权重w和常数b通常对于网络中的每个神经元选择不同;函数f通常是相同的 。
计算w . x + b只是矩阵乘法和加法的问题 。激活函数f引入了非线性(最终导致非平面的行为) 。常用的激活函数有很多种;在这里,我们将使用斜坡函数(或ReLU):
对于我们希望神经网络执行的每个任务(或者等效地说,我们希望它评估的每个整体函数),我们将有不同的权重选择 。(正如我们将在后面讨论的那样,这些权重通常通过使用机器学习从我们希望的输出的示例来“训练”神经网络来确定 。)
最终,每个神经网络只对应某个整体的数学函数,尽管可能很复杂 。对于上面的示例,它可能如下所示:
的神经网络也只对应类似的数学函数,但实际上有数十亿个项 。
让我们回到单个神经元 。下面是一个具有两个输入(表示坐标x和y)的神经元在各种权重和常数选择下可以计算的函数的示例(使用斜坡函数作为激活函数):
那么关于上面的较大网络呢?嗯,它计算的是这个:
它不完全“正确”,但接近我们上面展示的“最近点”函数 。
让我们看看其他一些神经网络的情况 。在每种情况下,我们将在稍后解释,我们使用机器学习找到最佳的权重选择 。然后在这里展示具有这些权重的神经网络计算的结果:
更大的网络通常更好地逼近我们的目标函数 。在每个吸引子盆地的“中间”,通常我们会得到我们想要的答案 。但在边界处,神经网络“很难下定决心”的地方,情况可能会比较混乱 。
在这个简单的数学风格的“识别任务”中,很明显“正确答案”是什么 。但在识别手写数字的问题中,情况就不那么清楚了 。如果有人把“2”写得像“7”呢?等等 。尽管如此,我们可以询问神经网络如何区分数字,这给出了一些线索: