如何利用人工智能研究技术课题

在学习大语言模型工作原理的整个过程中,我始终运用了人工智能。我并非一开始就心中有明确的文章主题,而是先充分了解这一领域,能够清晰地阐述其核心内容,随后才决定将这些理解转化为大型语言模型的实际工作原理。

我利用它来精准定位恰当的术语、搜寻有用资料、质疑自己的解释,并揭示自己原本以为已完全理解的内容中的漏洞。我依然需要深入理解Transformer堆栈的各个组成部分,才能准确阐释其中每一个关键环节,并对所作的简化加以有力辩护。

正是通过这样的过程,我从一个无法解答的技术问题,逐步演变为一篇可以完整复现的解释。而将这些理解转化为文章,则要等到后续的工作完成之后。

“大语言模型是如何工作的?”这个问题仍然过于宽泛

当我开始研究大语言模型的工作原理时,一个显而易见的问题是:“大语言模型究竟是如何运作的?”然而,这个问题本身也过于宽泛,难以直接展开深入研究。

它可能引向训练、硬件、分词、推理、对齐、缩放法则、模型架构,甚至围绕该模型打造的产品。即便模型能够令人信服地涵盖上述所有环节,却未必能让我真正理解其中任何一个环节的内在逻辑与机制。

我将问题缩小为:当用户输入提示词后,模型究竟会执行哪些步骤?又在模型预测下一个词之前,会发生什么?这一问题的提出,既为研究提供了起点,也明确了终点。

同时,它也为我指明了一条清晰的路径:先进行分词处理,再进行嵌入表示;嵌入表示之后是位置信息;位置信息之后是注意力机制;而Transformer输出则在生成循环之前完成。

虽然训练过程至关重要,但它却超出了我最初想要解答的问题范围。

在寻求解释之前,我会将缩小后的研究问题提交给模型,询问它依赖于哪些概念,我首先需要了解哪些内容,以及问题中哪些部分仍存在模糊之处。

随后,我将模型的回应整理成一份有序的待探究事项清单,并依据这份清单,选择接下来要尝试理解的内容。

在拆解问题的过程中,我也逐渐意识到自己还缺少哪些术语和概念。很多时候,我往往在意识到某个概念为何被称作某种名称之前,就已经清楚了它到底在困扰着我什么。

“模型到底是如何判断哪个词先出现的?”这个问题本身已经足以引导我转向位置编码的研究,于是我先后学习了绝对位置、相对位置方法,以及RoPE技术。

一旦掌握了这些术语,我便能更轻松地查阅论文、文档、代码,从而获得更加清晰的理解。

这些术语让普通的搜索变得更加高效且富有价值。当模型给出建议时,我会先询问模型应该期待在其中发现些什么,然后再打开相关资源。

一篇原始论文可以揭示某一思想的定义过程,一份文档可以展示其当前的实现方式,而一段代码则能澄清那些在概览性文献和原始论文中被略去的细节。

一本优秀的教程,还能为你构建起清晰的心理模型,使其他材料变得易于阅读。

在这一阶段,模型所提供的每一条线索都只是初步的指引。我仍需亲自打开这些资源,仔细斟酌它们是否真的能回答我正在探讨的问题。

一步一个脚印

一旦我明确了哪些概念彼此之间相互依存,便不再要求AI对整个系统进行全面的解释。我一次只聚焦于一个具体的部分,并持续深入研究,直到能够清晰地说明:这个部分究竟包含了哪些要素,它们各自承担了怎样的功能,又最终会产出怎样的结果。

多头注意力机制就是一个很好的例子。常见的解释认为,模型会将一个词向量分割成若干块,并为每个头分配一块。这种表述直观易懂,但同时也容易让人产生误解:每个头都会使用自学习的投影矩阵,分别对查询(Query)、键(Key)和值(Value)进行表示。

尽管一些实现方案会将这些投影操作合并为更复杂的运算以提高效率,但这些头实际上是在学习各自的视角,而非预先设定好的、对原始向量进行语义切分的结构。

人工智能帮助我找到了论文和实现方案中相关的章节,随后对比不同教程对这一机制的描述。其中,最能助我一臂之力的,是将我的解释呈现给模型,并询问:在技术层面,哪些地方存在缺陷?

哪些简化是合理的?又有哪些简化反而可能带来误导?

我请求批评,却并不要求重新撰写。如果模型立刻替换了我的解释,我也可以在不理解为什么我的解释失败的情况下,欣然接受新的表述。

而且,我更喜欢将自己最初的版本一直放在眼前,因为这能促使我主动弥补实际存在的差距。

来源与解释——二者并非同一事物

我在每个部分的笔记中,既记录了确切的技术原理,也记录了这些原理的来源。此外,我还用最简洁的语言,将这一理念清晰地呈现在脑海中。

对于多头注意力机制,原始论文指出:查询(Query)、键(Key)和值(Value)会通过不同的自学习投影进行多次映射。我的心理模型是:“对同一个词向量,我们并没有将其划分为多个独立的片段。”然而,文章中的一句话却是这样写的:

“每个头并不会获得原始词向量的完整切片。每个头都有自己的自学习投影矩阵,可将完整的词向量映射为各自独立的、更小的查询(Query)、键(Key)和值(Value)向量。”

将这些概念分开,有助于我避免将一个有用的简化,误认为是某一种实现方式的字面描述。正确的解释,能够帮助人们更好地想象这一机制的运作方式。

而源头则为我指明了,这一图景究竟代表了什么。

我还会记录下解释的局限性。许多实现方案会将这些投影操作合并为单一的大型运算,并为了提高效率而对投影结果进行拆分。而心理模型则描绘出这些自学习的变换过程。

它并未声称,每一种实现方案都会以完全相同的方式安排计算流程。

对话与源头——二者并非同一事物

模型可以帮助我找到并阅读相关资源,但它绝不能成为真正的源头。

对于任何重要的内容,我都会亲自翻开论文、文档、代码、基准测试或数据集。我会找到对应的章节,阅读其前后部分,并检查作者是否提出了与我想要表达的观点一致的论点。

我也会跳出页面的局限,查看资源的创建者是谁,是否有其他文章在报道原创成果,或是重复同样的结论,或者是否有后续版本对原结论进行了修正,又或者,某个实现方案是否依旧遵循着旧有解释所描述的行为模式。

在学习大语言模型工作原理的过程中,我之所以特别关注每份资源的年代与背景,是因为Transformer的相关解释往往将数代架构融合在一起。

原始Transformer、如今仅用于解码的LLM,以及某款库实现,虽然彼此之间存在关联,却并非可以随意互换。如果我将原始论文作为基础机制的参考,而将现代版的文档作为最新版本的说明,那么我的笔记就必须清晰地保留这种区别。

人工智能让这一溯源过程变得更加高效。我可以请它查找某项主张的早期版本、与之持不同意见的后续研究成果,或是采用该思想的实现方案。

在依赖这些连接之前,我依然会逐一打开每一份结果。

尝试证明解释的谬误

通常,第一个真正说得通的解释,也是我最容易对其产生共鸣的解释。也正是在那时,我开始寻找反驳它的证据。

针对每个部分,我都会问自己:一位有经验的读者会对此提出哪些异议?心理模型在何处停止发挥作用?哪个词的表述过于生硬?我描述的究竟是每种模型都会发生的事情,还是某种常见的实现方案中的情形?

在大语言模型的相关文章中,说注意力头“专门化”很容易理解。而说它们“部分专业化”则更为贴切。有些头确实呈现出明显的规律,但那种“每个头都只负责一项任务”的清晰图景,却远比现有的证据所展现的要复杂得多。

同样的问题也出现在诸如“前馈网络存储知识”或“模型学会推理”这样的句子中。这些表述虽然指向了一些真实存在的现象,却让原本复杂且充满争议的问题,听起来仿佛已经得到了圆满的解决。

于是我调整措辞,阐明界限,或者干脆省略这一说法。

在寻找漏洞的过程中,我依然会借助人工智能,但我不再追问对话是否能自我认同。我会改变搜索关键词,审视后续的研究成果,寻找批评的声音,有时甚至会将解释交给另一位模型,或是交给一位未曾参与过先前讨论的读者。

我的目标,是找到最有力的反对理由,而不是罗列一串看似令人安心的细微提醒。

结束对话

经过一番努力……

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论