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


在神经网络的早期阶段,人们倾向于认为“让神经网络尽可能少地做事情”是一个好主意 。例如,在将语音转换为文本时,人们认为应该先分析语音的音频,将其分解为音素等 。但后来发现,至少对于“类人任务”来说,通常更好的方法是只需尝试对“端到端问题”进行神经网络训练,让它“发现”必要的中间特征、编码等 。
还有一个观点认为,应该向神经网络引入复杂的单个组件,以实际上“明确实施特定的算法思想” 。但同样地,这大多数情况下都不值得 。相反,最好只使用非常简单的组件,并让它们“自行组织”(尽管通常是以我们无法理解的方式)来实现(推测上)等效的算法思想 。
这并不意味着神经网络没有相关的“结构化思想” 。例如,在处理图像的早期阶段,拥有具有局部连接的二维神经元阵列似乎至少非常有用 。而在处理诸如人类语言(例如中)之类的事物时,具有“向后查看序列”的连接模式似乎也很有用,我们稍后会看到 。
但神经网络的一个重要特点是,就像计算机一样,它们最终只是在处理数据 。而当前的神经网络(以及神经网络训练的当前方法)专门处理数字数组 。但在处理过程中,这些数组可以完全重新排列和重塑 。以前面我们用于识别数字的网络为例,它从一个二维的“类似图像”的数组开始,迅速“加厚”为许多通道,然后“集中”为一个一维数组,最终包含代表不同可能输出数字的元素:
如何确定在特定任务中需要多大的神经网络呢?这是一种艺术 。在某种程度上,关键是了解“任务有多难” 。但对于类似人类的任务,通常很难估计 。是的,可能有一种机械地通过计算机完成任务的系统方法 。但很难知道是否存在可以以至少“类似人类水平”更轻松地完成任务的技巧或捷径 。机械地枚举一个巨大的游戏树可能会“机械地”玩某个游戏,但可能存在一种更简单(“启发式”)的方法来实现“人类水平的游戏” 。
当处理微小的神经网络和简单的任务时,有时可以明确看到“无法从这里到达那里” 。例如,下面是使用几个小型神经网络在前面章节中的任务上能够做到的最好结果:
然后我们会发现,如果网络太小,它就无法重现我们想要的功能 。但是在某个尺寸以上,它就没有问题,至少在训练时间足够长且使用足够的示例时如此 。顺便提一下,这些图片展示了神经网络传统中的一部分:如果在中间有一个“挤压”,迫使所有信号通过较少数量的中间神经元,通常可以用更小的网络来解决问题 。(值得一提的是,“无中间层”或所谓的“感知器”网络只能学习基本上是线性的函数,但只要有一个中间层,原则上总是可以以任意好的精度近似任何函数,至少如果有足够的神经元,尽管为了使其可训练性可行,通常需要一些正则化或归一化方法 。)
假设我们已经确定了特定的神经网络架构 。现在的问题是获取用于训练网络的数据 。神经网络和机器学习的许多实际挑战都集中在获取或准备必要的训练数据上 。在许多情况下(“监督学习”),我们希望获得输入的显式示例以及对应的期望输出 。例如,我们可能希望对图像进行标记,标记其中包含的内容或其他属性 。也许我们必须明确地进行标记,通常需要花费大量精力 。但很多时候,我们可以利用已经完成的工作,或将其用作某种代理 。因此,例如,我们可以使用网络上提供的alt标签来进行图像标记 。或者,在不同领域中,我们可以使用为视频创建的闭路字幕 。或者,在语言翻译训练中,我们可以使用以不同语言存在的网页或其他文档的平行版本 。