我认为即使在上下文中,一些研究也表明,有时你会遇到两种情况:你提供给模型的上下文数据与它在预训练期间学到的信息相冲突。然后一些意想不到的事情就会发生。智能的一部分是提出这些策略,无论环境如何,都能让你适应这种环境,并能够实现你的基本愿望。而这些愿望将取决于……
任何进行检索的系统。仍然需要某种流形或未来情况的草图,然后我们可以利用它来……
任何智能系统都持续地从其环境中学习,并学习什么是实际的、什么是做出良好预测的正确吸引力,任何智能机器都必须这样做。
所以一百万个问题是,你如何进行检索,同时考虑到数据之间的相互作用?
这实际上非常简单。所以我们所做的是……
由CentML赞助,CentML是一个用于机器学习工作负载的模型服务平台。你登录他们的平台,首先看到的是SAS选项。这是一个非常简单的选项,就像OpenAI一样。
你可以发送请求,在那里添加你的访问令牌,就可以访问所有最新的开源模型。它更快、更便宜,在Llama 4、50亿参数模型上,我每秒大约能得到45个token,他们报价是65个左右。
但无论如何,它比竞争对手快得多。他们也有PaaS选项,意思是平台即服务。这是一个例子。所以我们将启动一个大型语言模型可扩展服务。这些家伙开箱即用地支持LLM和VLM。
例如,当你的模型运行起来后,你可以使用OpenAI API,对吧?你可以使用OpenAI的Python SDK,用它来与你的模型对话。我只是使用了最便宜的SAS选项,它在新版Llama 33亿参数模型上获得了非常好的性能。
顺便说一句,注册时,你会获得10美元的积分。每个人都会得到10美元的积分,这意味着你可以做一些事情而不用花钱。也观看我前几天与CEO Ghani做的采访,享受吧,介绍一下你自己。为什么人们会喜欢这一集?他们会……
将会……我是Jonas Hübotter,我在ETH苏黎世联邦理工学院机器学习研究所攻读博士学位,我从事因果推理、局部学习和自主决策方面的工作。最近我做了很多工作,将这些想法扩展到最先进的模型。
我们使用大型语言模型,并且我们非常兴奋能够在Pile基准测试中胜过一些非常大的模型,这是一个大型的、庞大的语言基准测试,它包含了多种类型的语言,从你在互联网上、也许在Stack Exchange或Hacker News上找到的语言,到用于数学或编码的语言。我们已经能够超越之前的最先进水平,该水平比我们使用的模型大30多倍,方法是在你面临特定问题时,在测试时花费额外的时间和计算资源。所以今天这集节目真正要讲的是,为什么在测试时花费额外计算资源是有用的。
而这其中的关键,这实际上非常重要,如果没有它,这种测试时学习将无法工作,那就是如何自动选择正确的数据。所以如何自动化,LLM如何知道它需要什么数据才能做出好的预测?所以本质上,我们如何利用LLM的直觉、指令和学习来决定计算?我应该如何在测试时花费它的计算资源?
Pile基准测试对我的生活有很大帮助,因为我将在ICML上与Bell Rose一起做关于解释性的演讲。当然,我知道Corner和一些事实……但是Pile很有趣,因为你实际上拥有数据,对吧?我们没有OpenAI训练的数据,是的。
但我认为有几点。首先,原则上你仍然可以对Pile进行检索,即使是为了增强你在OpenAI上进行的微调。原则上,分布完全不同并不重要。但是,是的,也许你可以谈谈这个。那么,检索数据的分布不同是否重要?
我认为这并不重要,因为,我的意思是,我们在许多不同的模型上进行了评估,我知道在某些模型上,他们没有使用Pile作为训练数据集。例如,正如你所说,GPT-2,我认为Pile实际上是在GPT-2训练之后发布的。
所以对于GPT-2,如果我们用Pile中的信息来增强GPT-2,它仍然运行得非常好……但与此同时,我认为你可以将Pile中的信息视为许多最先进模型所训练的数据分布的中心,因为这些是非常学术性的数据集。许多这些数据集都是非常好的、无害的数据。例如,有很多科学出版物,还有编码、数学,这些都是当今模型大量训练的内容。我认为对我来说相当引人注目的是,看到这些信息(这些信息应该已经在这些巨大的参数模型中很好地编码了)如果通过测试时向它展示一小部分,比如一个非常有信息量的片段,仍然是有用的。
我还想快速评论一下,我非常喜欢机器教学。这是在微软研究院发明的,它本质上是一种交互式的转导主动微调形式。它主要用于经典模型。
但是你知道,其思想是你有一个应用程序,如果你允许监督者有目的地选择最有信息量的训练样本,就像数据集蒸馏一样,这很了不起。当你实际选择最有信息量的样本时,你的训练集的样本效率会提高多少。但我认为类似的方法可以与你的方法一起使用,因为与其使用Pile,为什么不直接使用谷歌搜索呢?你可以创建一个交互式工作流程,让监督者指导搜索并选择最有信息量的样本。也许你仍然可以在此基础上运行你的非交互式版本。然后你就会得到一个非常有信息量的……
转导形式的,我认为,一个非常强大的范式,你知道,我认为你仍然可以从你可以访问的某种记忆的角度来考虑这一点。但是现在,某些记忆片段可能不是静态的,而可能是实际包含一些底层计算的东西,对吧?结果可能并不明确,但它有一定的描述。
事实上,在我们小组中,我和Mark Battaglia一起,研究了这样的设置,你的信息增益本质上不是某种重新计算,因为信息不是静态的。相反,你必须利用你模型对实验结果的预期来判断,好吧。鉴于我预计这个实验会以某种方式进行,那会有多有信息量?我正在做的任务……
我感兴趣的一个延伸问题是检索增强文本生成。所以我最近采访了Luis Serrano关于这个问题。我还可以想象这可以改进检索增强生成。但与其进行RAG的上下文学习版本,你可以进行微调转导主动学习版本,你知道,像转导主动学习版本的RAG。你认为使用你的方法的这种版本可以改进RAG吗?
嗯,我认为,我的意思是,RAG实际上是一个包含各种不同方法的庞大生态系统,人们一直在研究这些方法。当然,RAG或某些RAG系统的一个大问题在于根深蒂固的精确性。事实上,它们使用的是对某些密集嵌入、密集特征嵌入的最近邻搜索,这通常不是它们所做的全部,但通常这是它们所做的一个非常重要的部分。
正如我们所讨论的,这在某种意义上非常有限,你可以选择或获得的信息。从经验上看,很可能的是,相对于某些有用的信息量度,选择最有信息量的相对信息量的数据可能比仅仅选择最相似的数据更好,因为最相似的数据可能是冗余的。
所以我想说的是这一点。我想说的另一件事是……关于上下文学习,你是否应该将数据放在上下文中,或者你是否应该通过梯度步骤来整合数据,这仍然是一个非常开放的研究问题。有很多不同的工作已经研究了这两种方法之间的区别。目前还不清楚哪种方法在一般情况下最有效。对我来说非常有趣的是,这两种方法在何时以及如何工作方面似乎大相径庭。例如,当我们使用Pile数据集时,这非常有趣,该数据集再次由这些多个子数据集组成,这些子数据集包含你可以用人类语言表达的多种事物,对我们来说非常有趣的是,对于某些类型的这些数据集,微调比上下文学习更有优势,而对于其他数据集则不然。这些往往是Pile数据集中的数学数据集,例如DeepMind Math,它包含学校级别的数学问题,如计算导数、求解x的方程等等,还有编码或来自arXiv的科学论文,以及FreeLaw,这是一个包含法庭意见的数据集,是的,所以……
所以只是解决了这两件事。是的,只是通过改进RAG的检索机制,做一些你正在谈论的事情,你知道,不选择冗余信息可以改进RAG。对于RAG来说,有时仅仅因为架构的复杂性,也许你正在从不同的数据源进行检索,也许还有后续步骤来再次去除冗余信息,或者我们对它们进行排名,或者做类似的事情。
我不确定现有的系统是否这样做,但随后就出现了上下文学习与微调的问题,这里一定存在一些有趣的权衡,因为我一直认为上下文学习更好,因为只是轶事地,精度似乎更好,比如,如果你的上下文中有一些东西,它似乎不会被忽略,而我有一个指令……当它在模型内部时,信息的分辨率较低,因为它被整合并表达为模型中低级表示的一部分,这可能会带来一些优势,因为模型可以使用更多其基本知识来推理你正在做的事情。但缺点是,它更容易对你在谈论的事情产生幻觉。
嗯,有很多工作……这与试图理解上下文学习是如何工作的有关。我认为即使在上下文学习中,一些研究也表明,有时你会遇到两种情况:你提供给模型的上下文数据与它在预训练期间学到的信息相冲突。
嗯,总的来说,我同意,对于我们今天训练的这些模型,你放入上下文中的数据……下一个token的分布受到它的强烈影响。因此,你的模型更有可能首先关注上下文中的某些特定信息,首先关注某些特定信息,并且已经接受过训练……另一方面,反向传播和梯度下降是非常有效的方法。至少在预训练期间它们有效,似乎它们是教授模型如何再现某种模式的非常有效的方法。
当然,还有一种关于连接的论点,那就是如果你做得足够久,如果你把它扩展得足够大,你将不得不发展某种抽象形式的理解,因为为了能够预测前几个token的下一个token,你可能必须学习抽象学习算法等等。例如,如果你面临一个数学问题,现在你正在对这个例子进行反向传播,计算某个项的导数……那么,本质上反向传播将教给模型的是如何再现这一点。如果它在多个这样的例子上教授这一点,可以说,模型将找到某种形式的再现这种行为的方法,无论这是否是我们想要的算法。这是一个有点不同的问题。但我将尝试模仿……有些人喜欢思考目的……
不同层次的描述。我的意思是,我们昨晚在我们的赞助者电话会议上谈到了这一点,Keith Dogar举了一个蚂蚁丘的例子。所以它有目的,对吧?它编程……
所有的小蚂蚁,蚂蚁可以承担不同的角色。它非常非常简单,它们闻到气味,发现食物或其他东西。你知道,有时它们会沿着路径走,当它们找到食物时,它们会留下信息素。
有时它们不会。这意味着其他蚂蚁会跟随这条路,然后这条路就会得到加强,等等。即使蚂蚁只是遵循这些非常非常简单的规则,它也服务于……的目的,但随后就出现了这个问题,好吧,它没有内在的目的,目的只是我们描述的东西……
对于IT,也许……我的意思是,如果你谈论的是刺激人类生活的模拟游戏,这肯定会让你思考,我们在多大程度上比蚂蚁更有目标,因为当然,像一些城市建设游戏,我的意思是,它们非常接近,我的意思是,并非完全准确,但非常接近人类在城市中的行动方式。他们当然也有一些社会强加的目标,让我们四处走动,例如上学、从事IT工作、做广告、去餐馆或杂货店买食物。我的意思是,这些都是直接来自人类或仅仅来自社会的基本需求,当然,推动我们四处走动的许多目标并非本质上如此,而是来自外部力量,是的,是的。
他确实不知道有多少是内在的。
就像我没有那种能够真正回答这个问题的背景。嗯,我认为,我的意思是,可能因为,我的意思是,城市……就像坚持使用城市建设者的隐喻。
我认为它们无论如何都不能真正代表内在的动机,对吧?所以你已经可以说,任何……任何不在这些城市模拟器和你在城市中观察到的东西之间的差距中的东西,任何不在那个小差距里的东西都不能是内在的,对吧?因为这在某种程度上是来自社会或某种……作为最大模拟的副产品,然后只留下少量肝脏,对吧?当然,我认为人类……人类构成的一部分远不止我们如何在城市中四处走动,对吧?我们的大脑中发生了很多事情,这并没有被涵盖。但是,是的,我的意思是。
这来自我和Yoko Ka以及Stephen More前几天的谈话,因为他们当时在谈论目标从何而来,你知道,你有一个智能系统,你可以把它建模成一个具有规划范围的事物,范围越大,智能越高,它拥有的就越多,然后,好吧,为什么他会主张像工具性趋同这样的东西?
你知道,当你有一个超级智能的AI系统时,它将具有可预测的糟糕的中间或工具性子目标。你可以在你刚才谈到的城市环境中想到它,所有这些不同的代理,它们是约束,但它们必须遵循某些河流。或者在城市的情况下,他们必须走特定的路线。
为了彼此交易,他们必须使用金钱,他们必须做所有这些不同的事情。所以我可以做……可以将未来行为的空间通道化或追踪。它不仅仅是物理上的外部约束。它也像是与未来其他代理的行为空间的某种互动。
嗯,我认为我的观点是,这很大一部分是抽象。所以,当你……我认为我们今天给出的许多系统,它们确实有一些广泛的目标,呃,我们陪同的节拍,要么只是模仿我们给它的东西的分布,要么是某种明确制定的目标,嗯,然后我认为AI社区多年来积累的“哇”时刻,很大程度上是这种情况,现在离开那个目标。
如果你想称之为代理,则为代理分配……想出了某种子目标,这实际上是某种无能为力的结果,就像代理正在从直接目标中进行抽象一样。它并不贪婪,试图……它想出了这种抽象,这使它能够采取这一中间步骤,这对于人类来说可能并不明显,然后仍然……仍然是为了解决那个对人类来说很明显的目标,嗯……是的,我不知道,我认为……这在某种意义上绝对是有趣的,一个有趣的问题是……想出这些中间目标或内在目标,正如你可能所说的那样,纯粹是能够进行抽象的功能,还是还有其他事情正在发生。我倾向于认为这纯粹是抽象的力量,嗯,但我并没有所有答案,是的,老板,我被告知。
说智力是压缩,他的意思是抽象。但我认为,同样,我们昨晚也在谈论这个。
我们为什么知道异步分布式软件系统如此令人兴奋,是因为这就是自然生物世界的工作方式,对吧?如果你用一个极端的例子,比如我们添加一个太空站,你知道,三十光年远或类似的东西,你知道,你必须向……你必须有一个道歉,它有一种局部性优先级,对吧?这就是生物系统的工作方式,对吧?细胞彼此发送信息,所有……只是某种紧急情况。
现在,在这种asic quenus方式中,你会发送信息。但是当我们设计AI系统时,情况有所不同。它们……它们不会出现,它们……它们不会成长……我的意思是,它们使用现金信用学习。所以在某个时刻,当我们构建我们的系统时,我们必须设计它们。你知道,我们实际上必须设置信息边界,我们需要说,你知道,就像你在这个抽象级别与之交谈一样,这似乎完全与……
事情……我不知道,我在某种程度上完全同意。我的意思是,我同意我们设计我们的系统并设置一些边界的那种框架,例如计算机的容量是多少?你得到的内存是多少?在某种意义上,你将看到的数据是什么。但我认为我们正在超越这一点。嗯,你当然可以考虑这些遵循这些基本原则的系统,无论是某种形式的梯度下降还是其他某种人为设计的学习机制,最终与世界互动,也许设计他们自己的实验,然后能够自己决定我需要什么样的数据来适应我的环境,在某种意义上,我如何在空间中移动,以及我如何……我朝着什么方向发展我的压缩表示。
好吧,让我们谈谈他们所说的这种行为可塑性。所以,你知道,我喜欢主动推理的地方在于,没有明确的目标。没有明确的奖励函数……把它想象成一种最大熵逆向强化学习。而它实际上是从数据的统计分布开始,然后在约束条件下推断奖励可能是什么。而我真的很喜欢这一点,因为我觉得我们需要拥有能够实现自身目标的系统,而不是评估设计师说,你需要做这件事。
我认为在不同的抽象级别上,这仍然是一个人为设计的目标,对吧?正如你所说,我们仍然设计AI系统,并设计学习机制,即使是……我的意思是,各种形式的主动推理如何在轨道上实现,因为你必须在一个案例中提出某种概率模型,你可以通过它来优化预期自由能……
所以我认为,最终,即使是这种形式,在抽象层面,你也可以把它看作某种人为设计的。我不喜欢“奖励”这个词,因为它与强化学习社区联系在一起,但类似的事情。然后我认为人们提出的论点是,当然,这将导致不同的涌现行为。
然后,如果你给它一个不同的后盾,就像在强化学习中更常见的事情一样,好吧,假设你在玩Atari游戏,你只是给出游戏分数,当然。我的意思是,也是强化学习。如果你给一个代理不同的奖励,代理就会开始以不同的方式学习。
再说一次,回到我们之前讨论的中间……中间子目标实际上是抽象函数或其信息压缩量副产品,那么我认为,在某种程度上,这两种方式都可能并且很可能会发现这些中间……中间子目标,嗯……我们作为人类会发现有趣的行为,我认为这很大程度上是……在我看来,主动推理领域的人们所希望的。如果你将这些概率模型扩展,那么最大化这种预期自由能的副产品将是这些导致……我不知道,某种自持生物体的有趣行为。
那种……是的,我同意你所说的,即使是主动推理。我认为它卖点的一部分是它是一种……人为的,你知道,寄生性的,因为当你构建系统时,它将以受约束的方式拥有代理权,其偏好与我们兼容。这很好。
但我们不想要具有更多可塑性的AI系统吗?我认为你所说的没错,对吧?我们设计所有这些归纳先验。
我们以这样一种方式约束系统,使它们的行为更符合预期。但我猜你也可以对DNA做出同样的论证。所以,DNA有这种疯狂的原因。有些人可能会说它对我们的行为有一种约束力,但它似乎并没有做到这一点,对吧?如果你看看我们的社会,比如我们构建语言的方式,到处都是这种美丽的差异。但即使它完全基于DNA,也存在这种不对称性,就像我们删除了所有DNA一样,我们明天都会消失,但它允许这种完全的……行为复杂性的爆发,但仍然以同样的方式受到约束。
我认为这与我的观点非常吻合,我的意思是,最终,我认为我们生命形式中的DNA给了我们一些非常严格的约束,对吧?我们必须喝水,我们必须吃东西,对吧,才能生存。但在这种情况下,有很多方法可以做到这一点。
它们也高度依赖于周围的社会,这……不是社会,而是我们的环境,对吧?我认为智力的一部分是提出这些抽象概念,无论环境如何,都能让你适应……适应环境,并能够满足你的基本愿望。
这些将取决于人类的情况下的环境,因为可以说我们在人类之间拥有相当数量的智力。我们实现目标的方式也不同。但我认为这确实是……对所有动物的期望。
你现在可以看到,对于那些……随着气候变化,你知道,那些非常适应其环境的动物,虽然它们能够应对环境的细微变化并适应这些剧烈的环境变化,但它们学习的抽象概念,如果你愿意的话,是没有用的,对吧?然后他们再也无法生存了。嗯,是的,我认为抽象……
来自……我们做什么样的抽象……我们对架构进行硬编码,以及什么样的抽象是金属的……
嗯,是的,我认为我的意思是,这是一个根本性的问题。我认为这是机器学习的核心,甚至更多的是自AI诞生以来……我的意思是,很多人,他们开始手工编码这些抽象,在某种意义上利用人类……人类学习的抽象或我们认为有用的抽象,但从根本上受到这种语言的限制,或者说受到我们表达这些抽象的方式的限制,以及我们的最终时间……然后……然后我的意思是,神经网络超越了这一点,并学习了这些抽象……
最后,你是……你是鞋子的粉丝吗?第一类第二类二分法。
一般来说,我尽量不使用这种系统一系统二的二分法,也不使用某种程度上与系统二相关的“推理”这个词,因为我发现它……并不总是那么有信息量,而且绝对是一个在各个社区中解释非常不同的术语。嗯,我认为我的直觉,但我对此可能完全错误。
是,如果你愿意的话,这种更……规划行为可以从学习的抽象中出现。所以,当我们进行抽象……抽象……抽象的层次时,如果我们在非常高的抽象层次上进行预测,这可能看起来像某种规划,正在进行更高级的智能。所以也许这是……也许这个系统一系统二的事情,只是我们正在操作的治理行动级别的问题,当然,提高抽象级别需要更多能量、更多时间,并且在计算上比……比寻找这些浅层抽象要困难得多。所以在……在这种意义上,我认为,你知道……嗯,我认同这个想法,但我认为它们有非常……不同的解释,对吧?不同社区提出的关于系统一与系统二实际上应该如何实现的解释。呃,我不觉得我需要那些。
非常酷。为什么……为什么发现在一个例子批次上显示一个模型的成本低于在上下文中进行推理?
嗯,这是因为信息基本上被压缩到权重中。在上下文学习中,存在这样一个问题:对于你生成的每一个新标记,你都必须关注所有之前的标记,对吧?这基本上意味着你必须遍历所有之前的标记,是的,但这……我不确定。
1 我只是想从根本上再理解一下,为什么反向传播与前向传播在……
2 计算方面不对称?嗯,我认为关键在于它确实被压缩到权重中了。因此,上下文学习必须一次性呈现所有证据。否则,它不起作用,因为没有记忆机制,这就像一个完整的运行内存。每一点信息都被同时处理,你
3 必须同时过滤掉它。哦,我明白了。所以当你进行微调时,
4 很明显,它的大小是正确的,最终将其打包到多个新框中,就像多个标记序列一样,并将它们分开。然后
5 因为我得到了它,所以它仍然是草稿,但它被压缩到权重中了,它很小。
6 是的,是的,完全正确。你必须……我的意思是,这才是关键,这就是为什么……我的意思是,这就是为什么我们首先训练参数模型的原因,因为我们试图拟合数据,或者我们试图提取一些压缩数据,假设一次性给出所有数据,你也可以用非参数模型做到这一点。
7 是的,是的,因为假设是像一个核函数之类的东西,你知道你需要……
8 拥有所有数据。我的意思是,我的意思是,这正是局部学习的最初想法,对吧?我的意思是,局部学习的轨迹对我来说非常引人入胜,因为它是一个相当线性的回溯。
9 这是一个相当线性的轨迹,使用这些单独的组件。所以实际上,在 50 年代,人们提出了最近邻检索,你可能有一个距离函数,然后你只需平均……预测一个新点的预测。你平均所有周围点的预测。然后人们在 60 年代提出了核回归,它基本上做的是同样的事情。但现在你根据它们与距离的相对关系或与某种相似性度量的相对关系来加权这些点的权重,人们通常称之为核。
10 是的,我明白了。
11 是的,完全正确。然后从那时起,人们走上了不同的道路,例如,在 70 年代,人们对非参数方面的研究比参数方面更多。他们开始进行局部加权线性回归,因此他们会为他们做出的每一个预测训练一个单独的线性回归头,然后局部加权围绕预测的训练数据。所以他们会根据某种核函数来加权数据,该函数靠近你要进行预测的点,远离该点的权重较小。但这已经包含了这个参数组件,我认为这是关键
12 这个框架,一直存在这种……你知道的,在归纳学习(我们学习一个可以用于任何新数据的一般决策函数)和……转导学习(特定于特定输入)之间的位置。对于很多人来说,这是一个相当新的想法。但正如你所说,弗拉基米尔·瓦普尼克等人在深度学习革命兴起之前就已经讨论过这个问题几十年了。
13 所以这个想法至少从 70 年代就存在了,但早期的迹象甚至更早,当时人们在非参数模型中进行最近邻搜索。
14 啊,是的。
15 这是一种频谱。我喜欢把它想象成一个频谱,在某些问题中,比如说自然语言,你试图拟合某种数据流形来描述你关心的自然语言的某些方面,而这种归纳范式是关于一次性拟合所有这些。
16 因此,你提取一些通用的规则,这些规则有望概括为准确地描述你想要学习的函数在整个流形上的样子。这在某种程度上仍然是有目标的,因为你受到你使用的训练问题的表达能力的限制。传统上,人们使用的是相当小的问题域,对吧?所以你从简单的例子开始,比如
17 识别一百个手写数字,然后你很快就会意识到,好吧,你需要提取相当少的信息量来进行这种预测,对吧?因为你是在一个非常小的问题空间中工作。但现在,我们正在将这个问题空间扩展到自然语言、图像、视频之外,这是一个巨大的问题空间,许多……许多困难的计算挑战都可以用我们正在学习的这些格式来表达。
18 而这种范式大致保持不变,你仍然试图学习一个拟合所有内容的函数,对吧?所以你可以学习并拟合你对数据流形在各处外观的直觉。然后在……你知道的,当你进行推理时,当你进行前向传播时,当你进行预测时,你使用固定的计算成本来访问你对函数在各处外观的压缩直觉。
19 但当然,在实践中,数据流形上的某些部分很容易预测和学习。而数据流形上的其他部分则非常困难。在这些更复杂的问题域中,这在人类语言中非常明显。
20 有一些简单的任务,比如,你知道,当我们谈论天气时,人类就是这样做的,对吧?比如,你会进行一些关于随机事情的小型聊天……但你也可以深入探讨,这就是人类需要思考的地方,对吧?这就是我们也需要动用更多大脑计算能力来解决这些问题,甚至尝试解决这些问题的地方。而这种归纳范式并没有真正捕捉到这一点。
21 当我学习机器学习时,我认为那是在第二次人工智能寒冬时期。所以当时是支持向量机和类似的方法之类的东西。我学习了保形预测,我学习了构造性推理,因为弗拉基米尔·瓦普尼克当时在我的大学。
22 这有点像,记得在 1980 年代,我们不得不进行这些内存优化,因为我们只是没有非常有效的东西。所以当时我们正在研究优化。我想现在由于深度学习革命,我们已经进入了一个我们感觉不需要这样做,因为深度学习模型运行得非常好。
23 显然,即使在多模态、大规模静态数据中,它们似乎也运行得非常好。这几乎就像人们开始欺骗自己,认为这些甚至不再是统计模型了。我们为什么要进行任何局部优化?所以这很有趣。
24 你说的另一件有趣的事情是,我认为人类也是这样做的,当我们处理不可预测和充满歧义的情况时,我们会进行更多的处理。我采访了一位专业人士,他是一位神经……神经科学家,最好的描述方式是什么。这是同一位神经科学家,他说当我们面临歧义时,我们会意识到情况。
25 这与直觉相悖,因为当你坐在阳光下,并且你非常专注时,你会认为你的大脑正在进行更少的处理。但你可以解释说,当你开始注意到云彩和树木时,你的大脑实际上正在处理更多信息,而不是更少的信息。所以拥有可变数量的计算量,任何……你感知更多信息,处理更多信息,这是一件非常有趣的事情。
26 我的意思是,对于人脑来说,这当然很有趣,这不是我的专业领域,但肯定的是,我们可以在给定时间内进行处理的能量是有限的。所以我们不可能同时做所有事情,这是不可能的。所以我们必须对如何使用这种能量进行战略规划,以实现我们的目标。我认为从根本上来说,机器也是如此。
27 是的,是的,这让我想到下一件事。所以前几天我们想出了一个非常酷的比喻来描述我们假设的机器学习模型的行为。它就像谷歌地球,在谷歌地球中,你拥有这种可变分辨率,你从这里开始,你拥有大的粗略图块,然后你放大到伦敦或苏黎世,图块变得越来越小。这是一种很好的局部方法,它允许你在需要的地方使用计算能力。这是一个很好的比喻吗?
28 你工作的比喻?是的,我喜欢这个比喻。我认为它真正抓住了本质,你可以将你拥有的像素数量视为你在某个时刻拥有的表示能力或计算能力,用于表示某些东西,进行某种预测。
29 在这种归纳范式中,你想要一次性表示整个世界的图像,你只能负担得起在任何单个预测上花费一定的分辨率,比如说,某个城市的预测。所以这可能只是一个像素,甚至没有。如果你放大,你会获得的力量对任何使用过谷歌地图的人来说都是显而易见的。
30 如果你只是通过增大像素来放大,而不是改变你如何使用分辨率来表示局部信息,如果你只是增大像素,那么谷歌地图很快就会变得完全无法使用,对吧?这实际上非常强大。所以如果你……如果你,比如说,在一个配备 38p 显示器的电脑上工作,而你的朋友有一个 4k 显示器,但他没有意识到你可以通过重新分配每个像素所做的计算来放大,而只是……你只能通过增大像素或靠近显示器来放大,对吧?那么你很快就会发现……聪明的人,对吧?虽然他最初可能有一点优势,因为他可以一次表示更多信息,但如果你想……你知道的,深入一点,我想看看……从……从……从太空看苏黎世,那么如果你……因为你只是以一种聪明的方式使用你的表示能力或计算能力,那么你已经拥有比他高得多的分辨率了。
31 是的,这就是我一直对主动推理这个概念感兴趣的原因之一。所以你知道卡尔·弗里斯顿是我的英雄之一,他有一个关于能动性的精彩模型。我想主动推理代理和许多传统机器学习之间的主要区别在于它实际上正在进行某种情境计算,对吧?这似乎非常重要,也许……我觉得你正在介绍它,但以一种稍微内在的方式,你能解释一下吗?
32 嗯,当然。我们最近所做的所有工作都是关于局部放大语言模型学习的分布……所以局部学习数据流形更好。它的工作方式是,你保留你正在使用的普通语言模型,这是一个固定的参数模型。
33 然后在测试时,你可以回顾你的内存或大型数据集,找到描述你试图进行的预测周围流形外观的示例。然后只需刷新内存,对吧?花费一点额外的计算来专门用于你试图进行的预测的表示能力。所以,与其试图一次性学习整个数据流形,不如专注于针对我们当时面临的特定任务进行预测。这实际上是关于充分利用计算能力和表示能力来进行特定预测。
34 有一张漂亮的图,我认为这是你 SIFT 论文中的图 2,我们一边看一边谈谈。但是你有了数据空间,好的。
35 数据空间,我想这就像……选择数据的样本空间,然后你有了数据流形。所以数据流形是这种表面或结构,它实际上是从……从……从数据中学习的。然后……然后你……比如说,你有一个输入的例子,你想对这个例子进行非常好的预测。
因此,从逻辑上讲,你应该对该样本周围的大量信息进行采样,因为这将提高模型的统计能力。这里有几点。我的第一个问题是,你从哪里获取这些数据?我猜你使用了类似于面部识别的东西,并且有很多方法可以进行最近邻搜索,或者进行矢量量化或某种对数检索时间方法。然后,你可以在其中进行改进。但也许我们可以先从以下方面入手:如果你有一个非常大的基础模型,那么基础模型的大小和你选择信息材料时选择的范围之间存在一个比率,它们之间是什么关系?
我认为你忽略了一个事实,那就是使用更大的基础模型,我们可以更好地捕捉数据流形。因此,即使这些更大的基础模型试图同时进行所有预测,或者对这些预测进行平均,以便我们在进行推理时能够以恒定的成本访问它们,更大的模型意味着我们获得了更好的表示,更多的表示能力,并且我们可以更好地学习统计数据。
我们所展示的是,这种测试时间的局部学习是一种附加机制,无论你的基础模型具有何种表示能力,如果你在基础模型之上添加这种机制,你就会获得额外的表示能力,从而做出更好的预测,实质上是充分利用你的表示能力来进行预测,因为在任何时候,你的重新训练的语言模型(如果可以这样说)都必须编码所有这些信息,因为它必须解决许多不同的任务。现在,当你需要进行特定预测时,它通常可以忽略它已经压缩的大部分信息。这意味着它可以更高保真度地表示对实际做出良好预测至关重要的信息片段,对吧?所以你也可以更高保真度地进行预测。
所以,我认为我们假设存在一个数据流形,一个数据空间,为什么不进行划分呢?所以,与其拥有一个多模型嵌入空间,不如说我们拥有可以处理文本、图像和视频的东西。为什么不分开,拥有不同的模态,不同的数据空间呢?
你的意思是,可以为每个模态训练一个单独的模型,然后将数据流形划分为多个子流形,然后在每个子流形上训练一个单独的模型,然后就完成了?
我认为我们目前正在尝试使用一个在所有数据模态上训练的单一模型。你的工作暗示了特异性非常有帮助。你看,局部学习方法非常有帮助。
即使对于数据的模态,你也可以这么说吗?我的意思是,你不能一直划分并创建一个混合系统吗?这会给你带来更多还是更少的统计数据?
嗯,我认为我们必须在这里区分几件事。首先,当然,如果你在某种特定模态中进行特定预测,能够真正关注该模态是有用的。但是,当然,如果存在信息,或者如果你对整个数据进行处理,并且该数据没有被分割成子部分,则包含了进行良好预测所需的信息,但它只能在不同的模态中访问,那么你需要这种跨模态才能访问该信息。
这里真正有两个关键要素:第一个关键要素是能够利用整个表示能力来进行特定预测,并对当前的测试问题进行过拟合。但另一个关键方面是,我们需要拥有正确的吸引子,或者我们需要学习正确的表示,以便能够决定哪些数据实际上是有用的,哪些数据包含进行良好预测所需的信息,以及正确的抽象或正确的学习算法,以将这些信息转化为良好的预测。总的来说,在过去几年中,我们看到的是,如果你将这些深度学习模型扩展,并且在预训练期间向它们展示各种各样的数据,那么它们就会更好地找到跨模态和跨问题的相似模式,并提出更像解决方案算法或更简单的机制,使它们能够进行综合。例如,如果你让ChatGPT为你创作一首关于特定主题和特定风格的歌曲,它就会做到这一点,但这只有在你从未在它的训练数据中向它展示过任何歌曲示例的情况下才有可能。所以,我认为这种跨模态非常关键,这并不一定与以下事实相矛盾:你希望在测试时利用表示能力,在看过一些东西并理解所有事物如何运作之后,然后专注于那些你认为对做出预测很重要的东西。
我认为我们应该将你的工作与主动学习联系起来。所以在机器学习的早期,我们会产生一个决策函数,我们会进行测试训练分割,或者可能进行验证分割等等。然后,主动学习出现了。
主动学习说,实际上,你可能会面临数据分布的变化。所以,当这个东西下周使用时,分布可能会有所不同。那么,为什么我们不持续地根据不断变化的数据分布重新训练模型呢?主动学习选择,比如说,一些不同的新训练样本。但你所做的是一种主动学习,但它故意专注于具体的方面,而不是关注一般的方面。
我认为你解释得很好。我会稍微扩展一下主动学习的特征,因为许多主动学习只是关注如何选择我们在标准的重新训练和评估范式中使用的训练数据,以便我们可以使用更少的数据,但以某种方式压缩数据中包含的信息,这样模型仍然像我们在整个数据上训练一样强大。
在某些情况下,人们已经证明这是有用和强大的,但在这些情况下,随机性是一个非常强大的基线,并且随机性通常会胜过许多这些方法。我现在正在研究的是一个非常不同但某些方面又类似的设置。我感兴趣的设置是局部学习。
进行这些具体的预测,在这种情况下,只使用存储器中实际上与进行该预测相关的少量信息,而实际搜索这些信息是一个关键方面。但你也希望保持所获得信息的丰富性。因此,我们最终使用的方法实际上是人们在搜索文献中传统上研究过的方法和人们在主动学习文献中研究过的方法之间的一种混合,这些方法都是关于如何找到不同的样本。
所以,这是一种信息、检索和主动学习的混合,以一种非常具体的方式。所以,也许我们可以从搜索开始。
你在你的论文中非常漂亮地说到,这样做的一种简单方法是,我有一个输入示例,我有一个训练数据集或类似的东西,我应该只去检索最近邻,使用某种矢量量化检索系统,比如FAISS,这样我就可以检索所有最近邻。对于这个输入示例,在我的最近邻上微调我的模型。可能有什么问题?
有很多事情可能出错。主要问题是,最近邻搜索实际上被设计为一种搜索方法。所以,如果你有一大堆可能的解决方案候选者,就像大海捞针一样,它试图给你尽可能多的候选者,尽可能接近你的描述。你会意识到,在局部学习中,你实际上是想学习一些东西,而学习一些东西需要综合不同的信息片段。
例如,如果你的任务不是简单的检索任务,也就是说,信息完全编码在你的数据中,你只需要找到这一个信息片段然后返回给用户,而是有很多不同的信息片段散布在你的数据中,你需要找到所有相关的片段并一次性返回给学习算法,那么最近邻搜索就不起作用了,因为最近邻搜索只关注主导频率或数据中某个子集群与你所询问的内容最相似的方面。例如,如果你向你的引擎提出一个问题,我们有一个例子,当有人询问迈克尔·乔丹的年龄和有多少孩子时,你记忆中的数据可以认为只是表示一些集群。数据的一部分只是关于他的年龄的信息,数据的一部分只是关于他的孩子的信息,实际上,在这种潜在的抽象空间中,只有一个类别会更接近你的问题,它结合了两者,然后你的最近邻搜索将返回关于其中一个主题的所有信息片段,我认为在这种情况下,关于年龄的信息会在它找到任何关于孩子数量的信息之前被找到。
是的,我会在屏幕上显示这张图,但你知道,提示是“迈克尔·乔丹多大,有多少孩子”,最近邻过程基本上没有处理他有多少孩子,因为它几乎就像它……
它实际上抓住了实验,这实际上是我们在一个非常简单的设置中进行的,只有四条关于他年龄的信息和关于他孩子数量的信息。我认为我们只是要求最接近的信息,而普通的最近邻搜索只会重复冗余信息,因为最近邻搜索的目标中没有任何东西能够量化返回的示例集应该有多大信息量。它只关心与你所询问的内容的边缘接近程度。
好的。所以这很有趣。所以我们进行信息检索的方式是使用一堆嵌入。我认为在你的论文中,你使用的是罗伯特嵌入,这些嵌入可能与任务相关,也可能不相关。
但你说,与其只使用某种相似性度量在嵌入空间中进行搜索并获得最近邻,不如考虑一下关于某个任务的信息增益。在这个特定案例中,任务是:我需要知道这个,我需要知道那个。我们说,检索给我提供关于这些信息的信息量最大的示例。我想……
没错。有趣的是,如果你只尝试从你的数据存储中检索一个信息片段,这两种观点就变得非常等效了,对吧?因为如果你只能从你的记忆中访问一个信息片段,那么你能做的最好的事情就是选择最相关的那个。
但是,一旦你选择了这个记忆片段,现在你正在寻找下一个记忆片段,仅仅找到与你的任务尽可能相关的东西就不再是最好的方法了,因为这可能正是你已经看到的东西,对吧?在这种情况下,在新的数据中进行这种逐字逐句的应用。所以,你应该做的是,既要查看新信息片段的相关性,也要查看它相对于你已经收集的信息片段的非冗余性。所以,你实际上是在尝试解决一种权衡,即找到与你的预测尽可能相关的示例,以及找到对你的记忆中编码的所有信息进行多样化表示的示例。
所以,让我们来反驳一下,你说我们在一个范围内进行一些活动,如果范围很小,如果特异性很高,最近邻搜索只会产生相对冗余的信息,并且会错过很多信息,它不够敏感,无法捕捉提示中的所有信息。
但是,如果我们只是增加范围呢?如果我们选择最近邻,但我们选择,比如说,两千个最近邻呢?那么,是的,我们现在要对两千个示例进行微调,而不是五个,但其中一些示例可能包含关于迈克尔·乔丹有多少孩子的信息。
是的,这绝对是一个公平的观点,我想说的是,这里实际上有很多事情要说,其中一件是,它实际上不仅仅是重要的。你看到什么也很重要,以及你如何看待它,事实证明,实际上,你知道,它有时很有用,可以看到相同的 信息被重复。
但这取决于信息的具体内容以及双重学习系统如何运作,你的学习系统有多好,你的学习系统有多强大。例如,如果你,比如说,你使用一些问题进行工作,并且你遇到一个问题,你必须计算某个方程的导数,然后你查看你的记忆,查看你以前解决过的类似问题。现在,可能有一组许多其他类型的关于寻找导数的问题,但它们都使用某种技巧来寻找此处不适用的导数。
现在你将在上面进行大量训练,并且你会过度拟合它们。因此,事实证明,非常重要的是要小心你在某个例子上做了多少梯度步骤。事实证明,我们提出的解决方案方法(称为SAFE)明确地解决了这个问题。
我们在论文中有一张图,我认为在这方面相当有启发性,我们实际上查看了SAFE决定只对最近邻进行50步微调的所有示例,因为没有这样的概念,所有信息片段都必须分开,就像在最近邻中一样。因此,SAFE完全可以对相同的信息片段进行微调,如果它有帮助的话,并且在所有这些情况下,它都比最近邻好得多,因为最近邻只会明确地获取此信息片段一次,然后继续处理其他部分,即使它们可能不太有见地。所以我认为,这里确实存在一个范围。正如你所说,对某些例子进行大量训练可能很好,但最近邻这种方法很糟糕,它没有考虑这个问题,即在哪些情况下对例子进行或多或少的训练是好的。
所以另一个想法是,我认为,表示偏差以及模型对微调的鲁棒性。我记得我在Franca的关于深度规划的论文中读到过,他基本上说你要小心微调,因为这些事情,你知道,微调会很快压倒模型。例如,如果你把学习率调得太高,你做了太多的梯度步骤,这几乎就像你在某个时刻,模型忘记了之前知道的一切,这会导致过度拟合你的例子,这会导致过度拟合,并且表示偏差可能是,好吧,你知道,实际上有点像你几乎不希望你被你正在实现的目标所压倒。所以这里有一些权衡。
嗯,有一些权衡。当然,如果你使用非常高的学习率,你的局部微调模型将不再是一个网络,我认为这是一种非常自然的事情。所以你想要的是,你想要以某种方式获取缓慢的信息,并将这些例子作为一种方式来向你的模型展示,即微调忘记一些信息并更紧密地拟合这些新信息。
但同样,你也不想仅仅编码这些信息。然后,我的意思是,如果你进行大量的微调步骤,最终它只会记住你给出的具体信息,或者只是试图预测你从记忆中检索到的具体信息。所以这里有一些权衡,你想要处于两者之间。是的,这就是我们所说的。
是的。
是的。我认为我们工作中出现的一个关键点,这部分取决于我们实际进行信息检索的方式(如果你想这样表达的话),那就是你需要掌握模型的不确定性。这是一个非常关键的方面。
不确定性会告诉你,根据当前模型的表示,如果你给它一个新的信息片段,模型会如何变化,或者模型会变得多么确定。现在你可以用它来说,好吧,这个信息片段与预测非常相关,信息量很大。它对于做出好的预测是必要的,然后我会向模型展示它,同时,可能有一些信息片段与做出好的预测无关,然后你可以排除它们。因此,在某种程度上,你可以为给定的例子确定,如果你的记忆中有重要的信息,在这种情况下,你应该使用它;如果你的记忆中没有相关信息,那么你可能根本不应该进行微调,或者不应该进行太多微调。
嵌入函数如何影响结果?
嗯,嵌入至关重要,对吧?嵌入描述了数据流形。因此,嵌入实际上本质上描述了某个信息片段的信息量。
其他一些事情。这与线性表示假设密切相关,线性表示假设得到了广泛的研究,尤其是在可解释性方面。本质上,这个线性表示假设说,抽象概念足够简单,不需要复杂的网络、LLM,它们在某种表示空间中表示为线性方向。
并且该表示空间是可访问的,因此我们可以利用它。现在你可以把这些表示想象成描述数据流形。因此,在该空间中非常对齐的概念彼此非常相关。
因此,如果你想对这些概念之一做出明智的陈述,你最好了解与之非常密切相关的另一个概念。从某种意义上说,如果你的抽象不好,那么你将无法识别这些相关的概念,只是那些对我们来说似乎非常相关,并且我们知道非常相关的概念。机器将无法识别为相关,然后它就毫无用处。这部分是20年前的故事,当时表示不如现在好,人们没有谈论线性表示假设,因为机器还无法识别我们现在作为人类认为相关的这些概念。
是的,Neil Nanda上次和我交谈时告诉我这件事。这是一个了不起的进展。是的,所以这个想法本质上意味着我们一直在谈论流形,但是你知道,概念等等可以被认为是在空间中具有一些线性方向。
并且有一些使用线性探测器的例子。你知道,有一个关于桌游的例子,这是一个线性探测器,你可以从中提取棋盘数据。但我认为它对于代理模型也很有用。
所以在机器学习中有很多例子,比如数据建模,我和Andrea或甚至LINE谈过,当然还有你的工作。你创建了一个非常基本的线性数据模型,它是一个很好的BB,描述了你如何学习一堆参数以及相对于输入示例和你的数据拟合的偏差项,是的。
所以我认为,一般来说,使用代理模型的想法,即使用一个更简单的模型来理解更复杂模型的行为,是一个非常强大的想法。在我们的例子中,我们只是使用更简单的模型,我们使用线性模型,我们假设这种抽象表示空间中的logits是线性的,它在输入中是高度非线性的,但将这个抽象表示空间视为固定的。
因此,将所有这些嵌入视为固定值,然后只将产生logits的最终头部(最终在经过softmax之后得到下一个标记的概率)视为线性函数,现在允许你像人类一样分析它。现在事情变得易于处理了。如果你想做出专门的决策并想要优化目标,这非常重要。
这就是为什么这些代理模型如此强大的原因。你说得对,在其他领域,人们也研究了这些代理模型,并且发现它们非常强大。例如,在数据建模中,你想学习某些数据如何影响某个预测,或者在LINE中,你想拟合一个线性模型,它实际上是在某个抽象表示空间中被解释的,而不是在你实际理解的空间中。因此,当你为你的预测在本地训练了这个线性模型后,你可以查看该线性模型并解释权重的重要性,对吧?因为你知道,描述某个输入的这个权重具有这个特定的含义。
这难道不疯狂吗?正如你所说,这些是高度非线性的模型,我认为LINE是一种影响函数,你使用线性模型来告诉你给定输入示例的组件特征的权重是什么,以便做出该预测。你知道,你得到了更新模型的例子,它只是,这对我来说似乎很疯狂,你可以进行简单的线性解释代理模型。
但我认为这是一个很广的范围。对于LINE,它之所以有效的原因实际上与局部学习有效的原因是根本性的,因为如果你再次想要做出跨越整个数据流形的泛化预测,你需要一个非常非线性的函数,而如果你只想解释一个局部预测,那么假设你可以用线性模型来解决,因为你需要编码的信息要少得多,对吧?你需要一个简单得多的模型或表示能力,并且不需要像解释这个预测那样大。
当然,这有一些局限性,在某些情况下,它效果不佳,LINE会告诉你,好吧,我们找到了线性模型,但线性模型实际上并没有很好地跟踪大型模型所做的事情。因此,在数据建模的情况下,或者在我们的例子中,我们不使用该线性模型进行预测,对吧?我们还在这个非线性的表示空间中训练该线性模型。因此,从根本上说,我认为你可以将几乎任何真实网络视为一个大型编码器,直到最终层,然后是一个线性层,它投影到你的输出维度。我的意思是,这样一来,这些网络只是由非线性组合的线性函数的序列。
是的,这很有道理。所以,是的,LINE用于局部解释模型无关的解释。对于给定的输入示例,在该局部区域,你可以有一个线性模型,我认为数据建模也是如此。
你知道,你基本上是在说,对于这个简单的例子,你知道数据集的影响是什么?实际上,地图也是一样的。因此,在神经网络的尖峰理论中,它说,你知道,模型在局部是仿射的。
因此,对于给定的输入示例,你可以用一个简单的仿射变换来表示神经网络的行为,它由某种切线表示。所以,是的,这就是深度学习模型的工作方式。本质上,它们只是,你知道,大量的仿射变换的组合。对于给定的输入示例。
没错。你试图将数据移动到某个空间,在这个空间中,数据以某种方式表示,你可以用线性函数进行预测,这在设计你的模型、你的表示以及确保它们会做出好的预测方面非常强大,因为你……
知道结构,是的,我爱你。
对于数据建模,我认为,人们也试图用它们来选择数据。但是,人们发现的一个基本假设或一些限制是,如果你使用这些线性模型来学习选择的子集如何影响你的测试损失(比如说)或你的预测,那么它隐含地假设数据的贡献是线性相加的。
这是一种……所以在解释服务中,有一大堆关于影响函数的工作,也许我们应该解释一下这是什么。本质上,影响函数试图估计如果你改变了模型大小,或者如果你改变了该特定数据点上的模型,那么你对测试点的损失会是多少。你可以用它来理解,我数据集中的这个数据点对这个预测的损失有这么大的影响,对吧?你可以问这些反事实的问题,这就是影响函数试图有所帮助的地方。
一个问题是,这如何变得易于处理,当然,人们通常所做的一个假设是,他们使用损失的一阶或二阶近似来实现这一点。或者,对于数据建模,人们也使用一阶方法。这样做会忽略数据相对于你的预测的相互依赖性。
所以,它只关注单个数据点对预测的单独重要性。但当然,你只在一个数据点上训练你的模型。你用多个数据点训练你的模型,以及你如何构成你的训练集非常重要,不仅在于你提供的数据是什么,还在于你展示的数据相对于模型已经看到过的其他数据而言是什么,以及在这种意义上,这些方法是,当你将它们用于数据选择时,你最终会得到类似于最近邻的东西,你仍然会进行某种最近邻检索,在某种嵌入空间中,但是正如我们所讨论的,这种最近邻检索会完全忽略这样一个事实,即你最终可能会得到完全冗余的信息,如果你反复向模型展示相同的例子,它会认为它有所改进,因为它会认为每个例子都具有相同的价值。但事实上,它并没有增加价值,你从每个例子中获得的边际收益会迅速减少。
这真的很有趣。所以,你是说实际上存在这些一阶、二阶,也许还有更高阶的数据示例之间的相互作用。我们不应该把它们看作是独立的。
这让我想起了机器学习安全文献。例如,存在数据投毒,它表明你可以操纵训练机器学习模型的数据顺序,并且你可以操纵模型做任何事情。你甚至可以在模型中植入后门。因此,我们需要一种方法来理解数据示例之间的相互作用以及数据示例本身。
没错。我认为这非常关键,而且你每天都能看到它,我的意思是,我们也每天在生活中看到它,对吧?所以我们今天访问的信息的决定会影响我们明天觉得有趣的东西,是的,而且这不会独立发生,对吧?我们不会每天都从头开始,只是从状态空间中采样一个新的点,我们考虑的是。
好的。我现在在这个领域有一些知识,也许在两者之间有一些领域可以结合这些知识。现在,我将从第三个领域采样知识,而不是前两个领域中的一个,因为我已经相当了解这两个领域了。
所以,百万美元的问题是,你如何在考虑数据点之间相互作用的情况下进行检索?
这实际上相当简单。我们所做的是构建一个简单的易处理的代理模型,在这个模型上你可以估计该模型相对于进行特定预测的不确定性。因此,你得到某种易处理的量,它描述了如果你向模型展示特定的一组数据点,你的预测会有多好。这个量是可以优化的。因此,你可以通过闭式解进行优化,你可以最小化该模型相对于进行特定响应的不确定性。事实证明,这借鉴了最近邻检索中非常重要的思想,特别是,你采取的第一个例子将是最邻近的邻居,但是一旦你寻找第二个例子,你就会尝试找到尽可能与你的任务对齐的例子,在这个嵌入空间中,相似性以某种线性方式编码,同时尝试避免那些与你已经积累的信息尽可能不同的例子。
所以,我们将在稍后得到闭式解,以及围绕它的某些漂亮的数学公式。但仅仅把它作为一个目标函数,你实际上想做什么?
是的,所以从根本上说,你可以从多个不同的角度来考虑它,但从根本上说,你试图最小化这个机器学习模型的某种内在目标,即对做出良好预测的不确定性。因此,你会提出某种不确定性度量来描述预测的准确性。
然后,机器试图进入它的内存并找到相关的数据,这使得它最终能够做出良好的预测。你可以用多种方式来实现这一点。我认为我更喜欢一个更概率论的视角,从贝叶斯观点来看,你认为你的大型语言模型具有关于描述你的预测的正确函数的先验信念,并且你通过展示更多数据来缓慢地操纵这些先验信念,通过贝叶斯更新,通过逐步更新。所以它正在计算后验认知信念。现在,这种目标所说的就是,它说代理应该从内存中获取那些导致关于它试图做出的预测的最确定后验信念的例子。
好的。那么确定性是什么意思?这意味着你试图最小化方差吗?
后验的方差?是的,在这种情况下。当然,当你在这个贝叶斯模型框架中工作时,一个关键方面是使其易于处理。
所以,这可以说是贝叶斯推理的一个关键限制,贝叶斯推理的一个关键限制是计算这个后验通常是一个非常困难的问题,但是使用这个线性代理模型,并且基本上将初始随机变量视为高斯变量并使用高斯观测模型,这个后验更新是易于处理的,所以你可以通过闭式解进行计算,然后你得到某种关于模型可以做出的可能预测的大分布,并且有一个你关心的预测,对吧?所以你试图最小化与该预测相关的某种不确定性度量,对于高斯分布来说,这通常是方差。因此,你只需最小化你的模型的某个后验方差,相对于你正在做的预测。
所以这真的很令人兴奋,对吧?因为我喜欢贝叶斯分析,不幸的是,我们没有一台超级计算机可以进行宇宙中的所有计算。所以神经网络,它们只产生裸预测,你知道,它们就像最大似然估计器,它们只是说这是最可能的事情,我们不知道置信区间。
我们不知道我们用基本方法所拥有的所有不确定性。所以你所说的就是我们有一个线性代理模型。在这个线性代理模型中,我们可以模拟不确定性。
我们可以进行置信度估计等等。然后,另一件事是你可以为此使用高斯过程。在某种程度上。
是的。我认为最简单的形式是线性代理模型,只是贝叶斯线性回归。所以,这是当你开始使用贝叶斯机器学习时,你遇到的第一个贝叶斯模型,它只是一个标准的线性回归。
但最重要的是,你对权重有一个高斯先验,然后你有一个高斯似然。所以你有一种观测模型,它说你得到的任何观测都是真实函数加上某种高斯噪声,它是独立同分布的。在这个框架中,你可以进行这种贝叶斯推理,完全通过闭式解,所以你可以写下这个闭式解,这基本上就是我们使用线性代理模型时所做的,我们用某种线性回归来近似这个非常复杂的神经网络,就做出好的预测而言,这是一个糟糕的近似,但就决定而言,它足够好了,好的,什么信息与改进预测相关?
你能解释一下如何通过闭式解获得数据吗?因为通常情况下,你认为贝叶斯分析需要进行复杂的求解和马尔可夫链蒙特卡罗等等。但是你可以通过简单的平均值来做到这一点。也许你应该解释一下我所说的闭式解是什么意思。
所以,我们所说的闭式解通常是指我们可以用数学公式来描述后验概率分布,并且可以直接从先验和似然的公式推导出它。所以标准的贝叶斯推理的工作方式是,你根据你的数据的似然乘以先验,除以某种归一化项,使其成为一个真实的概率分布。关键在于,如果你用高斯分布来做这件事,也就是说,如果你使用高斯先验和高斯似然,那么这个概率分布仍然是一个高斯分布。这根本是因为高斯分布只包含这些一阶和二阶项,它们是唯一一种概率分布,如果你有这些二阶和一阶项,你就知道你有一个高斯分布,这就是为什么你可以通过闭式解来做到这一点。
非常好。所以我们已经描述了我们如何估计给定预测的置信度。现在我们想做的是使用尽可能多的推理时间计算,因为如果你考虑一下,我们可以使用无限的量,但这并不好。如果我们可以将推理计算量与置信度联系起来,那不是很好吗?
是的,绝对的。我们最近在研究这个问题,因为你可以把它看作是一个强大的工具,当我们知道如果我看到了某些数据,模型会有多确定时。
然后我们可以考虑,好的,为了获得模型的某种改进,我们实际上想要付出多少代价,也就是我们想要付出多少计算量。所以从这个意义上说,我们可以使用这些关于模型有多不确定的预测来尽早停止计算。当不确定性减少不再与我们所付出的计算量成比例时,我们尽早停止计算。所以通常对于任何类型的预测,你都会得到这种收益递减曲线,因为边际收益随着时间的推移而减少,因为你慢慢地积累信息,在某个时刻你将积累所有所需的信息。
意思是使用干预来做到这一点。
我的意思是,我喜欢将这个框架看作具有控制器和内存,对吧?本质上,也许在标准的计算框架中,人们会考虑相同的两个组件,例如图灵机。所以你有一个头部,它是最终的计算单元,然后你有一个内存,这是一个无限的磁带。
现在,我们今天可以用这些学习到的抽象表示来做的事情非常令人惊叹,那就是我们可以使用我们学习到的抽象的直觉来访问存储在这个内存中的任何内容,而在某种意义上的计算框架中,你必须在图灵机的磁带上向左和向右移动。现在,本质上,在对数线性时间内,我们可以一次访问整个内存,或者至少访问相关的部分,控制器在这里有两个重要的功能。第一个,正如我所说,能够决定应该操作哪些内存部分。
它可以通过利用这些抽象和表示来做到这一点,本质上是在这个内存空间中移动,使用捷径而不是从左到右移动。控制器的第二个关键组件是它学习表示和指令,允许它从内存中获取信息。所以它从内存中读取,然后更新它的权重。
如果你从神经网络的角度来考虑,我们想要一个非常擅长进行这些梯度更新的控制器,对吧,所以你可以把更好的模型、更强大的模型,更强大的控制器看作对某些类型的更稳健的信息,它将从它的内存中读取这些信息,并利用它的抽象,利用它的知识来真正使用这些信息做出良好的预测,对吧?我认为一个很好的类比是,如果你给一个孩子一本复杂的数学教科书,它可能不会立即从中学习太多,因为理解这些信息的表示和抽象并不存在。所以,我们想要一个强大的控制器,无论它从内存中获取什么信息,它都能解释这些信息,并利用这些信息充分发挥其潜力,从而做出良好的预测。
是的。所以FSA是控制器,然后两个堆栈本质上是内存。但这很有趣,对吧?因为元素被强调,所以它们只是表示,而我的联合主持人凯特非常喜欢图灵机。
他总是说,你知道,有一类算法可以在有限状态自动机上运行。但是,演员,控制器,图灵机。而这类算法,尽管原则上可以在大型语言模型上运行,但它们不是可逆的,因为梯度下降,当然,这是一个具有固定内存量的东西,可以扩展其内存。但更广泛的观点是,图灵机类计算可以进行任何类型的计算。我们不仅仅是在谈论一种改进预测性能的方法,通过特异性。我们实际上是在谈论一种新的图灵完备计算范式。
当然。从这个意义上说,你可以把这种记忆想象成可能是无限的,摆脱了限制大象必须一次性将所有信息压缩成这种有限格式的限制,这种格式之后无法扩展。如果你想提出一些不同的东西,你基本上必须从头开始重新训练。现在你可以增强已经学习到这些强烈直觉、强烈表征的控制器,这些直觉和表征使你能够快速适应新信息。你可以将它与这种潜在的无限内存结合使用,随着时间的推移,随着系统的进化,你可以添加或删除信息片段。
是的,所以它是一种功能更强大的模式。它不是一种从头到尾用统计方法训练的东西。所以我们学习记忆,然后我们手工制作控制器,我想这有点奇怪,因为我们有一个固定的嵌入空间,我们从某个数据空间中进行检索。
让我们以ARC挑战赛为例。ARC挑战赛的获胜者,我们的好朋友,Minds AI团队,他们正在做测试时间行为,你知道,像转导主动微调那样,这就是他们在做的,以及它的普遍性如何,对吧?他们所做的是说,好吧,我们知道奖品是什么。
我们可以构建一个数据生成器。然后当输入示例进来时,我们可以倾斜到该示例,我们可以生成数据,我们可以在语言模型中找到它,然后我们得到了一个经过验证的路径。所以它在图灵完备方面是图灵完备的,但它似乎并不通用,它仍然看起来很具体,但它肯定比我们目前知道的任何其他架构都要强大得多。所以我想我们正朝着这个方向前进一点点。
我认为,如果你从长远来看,我认为这些类型的架构的轨迹将走向何方,我并没有看到很多根本性的限制,尽管目前的实现肯定有很多根本性的限制,正如你所说。所以这些是学习到的表征,控制器是学习到的,然后保持不变。
理想情况下,你想要的是随着时间推移而学习的系统,开放式系统,从错误中学习并改进其表征,并提高控制器吸收新信息、随着时间推移适应特定任务的能力。当然,这正是真正智能系统所做的,而我们现在还没有做到大规模的程度。因此,如果将此扩展为一个具有有限工作内存的系统,这部分属于控制器,可以向其内存添加和删除内容,并且这样做非常高效,高效地找到其内存中的相关部分,我认为从哲学上讲,这是一种非常强大的通用计算模式。
但是它总是专门的吗?我想这涉及到图灵的哲学。所以图灵认为存在知识的基元。如果你有一些基元,你将它们输入模型,那么原则上你可以处理任何形式的新颖性。但是任何进行检索的系统,大概它仍然需要某种流形或未来情况的草图。
然后我们可以依赖它。绝对的,我认为,任何智能系统都在不断地从其环境中学习,并学习什么是正确的抽象来在该环境中做出良好的预测,任何智能机器都必须这样做。所以。无论我们将它放在什么环境中。
如果我们保持环境静态,这就是我们现在所做的,那么这是一个简单的任务,如果我们把机器放在什么环境中,机器必须弄清楚什么是正确的抽象,以便能够找到信息片段,然后将这些信息片段结合起来做出良好的决策。我认为在这个范例中没有任何东西。没有你不能在开放式系统中做到这一点的根本性限制,但这当然还没有做到,这是一个非常令人兴奋的方向。
所以另一个想到的事情是,我对主动推理感到兴奋,或者将来可能会有一个非常分散的代理网络,它们就像,你知道,做一些非常简单的事情,就像你刚才描述的那样。所以非常情境的主动推理,而现在我们描述的是,我们有一个每六个月更新一次的整体语言模型。然后我们有一些信息检索存储,它会定期更新。在进行预测时,我们基本上进行推理,对吧?然后,我认为我们把它扔掉了,所以我们可以进入这个联合范例,而不是把它扔掉,我们记住它,最初我们只为我记住它,但也许我开始和你分享它,最终它会回到母舰。
或者我们可以记住预测。我们也可以做的就是记住预测,对吧?所以每当,我认为,真正学习的系统在测试时进行局部计算,然后最终它停止。
好的,计算在多大程度上是有用的、富有成效的?在多大程度上?我最终得到了一个好的预测吗?然后你可以改变学习机制,对吧?你可以根据该预测进行更新。你可以改变你接下来做什么。
这种价值的现金会是什么?只是更新原始模型中的流形?或者你知道有一种MIT方法,你知道,像DreamCoder那种方法。我们做某种抽象库学习。你认为有一种方法可以进行有用的内省式抽象知识吗?或者你认为我应该回到你自己的网络中?
我认为有多种方法可以做到这一点。所以,我认为你肯定想要做的就是随着时间的推移改进你的表征和抽象,但从根本上说,我认为这些是强烈的直觉,使你能够提取正确的信息片段,然后将这些信息片段结合起来做出强有力的预测。对于这些,这些吸引子是必要的。当然,你也会做,我认为最终我们人类也会做,我们不断地将遇到的模式存储到我们的记忆中,以各种保真度,机器可能,如果你给它足够的内存,可以比人类所能做到的更高保真度地存储这些模式。所以,我认为存储信息和更新你的表征以解释你的环境正在发生变化的事实,你正在处理的信息类型正在发生变化,这两者都是获得真正智能系统的关键方面。
是的,你认为,你知道,一个模型做到了吗?我们应该谈谈这个缩放的概念,你知道,像你介绍的推理时间缩放一样。但是你认为他们会做这样的事情吗?你认为他们会估计他们的信心或知识,然后进行可变数量的计算吗?或者你认为它仍然相当基本?
很难评论OpenAI用GPT-4做了什么或没做什么,因为不幸的是,我们真的不知道他们在做什么。
他们所说的只是他们在测试时花费一定量的计算来改变他们的模型,或者至少改变他们的模型,以得到与他们否则会得到的不同的预测,如果他们只进行一次前向传递通过模型。从这个意义上说,我认为它是相关的,并且是这种在本地进行计算和花费计算范例的一部分。我正在本地改变分辨率,我们正在处理的预测周围的可访问分辨率。是的,但我认为他们不一定是这种内在的不确定性最小化,这与主动推理或这些类型的事情有关,因为我没有看到他们谈论过这个,但是。
他们应该在这方面有所作为。所以你知道,当你一直使用语言模型时,你会发现它们会失败,你知道,你可以感觉到它们何时偏离分布。因为实际上发生的是,当你倾斜时,你知道,当你问它一些问题时,它就像在一个采样良好的密集流形部分,你会得到丰富的答案。但是这个流形实际上就像一个景观,有时你处于无人区,它只会给你最平淡无奇的、几乎没有意义的答案。如果它知道这一点,那不是很好吗?
是的。所以我想我现在真正触及了一个非常重要的点,那就是,我们能否判断我们是否有与做出良好预测相关的信息,这实际上是我们可以从这些不确定性估计中提取的一些信息。因此,掌握我们对预测的确定性界限对于判断存储在内存中的信息是否有用非常有用。
鉴于我目前的抽象和面临的任务,这些信息是否有用,以实际解决该任务,或者它在Michael Jordan的例子中是否有用,如果Michael Jordan及其孩子的年龄实际上没有存储在内存中,那么,而且也不在你的权重中,那么就没有办法做出好的预测,也没有办法产生好的输出。我们实际上在某种程度上讨论了你可以使用这些不确定性估计来提供洞察力,说明你的模型能够做什么以及你的模型不能做什么。而这表现出来的一个关键方面实际上是在改进收敛保证方面。
所以你可以做的一件很酷的事情是,如果你正在最小化,如果你采取这种选择信息量最大的数据或选择最大程度地减少模型不确定性、模型预测不确定性的数据的主要方法,那么你可以证明,相对于可用的数据以及你的抽象有多好,最终你会做出最好的预测。最终,你的不确定性会缩小到尽可能小。而如果你使用最近邻搜索来选择数据,这是不可能的,但是回到你提出的其他几点,关于我们在数据流形的这些密集区域中,我们的模型是否已经尽善尽美?我对此不会那么有信心,对吧?显然,在模型没有看到很多东西的那些非常稀疏的部分,它做得不好,我们今天意识到了这一点。
但我认为一个根本性的问题在于这种归纳范式,当你训练模型在任何地方都表现良好时,显然在训练分布中表示得最好的那些点上,如果它做得不好,它的损失会非常高。所以它最终被训练得在那里表现得非常好。但是,如果你用你拥有的任何代表性能力放大到这些部分,你仍然可以以相当高的保真度来表示它们。嗯嗯。
我想我之前问过一个问题,但我可能问得不好,那就是现在我们有这种模式,它有两个极端。我们有最通用的东西,即归纳,然后我们有最具体的东西,即转导。可能存在中间地带吗?例如,你可以有一个金字塔方案,你做最具体的事情,但你也有一些不同级别的样本,比如,当然。
这会更好吗?我认为在某种程度上,这种情况已经发生了。如果你看看今天模型是如何训练的,模型首先通过预训练来拟合大量人类生成的数据,你试图给它尽可能多的数据,但是人们意识到,好吧,我实际上并不关心我在互联网上某个不知名的论坛上找到的特定数据。
我真正关心的是数学或编码,然后人们所做的是收集非常特定于数据流形一部分的数据,并在其上微调模型。你可以把它想象成某种形式的转导学习,实际上我喜欢把转导学习想象成整个频谱。所以转导学习的一个特例是归纳学习,你真正关心的是整个数据流形。
然后还有所有这些情况,你关心数据流形的某些子集。所以你把它分割成你对要解决的任务感兴趣的实际区域。但是你仍然只训练你的模型一次,然后冻结它,然后部署它。
但是,仅关于那一点,假设部分数据处于模糊状态。局部学习所做的实际上是走向了这一极端,它走向了极端,认为每当你使用这些语言模型之一时,假设你总是只对做一个预测感兴趣。因此,你最好训练一个专门用于该预测的特定模型。然后,对于下一个预测,你可以再次训练一个特定模型。是的,我的意思是。
第一个声音很有趣,我们几乎要回到起点,我的意思是,谷歌搜索真的很好,那是纯粹的信息检索。然后我们来了个一百八十度大转弯,我们做了纯粹的,你知道的,归纳推理。现在我们就像在中间相遇。
但我认为这有可能解决我们在……进行通用编码或类似的事情时遇到的许多失败、错误和问题。问题总是出现在你处理歧义的情况。
是的,你可以通过提示工程做很多事情。你可以说,不,我的意思是这个。不,我的意思是那个。但我认为有很多这种歧义消除可以通过在某种程度上对换能器光谱进行某种轻微的处理来自动完成。
啊,我认为在实践中,呃,当我们在预训练时花费计算资源时,通常情况下,这就是人们使用缩放定律所做的事情,他们说,好吧,我能够花费这么多计算资源,然后我喜欢缩放定律,告诉你我能够训练一个特定大小的模型,对吧?但是当然,如果你有更多的计算资源,你想要看到的是训练一个更大的模型,对吧,在更多的数据上。
与其仅仅训练更大的模型,不如提高你的表示能力,至少提高你有效表示能力来进行特定预测,这不仅仅是增加模型大小,而是以一种聪明的方式使用模型大小,对吧?与其仅仅使用模型大小来试图一次解决所有问题,不如使用模型大小,但本质上是复制该模型,为每个预测训练一个单独的模型。现在你不需要从头开始训练一个单独的模型,这当然会非常低效。因此,你可以做的是训练一个模型,该模型仍然试图一次解决所有问题,至少在它能够胜任的范围内,凭借其表示能力和给定的计算量,然后利用它作为初始化来学习一个特定模型,然后所有表示能力都可用于拟合信息或压缩你需要进行特定预测的信息。
那么让我们谈谈这在实践中是如何实现的。我认为这些巨大的语言模型不会很快消失,对吧?所以现在我们将不得不为编码做三点火。
所以我看到未来可能会发生一些有趣的事情。例如,顶级的芯片越来越快了。我现在刚订购了一台新的 M4 MacBook Pro。它将会很棒。我的意思是,原则上,我可以边走边微调一个 Llama 模型。
所以,你知道,就像我在我的存储库上,它在我的存储库上进行微调,我可以想象会有某种混合的东西,比如我们让小型模型进行主动微调,然后我们用它生成一个完成。然后也许我们把它送回云端进行检查,然后我们进行一些信息。你是否看到某种实际的混合使用?
这种情况的出现?嗯,我认为这当然有可能。我认为,肯定有趣的是,对于较小的模型,它能够将更多这种抽象信息压缩到更小的包中,这使得用这样的模型进行测试时间学习很容易,因为反向传播通过该模型,而且前向传播也通过该模型。
因此,利用这种直觉来搜索事物要容易得多,呃,无论如何。我们看到的是,在所有规模上,测试时间学习都可以提高性能。因此,即使你使用的是更先进的模型,在测试时间进行局部学习仍然可以提高性能。
所以我估计,你花费计算资源以及花费多少计算资源,将来将非常依赖于你面临的特定问题,依赖于你面临的具体问题,因为呃,你的机器上肯定会有某种固定的计算资源。但我相信,随着时间的推移,提供这些大型云服务的提供商也会转向一种设置,在这种设置中,他们允许可变数量的推理时间计算。你基本上可以告诉他们,我想要在这个特定问题上花费多少计算资源。
所以可能会有一个非常棘手的研究问题,你将来想把它卸载到云端,这对你来说似乎很明显。但是,就像很多工作已经完成的那样,我相信将来,呃,你只需要告诉它,好吧,使用任何必要的计算资源来在测试时间解决这个问题,这可能比你的本地计算机能够处理的要贵。但是,呃,我认为,我认为我们将看到这种计算资源的扩展。
并且在两个尺度上,我们将看到一个只是利用机器上否则将未使用的计算资源,对吧?但我认为我们也将开始付费,例如实际获取额外的计算资源,这些资源原本用于其他用途,例如预训练,我们将开始为这些额外的计算资源付费,以解决更复杂的问题。嗯,仅仅是因为我们已经看到,在所有规模上,如果你花费……
传统的计算资源,是的。它还解决了整体式 AGI 的根本问题,那就是现在它不是开放式的,对吧?当我们实际上确实让用户能够探索地形的不同部分,然后我们可以将这些经验教训带回集体时,我们现在拥有了一个整体上不断发展的创造性 AI 系统,这……但这太棒了。
首先,我对你的工作非常兴奋,而且你向听众讲述它真是太好了,因为坦白说,我认为不确定性和置信度估计非常重要。所以我希望人们已经了解了这一点,我认为智能是能够根据你的不确定性进行适量计算的能力。这非常重要。
我认为换能器主动微调在未来五年内将绝对非常重要。所以非常感谢你今天加入我们。这太棒了。
非常感谢你邀请我,我对此非常兴奋。