[在 criblate.com 提交字幕更正] 当将文本编码为二进制时,通常希望尽可能减少数据量。因此你可能会自然地想知道:是否存在某种根本性的限制,决定了文本压缩的效率极限?默认的 ASCII 编码相当低效。每个字符占用八个完整的比特位。如果你运用一些巧妙的技巧,将更常见的字符与较短的比特串关联起来,可以将平均每个字符的位数降至约四位。而比这更智能的方法——利用长文本序列中的模式——还能实现更好的压缩效果。但同样地,极限在哪里?我猜在座许多人可能听过某种估算值,我会在最后分享一个。但比起任何单一的数字答案,更有趣的是:你该如何着手回答这个问题?
这一问题最早可追溯至 20世纪40年代,源于克劳德·香农(Claude Shannon)开创信息论的奠基性工作。有趣的是,他为回答此类问题而开发的数学理论,在现代机器学习中竟展现出惊人的实用性。以今天最显著的例子而言:当大型语言模型进行训练时,其预训练阶段通常被描述为“下一个词元预测”,具体使用的是称为交叉熵损失(cross-entropy loss)的方法。而“交叉熵”这一术语,其根源正是信息论。但同样有趣的是,信息论的一个结论指出:预测与压缩在数学上是等价的。它们实际上是同一枚硬币的两面。
这意味着,你可以完全重构对预训练目标的思考方式:它本质上并非关于“下一个词元预测”,而是关于构建一个尽可能高效的文本压缩器。稍后我将详细解释这背后的原理,但当你理解这一点时,我认为它能更清晰地阐明“交叉熵”究竟意味着什么,以及我们为何使用它。此外,我不知道你们怎么想,但对我来说,在追求智能的过程中将压缩作为根本目标,本身就极具吸引力。事实上,有些人甚至直言:“压缩即智能。”
然而,如字面所述,由于“智能”是一个如此模糊且定义不清的术语,要严格评判这一主张颇为困难。更稳妥的说法是:压缩的数学理论与人工智能有着令人惊异的关联性。尽管如此,这句简练的话发人深省。因此,这是三部曲视频的第一部,旨在奠定数学基础,以评估这一主张究竟意在何为。在接下来的约30分钟里,我们将专注于理解压缩的极限,并看看是否能让你们觉得,自己能够重新发现香农无噪声编码定理背后的核心思想。
要做到这一点,需要重新发现几个关键定义:即“信息”与“熵”。我称这些定义为“被重新发现的事物”,听起来可能有些奇怪,但伟大的定义往往是某种洞察力的残留物。你看,这两个特定术语在给出公式的意义上其实不难定义;但如果过早地这样做,就会破坏一个好故事的乐趣。通过询问语言压缩的极限,你会被不可抗拒地引向这些概念,这要有趣得多。我希望你们最终注意到的是:我们无法真正回答这个问题——或者说香农无法在不涉及某种“智能”概念的情况下回答。
我们将进入对语言建模的探讨,这虽然极其复杂,但通过一个包含相同核心思想的更简单例子来热身会有所帮助。想象你派往遥远月球的机器人,它的任务是漫游地表并收集数据。从地球这里,我们向它发送移动指令,这些指令仅限于四种非常简单的可能性:上、下、左或右,每种都有固定的步长。微妙之处在于这些指令并非均匀分布:我们发送的内容中有一半是“上”,四分之一是“下”,八分之一是“左”,另外八分之一是“右”。这略显刻意,旨在作为简单示例。秉持这种简洁精神,我们还假设每条指令都是独立的:无论前面的上下文如何,它们都从该分布中采样。
当我们向这个遥远的机器人发送数据时,是以比特流(0和1)的形式进行的。由于这种方式缓慢且昂贵,自然的问题——也就是今天的热身谜题——是:以比特流形式编码这些指令的最有效方法是什么?在这里,我们可以想象三位学生各自尝试给出答案:一位直截了当,一位聪明巧妙,还有一位非常理论化。那位直截了当的学生立刻举手说:对于这四种指令,我们可以直接使用两位比特。例如00编码“上”,01编码“下”,10编码“左”,11编码“右”。
在接收端,这使得机器人解码变得非常容易。它只需将比特流分割成两位一组,并将每组转换为相应的指令。然而,那位聪明的学生指出:这样做完全没有利用“上”比“左”或“右”出现频率高得多的事实。他提出了一种方法,为每条指令使用不同数量的比特。我稍后会解释具体细节,但我想强调的是:一旦你允许不同指令使用不同的比特数,机器人如何解码就不再显而易见。毕竟它需要知道在哪里划分界限。
这位第二学生非常聪明,已经考虑到了这一点,但最容易的解释方式是我直接展示出来。他们建议:用单个比特0代表“上”,用两位10代表“下”,用三位110代表“左”,用三位111代表“右”。你可以用一个简单的加权总和计算出这种方法平均每条指令所需的比特数:一半的时间只用一位,四分之一的时间需要两位,其余时间则需要三位。将这些加权求和后,你得到每条指令平均1.75位比特,这确实优于每条约两位比特的朴素方法。
第二位学生在最后两条指令上花费了更多比特,但由于它们出现的频率低得多,这完全被最常用指令仅使用一位比特所弥补。
这种效率在经验上也能得到验证。这里是一组从该分布中采样的指令示例,你会注意到“向上”的指令很多,“向下”的大约只有一半,而向左和向右的更少。按照这种编码方式将每个符号转换为相应的比特串后,生成的比特序列确实比朴素方法得到的更短。但我听到有些人在问:机器人怎么知道如何解码这些内容?我们能确保存在一种无歧义的方式来划分界限吗?在编码术语中,用于编码指令的这四个比特串中的每一个都称为码字。随着我们逐步推进,看看你能否找出那位聪明的学生遵循了什么规则,以确保他们的码字之间不会发生冲突。
实际上,你只需要从机器人的视角观察一个示例比特流并仔细思考即可。假设它接收到的第一个比特是 1,到目前为止,这可能是最后三条指令(向下、向左或向右)中任何一条的编码。如果接下来是 0,那么它只能是向下指令,没有其他可能性。因此机器人可以将其注册为一条完整的指令。从这里开始重新计算,如果接下来是 0,那一定是向上指令的编码,因为没有其他可能性以 0 开头。在此之后,如果看到 1,目前仍具有歧义性,它是最后三个码字中任何一个的前缀。如果下一个比特又是 1,它仍然具有歧义性,是最后两个码字的前缀。但随后的那个 0 则明确了这三个比特一定是编码了向左指令。
简而言之,机器人所要做的只是读取接下来的比特序列,直到形成完整的码字的那一刻为止,此时它可以将其注册为一条完整指令。如果你退后一步思考就会发现,这一切能够成立的关键约束是:没有任何码字可以是另一个码字的前缀。例如,假设你试图引入一个第五个指令,其码字为 100,这会导致冲突。因为在读取了 10 之后,不清楚这是指向下指令,还是这个新的第五个指令的开头。当你避免这类冲突时,这种编码方法有一个特殊的名称。在业内它被称为前缀无关码(prefix-free code),或者更常见地称为前缀码。
有一种非常直观的方法可以通过图表来选择前缀无关码,该图表示所有可能的二进制字符串。这个图表也与我将在几分钟后展示熵的方式有一些有用的平行关系。如果你停下来盯着它看一会儿,可能就能相当直观地理解其中的原理,但我还是要点出重要的特征。每一层显示给定长度的所有比特串,你会注意到以 0 开头的所有内容都位于图表的左半部分,而以 1 开头的则位于右半部分。随着向上延伸,同样的思想递归延续:以 00 开头的所有内容位于图表左上角的四分之一区域上方,以 01 开头的则位于右上角的四分之一区域上方,依此类推。
特别是关键属性是:图表中的每个二进制字符串都是其上方所有内容的父前缀。因此,当那位聪明的学生选择分配单个比特 0 来表示向上指令时,他们实际上通过这样做消耗了所有可能码字空间的一半。因为基于前缀无关属性,现在禁止使用任何以 0 开头的码字。类似地,分配一个 0 给向下指令又消耗了四分之一的空间,而剩下的两个指令各占八分之一的空间。你可以清楚地看到没有任何剩余部分。此时我猜你的脑海中可能有一种共鸣感,因为这些比例与每个指令出现的概率完全相同。
事实上,这种数据大小与概率之间关系的微妙感觉正是信息论的奠基性洞察。当你凝视这令人愉悦的对齐方式时,它可能暗示这位聪明学生的解决方案不仅更好,也许它是某种意义上的完美。但此刻做出这样的断言似乎是一个大胆的主张。你怎么知道不存在一些极其巧妙的方法,通过处理非常长的指令序列来使每条指令的平均比特数比这更低呢?这就引出了第三位学生“云端思考者”,他并没有真正考虑他们可以实施的实际代码,而是在沉思完美且最优高效的编码应具有哪些属性。
他有一个非常聪明的想法,即论证随机噪声应该是不可压缩的,因此完美的压缩算法应该产生与随机噪声无法区分的比特流。有趣的是,尽管这听起来很简单,但这实际上可以引导你重新发明香农熵的概念。当我提到随机噪声时,我的意思是每个比特以 50% 的概率是 1 或 0,并且所有比特彼此独立作用。不难证明我们第二位学生为机器人设计的编码确实遵循了这一规则。如果你仔细想想,消息以向上指令开头的概率是 50%,因此第一个比特有 50% 的概率为 0,否则为 1。如果它是 1,那么指令是向下的概率也是 50%,意味着下一个比特为 0,否则为 1。以此类推。
每一个新比特确实都像是一次独立的掷硬币实验,所以对接收者来说,压缩后的比特流实际上与随机噪声无法区分。但我为什么说随机噪声是不可压缩的呢?为此,让我们真正从接收者的视角来关注事物。在这里,与其逐条思考指令,不如放大视野并从整个消息的角度以及完整消息的编码外观来构建我们的讨论。当接收者看到一串代表某个压缩消息的 n 个比特时,这是他们可能收到的具有相同大小的 2^n 条消息中的一条。关键在于,因为我们假设这看起来像随机噪声,所以所有 2^n 条消息必须具有相同的概率。
需要澄清的是,我们不再仅仅谈论机器人示例。我们的理论化“云端思考者”学生真正想要为任何数据类型(比如也许我们在压缩语言或图像)的完美压缩外观提出论证,并且希望这个论证具有普适性。
无论您使用何种具体的压缩算法,脑海中的一种粗略直觉是:在所有能压缩至 n 比特的消息中,有些可能包含更多可预测的数据,而另一些则起始于较少不可预测的数据。但关键点在于,如果压缩后的比特流看起来确实像随机噪声,意味着所有大小为 n 的位串出现概率均等,那么被压缩的所有底层消息也必须以相等的可能性产生。更具体地说,其概率为 1/2^n。
那么,为什么我声称这是不可压缩的呢?让我们调出那张代表所有可能二进制字符串空间的图表。在这种情况下,我们可以将这 2^n 个等概率消息的所有编码视为该图表中一层的位串。如果您尝试定义一种替代方案,试图通过让其中一条消息使用更少的比特来提高效率,它会在图表中向下移动。这意味着它会与另一条消息重叠,因此您必须将那条其他消息移到图表的其他位置。
至少这意味着它不得不与第三条消息共享空间,而最后这两条消息必须被向上推高一层,从而需要为它们各增加一个比特以消除歧义。因此,在这里节省一比特会在别处花费两比特。这基本上就像是在推地毯上的一个凸起,结果却发现它在另一个地方以更糟糕的方式弹了起来。一般来说,任何用图表中较低位置的字符串编码的消息都会占用超出其公平份额的空间,这迫使多条其他消息占据更小的区域并将它们推高,意味着它们的编码效率更低。
我猜测对于所有观看者来说,这里针对等概率消息的最有效方案是给予它们相同数量的比特,这相当直观。但我认为该图表提供了一种更具体的方式来理解为何否则会出现不利的权衡。一旦您有了“完美压缩看起来像随机噪声”这一概念,这正是我在引言中提到的那种见解如何引导您得出定义的情况。请注意,我们基本上是在说:在完美方案中使用 n 比特的消息必须具有 1/2^n(或 2^-n)的概率。
如果您在此处对两边取以 2 为底的对数然后取负,这就等价于说:假设完美压缩,分配给消息的比特数等于 -log₂(p),其中 p 是发生的概率。这个负对数表达式是所有信息论的基本公式。到目前为止,我一直在试图通过询问完美压缩来让您觉得这个值是必然会被吸引到的概念,而不是让它感觉像是我们从一开始就采用的任意定义。
有些学生确实觉得这个负对数需要一点时间来适应。您知道,在思考中间的分数之前,它看起来应该是一个负值。但真正直观的理解方式是:它在问您需要将可能性空间减半多少次才能得到某个特定的量。在这里,让我调出一些坐标轴并向您展示负对数 p 的图表。我也见过有些作者默认将其写为 log(1/p),也许您觉得这样更直观。您也可以将其视为以 0.5 为底的对数,虽然我从未见过有人采用这种惯例,但我个人非常倾向于将其作为约定。
无论您如何书写它,香农意识到的关键是:这是一种非常有用的思考消息包含信息量的方式,即使字面上的完美压缩是不可能的,且 p 不再是干净的 2 的幂次方(这意味着输出将是某个分数值)。事实上,他将此表达式定义为事件的信息量。我脑海中有时会有一个图像:用一个小的饼图来描绘事件的概率,而信息则是上方的一个条形柱。随着概率被挤压得越来越接近零,这个条形柱会升高;也就是说,不太可能的消息包含大量信息。
随着概率接近 100%,条形柱放松变短。高度预期的消息包含非常少的信息。我要澄清的是,这个定义是有实质内容的。它不仅仅是重新缩放概率,就像转换为另一种单位系统一样。您已经看到了核心思想:在完美压缩方案中,分配给完整消息的比特数精确等于这个信息量。
当然,完美压缩并不总是可能的。您的消息概率可能不是完美的 2 的幂次方。因此,更一般的表述方式是:一条消息的信息量给出了其压缩量的下界,至少在对所有可能消息取平均时是这样。完全有可能针对某一个特定案例对压缩算法进行过拟合。为了真正理解信息和分数比特,我们需要超越那个热身例子来提升我们的水平。
看,在机器人的例子中,概率过于干净了。它们都是完美的 2 的幂次方,因此每个符号的信息量可以精确匹配整数个比特。但香农对更现实和复杂情况下的压缩极限非常感兴趣,比如自然语言。例如,这里我将调出一个示例短语中每个新字母的概率,至少是由我正在本地运行的一点 GPT 模型确定的。顺便说一句,如果模型提供的概率感觉可能与实际语言的概率不同,您有权提出质疑。请保留这个想法,它在后面变得非常相关。
语言的一个关键区别在于一切如何严重依赖于上下文。您看到的每个新字母的概率分布高度、极度地取决于之前发生的一切。另一个巨大的区别是,所有这些概率显然都不会是干净完美的 2 的幂次方。因此,如果您计算其中每一个的信息量(即取负对数),您看到的所有数字都是分数值。
再次强调,对这些含义给出模糊的解释真的并不难:对于非常可预测的字母,信息量很低;而对于非常不可预测的字母,信息量很高。但在座的各位观看者……
足够聪明以要求更精确的解释,即证明这些值为何值得拥有“比特”的单位。我的意思是,并不存在某种完美的编码方式,使得字母“I”的代码词恰好是4.19比特,或者让高度可预测的“o”仅用极窄的一部分比特来编码。其真实含义与对整个消息进行编码以及得出压缩界限有关。
对于完整短语(如我在此展示的)的概率,看起来像是将每个连续新字母的概率相乘。这里再次强调,这些连续字母的条件概率是基于之前出现的内容计算的。这本质上是概率论中的链式法则。我想让你注意这与对数运算如何完美契合:如果你计算该完整消息的信息量,即取负对数表达式,由于对数将乘法转化为加法,这便非常自然地分解为每个单独字母信息量的总和。
在本系列的最后一部分,我将带你了解一种具体的压缩算法,它实际上可以将这段文本的压缩结果控制在该数值的正负一到两个比特范围内。这不再像将每个字符映射到预定义代码词那样简单,但你依然能获得一种非常直观的感受:通过累加每个字母的分数信息量来确定最终编码的长度。这就是核心思想。
即使当你需要将其与实际数据大小时,数值会被四舍五入到最接近的整数,香农所意识到的关键在于:在更高层级的抽象层面上工作是多么有用。在这一层级中,所有信息都可以自由地保持连续性,且连续事件的信息量能够非常完美地相加。
然而,如果你退后一步,认真评估语言的根本可压缩性,这一切都取决于一个关键问题:你是如何知道每个连续字母的概率的?在这里,为了所有动画演示的目的,我一直使用语言模型来说明事物。但一方面,这未必等同于语言背后真实的概率;另一方面,我们甚至不清楚“语言的真实概率”究竟意味着什么。
因此,我认为最具有启发性的做法是回顾过去,看看香农在语言模型或现代数据分析出现之前很久,他是如何思考这一切的。他早期关于语言信息量的实验涉及观察特定的短字符序列(通常被称为n-gram),并追踪倾向于跟随其后统计规律。
例如,如果你扫描几本书,注意到每次两个字母“th”出现时都记录倾向于跟随的字母,你就可以建立一张这些字母的表格,让那些统计数据代表你所关心的概率样本。然而问题是,这种方法对于更长的字符串完全失效,尤其是任何在你分析的所有书籍中从未出现的文本串。
尽管如此,讨论预期会跟随此类较长字符串的内容是完全合理的。事实上,更应关注这些情况,因为较长的上下文窗口使得事物最具可预测性,而正是这种可预测性能带来最大的压缩收益。因此,香农没有使用原始统计数据,而是在稍后分析了他当时可用的另一种英语语言模型——他的妻子贝蒂。
据故事所述,香农拿出一本书并开始让贝蒂猜测下一个字母。香农随后逐字记录她的猜测。每次她猜错时,他写下正确的字母;而每当她猜对时,他就用一个短横线代替。其想法是:他创建的这份转录版本包含的实际字母比原文少,但其要点在于它包含了相同数量的信息。
至少从以下意义上来说是这样:如果他能以某种方式获得他妻子的精确复制品并再次进行猜词游戏,他就只需要提供这份精简后的文本。这些字母本身将为他的复制品妻子提供恰到好处的提示,使其能够精确重现原文。
当然,在实践中,一个人两次猜测的方式未必相同。虽然这在定性上传达了可预测性允许压缩的理念,但这还并非对信息的测量。稍后在1950年的论文《印刷英语的预测与熵》中,香农更新了实验设计,以更稳健地评估这一棘手问题:英语的平均信息量。
这次他采访了更多人,不再仅仅记录每次猜测是对是错,而是记录了人类猜词者需要多少次尝试才能得出正确的下一个字母。随后,他有一套完整的方法将所需猜测次数与隐含概率联系起来,即人脑赋予真正下一个字母的概率。
那些细节有些繁琐,但我想要提出的更广泛观点是:在分析语言时,他不仅仅是在做纯粹的数据分析(翻阅书籍)。他试图探究语言的潜在模型——即受访者的思维。这些他能与之交流的“大脑”被有效地视为黑盒,它们拥有复杂却难以言喻的语言理解能力,并能基于上下文预测字符。
如今在2020年代,我们已从仅仅审讯处理语言的黑盒发展到设计它们。你和我之所以在此重访信息论的根源以及研究语言可压缩性的本质,是因为现代机器学习的数学原理大量利用了该领域产生的公式。
除了信息本身的定义外,还有三个关键表达式我希望你能感到自己可以重新发现它们。这不仅因为重述能使记忆更深刻,而且看到它们如何从对压缩的研究中自然涌现,能为你评估那种发人深省的“压缩与智能”之间的相互作用提供更坚实的基础。
你已经具备了重新发明其中第一个表达式——熵(Entropy)所需的一切条件。想象你拥有任何可以被视为符号序列的信号,无论是四个……
机器人指令、英语语言,或者你脑海中浮现的任何其他事物。熵询问的是每个符号的平均信息量,然后基于我们讨论过的一切内容:完美压缩看起来就像随机噪声;在这种情况下,用于消息的比特数与该消息的信息含量相同。这再次被很好地分解为所有符号信息量的总和。衡量每个符号平均信息量这个问题,基本上是在询问压缩的极限。它会给你一个给定信号可以被压缩的效率下限。你和我已经在一种情况下计算过这个,当我们取加权和以找到机器人案例中完美编码的平均每条指令比特数时。基本上,因为该编码是完美的,每个符号的码字长度正好等于其信息含量。因此,实际上,我们正在计算平均每个符号的信息量。
为了推广这一点,以下是其表现形式。对于任何给定的概率分布(描述你的消息由哪些符号组成),每个符号的平均信息量看起来像是将 p 乘以负对数(以2为底)的 p,并对该分布中的每个概率 p 求和。花点时间注意我们如何可视化这个表达式。在整个视频中,我们要用堆叠的水平条来描绘概率分布,其中每个条的宽度等于其概率,因此它们加起来为 1。现在,在每个条之上,我放置了一个矩形,其高度锁定为对应的信息值,即该概率的负以 2 为底的对数。因此,顶部的加权和(每个符号的平均信息量)可以被视为所有这些矩形的总面积。
这还不是完全通用的。它仅描述了每个新符号都遵循某种相同分布的情况下的压缩极限。这在机器人案例中是成立的,但在英语等语言中则不然。尽管如此,它足够重要,值得拥有一个名字。关于约翰·冯·诺依曼据说告诉香农应该将这个表达式称为“熵”,有一个有趣的故事。因为一方面,它类似于统计力学中用于熵概念的现有表达式;另一方面,“没人真正知道熵到底是什么,所以在争论中,你永远占据优势。”我查了一下,这可能是虚构的,但似乎有一定的事实依据。
无论真实故事如何,香农确实称这个量为熵,并用字母 h 表示。花点时间玩弄一下这个图形以建立一点直觉是很有趣的。概率分布越均匀,总熵越高;而如果我们将事物挤压得非常不均匀(也许有一个事件主导了概率空间),这将具有非常低的熵,因为那个压倒性可能的事件携带的信息量相应地很少。此外,如果你将概率空间划分得更细(意味着分布在更多的总可能符号上),每个符号的信息量就更多,因此总熵更高。
再次强调,把一切都搅动一下是很有趣的:非常偏斜的分布给出较低的总熵,而更均匀的分布则给我们更高的熵。这里模糊的定性直觉是:熵衡量的是分布中的不确定性程度;但更精确的理解(证明为什么它值得以比特为单位给出)是:它描述了遵循此分布的消息所需的每个符号的最小比特数。这句话以及我们刚才涵盖的所有内容,基本上就是香农 1948 年开启信息论的论文中的核心定理——无噪声编码定理的内容。它指出,没有任何编码能比这个极限更高效;而且更强有力地是,他表明总是可以任意接近这个极限。
正如我所说的,这个表达式仅适用于每个符号都遵循相同分布的情况,但香农当然对更通用的场景感兴趣,即每个新符号的概率不一定遵循相同的分布。特别是,他花了很多时间思考自然语言的可压缩性。这需要更通用的熵概念,即随机过程的“熵率”。但基本问题是相同的:每个符号的平均信息量是多少?只不过在这种情况下,我们现在是对所有可能的消息进行平均。这几乎从来不是一个你可以用像我们刚才玩弄过的那种清晰视觉方式进行的干净计算。毕竟,什么公式描述了语言的概率分布?
因此,如果你听到提及语言的熵,这远远超出了任何精确计算所能给出的范围,这就是为什么香农转向基于观察的估计。同样,他的方法论不仅仅是数据分析。它不是你可以对文本语料库执行的一些函数。为了获得令人满意的压缩性估计,他发现自己不可避免地需要探测智能的语言模型。当他的受访者至少有 100 个前导字母的上下文时,他估计英语的熵约为每个字符一比特。想到这一点,这是一个相当惊人的数字,因为它表明英语可以被压缩到仅为每个字符提供一个“是”或“否”的答案。
听起来很疯狂,但在第三部分中,我将向你展示我提到的算法:如果你允许使用高质量的模型进行编码和解码,你可以在实践中惊人地接近这个极限。在此之前,了解熵的一种变体——交叉熵(cross-entropy),以及它如何以及在为什么被用于训练大型语言模型,会有所帮助。如果你想学习这些内容,以及一些有趣的相关想法(例如如何将大模型蒸馏为小模型,以及为什么 GZIP 能够恢复不同语言之间的结构),请加入我的第二部分。
常规观众知道,我今年的新实验是举办一个虚拟招聘会,页面位于 3b1b.co/talent,让这一观众群体可以探索对齐的职业机会。有意义的更新是现在内容的数量大大增加,主要以我和相关团队之间的特色访谈形式呈现。这是我的思考:我觉得当你评估潜在工作时……
仅凭在网上随意浏览,几乎不可能真正了解在一家公司工作的真实感受。如果有机会与几位团队成员共进午餐,你将获得数量级更多的信息。我希望通过这种方式让你间接体验那种感觉。因此,如果你好奇我所说的“这些团队都充满思考力和好奇心”具体意味着什么,不妨花一点时间去探索一下。我真心相信你会喜欢那里的氛围。