AI基本概念
与AI相关的一些基本概念梳理。
注意力与自注意力机制
简单来说,注意力机制的核心就是“权重分配”。你可以理解为,模型在处理信息时,会像人一样,把“注意力”集中在当前任务最相关的部分,并赋予这些部分更高的“权重”。它的重要性不言而喻,因为近年来最前沿的AI模型,如Transformer、BERT、GPT等,都是在其基础上构建和发展起来的。
那么,注意力机制是如何工作的呢?
以机器翻译为例,比如要翻译一句话中“games”这个词。如果孤立地看,“games”是“游戏”。但如果上下文中提到了“北京”和“2022冬季”,注意力机制就能帮助模型理解,这里的“games”更应该被翻译成与“冬奥会”相关的“比赛”。它会动态地判断哪些上下文信息对当前翻译最重要。
在注意力机制出现之前,传统的模型(如RNN)在处理序列信息时,往往试图将所有输入信息压缩成一个固定长度的“概要”或“编码”。这种做法,好比“眉毛胡子一把抓”,当输入信息很长时,很容易丢失关键细节,从而影响最终效果的精度。
注意力机制的引入,打破了这种限制。它允许模型在生成输出的每一步,都能“回头看”原始输入的所有部分,并为每个部分计算一个“注意力分数”或“权重”。这样,模型就能动态地聚焦于当前最相关的信息片段,而不是依赖一个可能信息不全的固定概要。
而自注意力机制 (Self-Attention) 则更进一步。它不仅在输出时关注输入,更让输入序列中的每一个元素都能“审视”序列中的其他所有元素,从而理解输入信息内部的依赖关系和上下文结构。比如在理解一句话时,每个词都会关注句中其他词,判断彼此的关联强度。这种机制摆脱了传统RNN必须按顺序处理的束缚,使得大规模并行计算成为可能,极大地提升了模型的训练速度和捕捉长距离依赖的能力。
总结一下,注意力机制的精髓在于:
- 动态聚焦:根据当前任务,智能地将注意力集中在输入信息中最相关的部分。
- 权重分配:通过赋予不同信息片段不同的权重,来体现其重要程度。
- 上下文理解:极大地增强了模型对复杂上下文和长距离依赖关系的理解能力。
它的应用带来了显著的优势:往往能用更少的参数,实现更快的训练速度,并达到更好的性能。如今,无论是自然语言处理、图像识别,还是搜索推荐系统,只要任务涉及到从大量信息中筛选和聚焦关键内容,注意力机制都能发挥其强大作用,让AI模型表现得更加“智能”和高效。
注意力机制的启发
置身于信息爆炸的时代,高速的互联网、层出不穷的手机应用、引人入胜的游戏和应接不暇的短视频,正无时无刻不在分散着我们的精力。我们不难发现,要想长时间专注于一件事,似乎变得越来越具挑战性。
这不禁让我们思考:人工智能领域大放异彩的“注意力机制”,对我们个人生活与学习有何深刻启发?
AI的注意力机制之所以强大,核心在于它能从海量、驳杂的数据中精准筛选,动态地聚焦于对当前任务最关键的信息,赋予其更高的“权重”,从而高效地解决问题、提升认知与决策的质量。它不是被动接收,而是主动选择和聚焦。
这与我们个人在信息时代的处境何其相似!如果我们也能有意识地培养和运用自己内在的“注意力机制”——主动选择信息来源,为真正重要的目标和任务赋予更高的“精神权重”,学会屏蔽无关干扰,将有限的精力投向深度思考与实践——那么,我们就能更有效地学习,更深刻地理解世界,更有力地达成目标。
古人云:“锲而舍之,朽木不折;锲而不舍,金石可镂。” 这份“锲而不舍”的精神,正是对“聚焦”力量的极致推崇。它告诉我们,持续的、专注的投入,是克服困难、成就事业的关键。
因此,在当今这个呼唤“专注力”的时代,有意识地管理和引导自身的注意力,就如同为我们的大脑装备了一个高效的“个人版注意力机制”。 这种能力,不仅仅是一种技巧,更是一种宝贵的天赋和可以后天习得的核心竞争力。如同AI凭借其精妙的注意力机制实现智能的飞跃,我们若能有意识地驾驭自身的专注力,亦能在学习、工作与个人成长中达到新的高度,充分释放潜能,创造更大的价值。
Transformer与CNN、RNN
Transformer、CNN(卷积神经网络)和 RNN(循环神经网络)这三位是在人工智能领域的大明星。它们之间既有联系,也有各自的看家本领,至于谁能取代谁,这事儿得细说。
简单来说,它们的关系和特点是这样的:
CNN (卷积神经网络):图像世界的“细节捕捉大师”
- 看家本领: CNN 的核心是卷积核,这玩意儿特别擅长捕捉图像里的局部特征,比如边缘、角点、纹理。它就像一个拿着放大镜的侦探,一层一层地扫描,从细节到整体,最后认出图片里是啥。
- 主要应用: 图像识别、目标检测、图像分割等计算机视觉领域是它的传统强项。
RNN (循环神经网络):序列数据的“记忆能手”
- 看家本领: RNN 的特点是“循环”,它能记住前边儿的信息,并把这些信息用到后边的分析中。特别适合处理有时间顺序或者逻辑顺序的数据,比如一句话里的词、一段音乐里的音符、股票价格的走势。
- 主要应用: 自然语言处理(比如文本生成、机器翻译的早期模型)、语音识别、时间序列预测等。
Transformer:“全局视野的注意力之王”
- 看家本领: Transformer 的核心是“自注意力机制”(Self-Attention)。这个机制非常厉害,它能同时关注输入数据(比如一句话里的所有词,或者一张图片的所有区域)的各个部分,并判断哪些部分对当前任务最重要,给它们更高的“注意力权重”。它不像 RNN 那样需要一步一步地处理序列,而是可以并行处理,效率高,而且能更好地捕捉长距离依赖关系(比如一篇文章开头和结尾的呼应)。
- 主要应用: 最初在自然语言处理领域掀起革命,比如大名鼎鼎的 GPT 就是基于 Transformer。现在也越来越多地应用到计算机视觉(Vision Transformer, ViT)、语音处理,甚至蛋白质结构预测等领域。
它们之间有啥关系?
- 设计理念的演进: 可以说,Transformer 的出现一定程度上是为了解决 CNN 和 RNN 在某些方面的局限性。比如 RNN 处理长序列时容易“遗忘”早期信息,并行计算能力也差;CNN 在捕捉全局关系和长距离依赖方面不如 Transformer 直接。
- 相互借鉴与融合: 实践中,这三者并不是完全孤立的。有时候,研究者会把它们结合起来,取长补短。比如,在一些复杂的视觉任务中,可能会先用 CNN 提取底层的局部特征,然后再用 Transformer 来理解这些特征之间的全局关系。也有工作尝试将 Transformer 的注意力机制引入到 CNN 或 RNN 的结构中。
Transformer 能否取代 CNN 和 RNN?
这是一个大家都很关心的问题,目前来看:
对于 RNN:在很多自然语言处理(NLP)任务上,Transformer 已经大面积取代了 RNN。 因为 Transformer 在处理长序列、捕捉长距离依赖和并行计算方面的优势太明显了。虽然 RNN 仍然有其用武之地(比如对计算资源要求极低的场景或某些特定的小型任务),但在追求更高性能的 NLP 应用中,Transformer 已经成为主流。
对于 CNN:情况更为复杂,更像是“挑战者”而非“完全取代者”。
- Transformer 的优势: Vision Transformer (ViT) 的出现证明了 Transformer 在图像领域也能取得甚至超越顶级 CNN 的性能,尤其是在大规模数据集上训练时。它能更好地理解图像的全局上下文信息。
- CNN 的优势: CNN 拥有“归纳偏置”(inductive bias)的特性,比如局部性和平移不变性,这使得它在数据量相对较少时也能学得不错,而且计算效率往往更高。对于很多视觉任务,特别是那些局部特征非常关键的任务,CNN 依然是非常强大和高效的选择。
- 目前趋势:
- 并存与融合: 很多研究表明,CNN 和 Transformer 各有千秋,未来可能会更多地看到两者的结合,或者根据具体任务和数据特点来选择更合适的模型。例如,一些模型用 CNN 处理早期视觉信息,用 Transformer 处理高级语义信息。
- Transformer 持续渗透: Transformer 在视觉领域的探索非常活跃,不断有新的改进模型出现,试图克服其数据需求量大、计算复杂度高等问题,并更好地融合 CNN 的一些优点。
总结一下(还是用阿城老师的口吻):
这 Transformer 啊,就像江湖里新出的一位顶尖高手,内功(自注意力机制)深厚,视野开阔,一出场就在文字江湖(NLP)里打败了不少老前辈(RNN)。现在它又跑到图像山头(CV)去挑战地头蛇(CNN)。
要说完全取代,还为时过早。那 CNN 在自家地盘经营多年,有它独到的眼力价(局部特征提取),使着顺手还省柴火(计算效率)。RNN 这位老先生虽然腿脚慢了点,但在一些念旧(特定序列)或家底薄(资源有限)的场合,也还有人请。
所以啊,现在这局面更像是:Transformer 这位高手锐气正盛,大有席卷之势,尤其是在需要高瞻远瞩、处理复杂关系的地方。但 CNN 和 RNN 也各有各的绝活和地盘。有时候,大家还会联手,你出眼力,我出脑力,一起把事儿办得更漂亮。江湖嘛,总是在变化,新招旧式,各显神通,最终还是看谁能在具体的场子(任务)里拿出真本事。 这三位“好汉”——Transformer、CNN、RNN,在人工智能的江湖里各有各的绝活,关系嘛,既有传承,也有点“后浪推前浪”的意思。
咱先说说老前辈:
- RNN(循环神经网络): 这位擅长处理“一串儿”的事,比如说话、写文章。他记性好,能记住前头说的啥,然后接着往下唠。但有个毛病,话太长了,他就容易把开头给忘了,抓不住远处的重点。而且他是个慢性子,得一步一步来,快不了。
- CNN(卷积神经网络): 这位是看图的行家。他眼神好,能一眼瞅出图里的门道,比如哪里是边,哪里是角,哪块是啥颜色。他是一层一层地看,从细枝末节看到整体模样,抓局部特征特别准。但在看特别大的图,或者需要把老远的两块地方联系起来看的时候,就有点费劲。
然后是新秀 Transformer:
- Transformer: 这位可厉害了,他是靠着一个叫“自注意力”(Self-Attention)的法宝行走江湖。这法宝让他能一下子把一整段话或一整张图全看在眼里,而且立马就能知道哪些部分最关键,哪些部分跟哪些部分关系最铁,不管它们离得多远。所以他处理长句子、抓全局信息特别在行,而且脑子转得快,能好几个事儿一块儿想(并行处理)。
它们有啥关系?
Transformer可以说是在RNN的肩膀上发展起来的,尤其是在处理语言文字方面。RNN碰到的记不住长茬儿、看得慢的问题,Transformer用“自注意力”这招给解决了,相当于来了个大升级。
而CNN和Transformer呢,本来各管一摊,一个看图,一个处理文字。但后来大伙儿发现,Transformer那套“全局眼光”用来看图也挺好使,于是就有了专门看图的Transformer(比如Vision Transformer)。有时候,大伙儿还让他俩合作,CNN先粗略地看一遍图,把局部的小特点找出来,再让Transformer从全局把这些小特点给串起来理解,效果也挺不错。
Transformer能取代它们吗?
这个问题,得看情况说:
- 对于RNN: 在处理语言文字这类“一串儿”信息的时候,Transformer现在确实是挑大梁的,大有取代之势。因为他看得远、记得牢、学得快。RNN虽然还有些用武之地,但风头远不如Transformer了。
- 对于CNN: 在看图这事儿上,CNN这位老将还是很有实力的,尤其是在数据量没那么海量,或者特别需要关注局部细节的时候,他那套“精耕细作”的本事还是很好用,也更省力气(计算资源)。Transformer看图虽然效果惊人,但往往需要先用特别多的图“喂”饱了才行,有点像“大力出奇迹”。所以,现在更多的是两者并存,甚至互相学习、结合着用。说完全取代,为时尚早。
总的来说,就像村里的能人,各有各的看家本领:
- RNN像是个能说会道的说书先生,但故事太长容易忘词。
- CNN像是个眼神锐利的画匠,精于局部描摹。
- Transformer则像个眼观六路耳听八方的智者,能一下子抓住事情的要害,而且学啥都快。
江湖在变,武功也在进化。Transformer现在风头正劲,解决了很多老问题,但他也不是万能丹。以后怎么样,还需要走一步看一步。
大语言模型的涌现现象
学习资料:
总结
大语言模型的涌现(Emergence)是一种现象,指大型语言模型在达到一定规模后突然展现出来的能力,不是一种理论而是对大模型实验现象的总结。这种能力在小模型中不可见,但在大模型中突然出现,且有时甚至能超越人类水平。这种现象不是简单的参数量的增加带来的,而是某种质变的结果。
摘要
主要介绍了大语言模型的涌现现象,即大型语言模型在达到一定复杂度后突然展现出来的新能力。这种现象不是所有任务都会出现,而且这种能力的出现是不可预测的。视频讲解了涌现的概念、特征、以及如何在实际中应用这一概念。例如,在大模型中,语言模型可能会突然提升在特定任务上的表现,而在小模型中则不会。网页还讨论了涌现能力的三个解释角度:一是大型模型的能力是由多个子任务组成的,而这些子任务在小模型中的表现并不是成比例的;二是语言模型 loss 的降低并不会均匀地作用于所有子任务上,有些任务的提升可能会更加显著,从而导致涌现;三是现有的评测手段可能无法准确反映模型的能力,因为它们可能会忽略模型在某些特定任务上的显著提升。最后,视频还讨论了如何利用涌现现象来指导模型的训练和微调,以及如何通过提高数据质量来引导模型的涌现能力。
观点
- 涌现现象指大型语言模型在参数规模达到临界点后,突然展现出的新能力,这些能力在小模型中完全不可见且无法预测
- 涌现能力的核心特征包括:参数阈值依赖性、任务选择性(仅部分任务会出现)和不可预测性(无法从小模型表现推断)
- 现有三种主流解释视角:
- 能力构成论:大模型能力由多个子任务组成,小模型各子任务表现不成比例
- 损失分布论:模型loss降低对不同子任务影响不均,某些任务提升更显著
- 评估局限论:现有评测方法可能无法全面捕捉模型能力跃升
- 实践启示:
- 不应盲目扩大参数量,应注重数据质量和后训练方法
- 需接受大模型与小模型行为规律的质变差异
- 科研方法需调整:小模型有效的改进可能在大模型失效
难以完美解释的原因
尽管有上述几种解释视角,但目前学术界对大模型涌现现象的根本原因尚未形成统一的定论。主要原因包括:
- 黑箱问题:深度学习模型本身具有“黑箱”特性,其内部运作机制复杂且难以完全理解。我们很难精确追踪是哪些参数或结构的变化导致了特定能力的涌现。
- 规模效应的复杂性:参数量的增加并非线性地带来能力提升,而是可能引发复杂的相互作用和相变。理解这种非线性的规模效应本身就是一个巨大的挑战。
- 评估指标的局限性:现有的评测基准和指标可能无法完全捕捉或衡量模型涌现出的所有新能力,特别是那些难以量化的、更接近人类认知的能力(如推理、创造力)。
- 数据与能力的耦合:模型的能力与其训练数据密切相关。很难完全剥离数据质量、数据分布对涌现现象的影响,从而孤立地研究模型规模的作用。
- “涌现”定义的主观性:对于何种程度的性能提升才算“涌现”,可能存在一定的主观判断。不同研究者可能会采用不同的标准。
因此,对涌现现象的理解仍在不断深入中,需要跨学科的努力,结合实验观察、理论分析和更先进的评估方法。
普遍存在的涌现现象
用大白话聊聊“涌现现象”(Emergence)。
想象一下,“涌现”就像是魔术一样:一群简单的、只会干自己那点小事的东西聚在一起,互相之间按简单的规矩互动,结果整体上突然冒出来一些全新的、复杂的、甚至让你意想不到的行为或特性。这些新特性,你在单个小东西身上是绝对看不到的,也不是谁事先设计好的。
简单说,就是:简单的个体 + 简单的互动规则 → 复杂、意外的整体行为。 整体大于部分之和,而且这个“大于”的部分是自己“冒”出来的。
关键点:
- 底层简单: 每个个体本身的行为规则很简单。
- 大量个体: 通常需要很多个体参与。
- 互动: 个体之间会相互影响、相互作用。
- 宏观复杂: 整体表现出复杂的、有序的、或者全新的模式或能力。
- 不可预测性/非设计性: 这种整体行为往往不是事先设计或能轻易从个体规则直接推断出来的。
举几个例子就明白了:
蚂蚁筑巢/找食物:
- 简单的个体/规则: 单只蚂蚁其实挺“笨”的,它可能只会跟着信息素(一种化学气味)走,或者随机乱逛,碰到食物就搬起来往回走,并留下一路信息素。规则非常简单。
- 涌现的整体行为: 但是成千上万只蚂蚁聚在一起,遵循这些简单规则互动,整个蚁群就能表现出惊人的“智慧”!它们能找到最短路径去食物源,能建造结构复杂的蚁巢,能有效分工合作。没有哪只蚂蚁是“总设计师”或者“指挥官”,这种高效的集体行为是自己涌现出来的。
鸟群/鱼群同步飞行/游动:
- 简单的个体/规则: 每只鸟(或鱼)可能只遵循三条非常简单的规则:1. 别撞上旁边的同伴(分离);2. 尽量跟上旁边同伴的平均方向(队列);3. 尽量靠近旁边同伴的平均位置(聚集)。
- 涌现的整体行为: 当一大群鸟(或鱼)都这么做时,整个群体就能做出非常壮观、协调一致的飞行动作,像一个流动的整体,能快速转向、躲避天敌。看起来好像有谁在指挥,但其实没有,这种同步性是从个体简单的规则中涌现出来的。
交通堵塞(幽灵堵车):
- 简单的个体/规则: 每个司机都想保持一定速度,同时和前车保持安全距离,当前车刹车时自己也刹车。规则很基本。
- 涌现的整体行为: 在没有事故、没有瓶颈路段的高速公路上,有时候会莫名其妙地出现堵车,而且这个堵车区域还会像波浪一样向后移动。这往往是因为某个司机稍微点了一下刹车,导致后面一连串的司机反应过度,刹车幅度越来越大,形成了一个移动的拥堵区域。这种“幽灵堵车”现象,不是任何一个司机故意造成的,是众多司机简单互动下涌现出来的系统行为。
生命本身/意识(更宏大、更神秘的例子):
- 简单的个体/规则: 构成我们身体的细胞,甚至细胞里的分子,都遵循着基本的物理和化学定律进行互动。单个神经元也只是按照简单的电化学信号规则进行放电。
- 涌现的整体行为: 这些“没有生命”或“没有意识”的基本单元,通过极其复杂的相互作用,最终涌现出了生命现象,甚至可能是人类的意识、思想和情感。这是最令人惊叹的涌现现象之一,尽管我们还远未完全理解其机制。
总结一下:
涌现现象告诉我们,不要小看简单的东西组合起来的力量。很多时候,复杂的世界并不是由同样复杂的零件构成的,而是由大量简单的部分,通过相互作用,“自下而上”地自发组织形成了复杂的结构和行为。理解涌现对于我们认识自然界(生态系统、大脑)、社会系统(城市发展、市场行为)甚至人工智能都非常重要。
神经元与神经网络
那么,神经元究竟是怎样对输入信号进行合并加工的呢?
假设一个神经元从其他多个神经元接收了输入信号,这时如果所接收的信号之和比较小,没有超过这个神经元固有的边界值(称为阈值),这个神经元的细胞体就会忽略接收到的信号,不做任何反应。不过,如果输入信号之和超过神经元固有的边界值(也就是阈值),细胞体就会做出反应,向与轴突连接的其他神经元传递信号,这称为点火。
阈值的理解
在生物学上是表现神经元特性的值。从直观上讲,表示神经元的感受能力,如果阈值较大,则神经元不容易兴奋(感觉迟钝),而如果值较小,则神经元容易兴奋(敏感)。
点火时神经元的输出信号是什么样的呢?有趣的是,信号的大小是固定的。即便从邻近的神经元接收到很大的刺激,或者轴突连接着其他多个神经元,这个神经元也只输出固定大小的信号。点火的输出信号可简化理解为由 0 或 1 表示的数字信息。
神经元与深度学习:
VS:
激活对比:
经过激活函数以后,输出的是神经元的兴奋度:
将神经元得点火一般化为深度学习的神经单元的激活函数式,要确认这样做是否有效,就要看实际做出的模型能否很好地解释现实的数据。实践才是检验的标准。
最终抽象:
神经元构成网络,连接方法多种多样的,最为基础的是阶层型神经网络以及由其发展而来的卷积神经网络。
构成这个网络的各层称为输入层、隐藏层、输出层,其中隐藏层也被称为中间层。各层分别执行特定的信号处理操作。
- 输入层负责读取给予神经网络的信息。属于这个层的神经单元没有输入箭头,它们是简单的神经单元,只是将从数据得到的值原样输出。输入层的神经单元的输入与输出是相同的。一定要引入激活函数
a(z)
的话,可以用恒等函数a(z) = z
来充当。 - 隐藏层的神经单元执行加权和偏置、激活处理。在神经网络中,这是实际处理信息的部分。隐藏层肩负着特征提取(feature extraction)的重要职责。支撑整个神经网络工作的就是这个隐藏层。
- 输出层与隐藏层一样执行加权和偏置、激活处理,并显示神经网络计算出的结果,也就是整个神经网络的输出。
神经网络的学习
为了确定神经网络的权重和偏置,事先给予数据,这些数据称为学习数据(训练数据)。 根据给定的学习数据确定权重和偏置,称为学习。
神经网络是怎样学习的呢?思路极其简单:计算神经网络得出的预测值与正解的误差,确定使得误差总和达到最小的权重和偏置。这在数学上称为模型的最优化。
关于预测值与正解的误差总和,有各种各样的定义。最古典的定义:针对全部学习数据,计算预测值与正解的误差的平方(称为平方误差),然后再相加。这个误差的总和称为代价函数(cost function)。利用平方误差确定参数的方法在数学上称为最小二乘法, 它在统计学中是回归分析的常规手段。
激活函数与函数逼近器
阅读与学习资料:
- 5分钟理解激活函数让神经网络能逼近任何函数
- 5分钟理解激活函数让神经网络能逼近任何函数 - 知乎
- 激活函数 - 知乎
- Why Neural Networks can learn (almost) anything - Emergent Garden
- 为何神经网络几乎能学会任何东西?-Emergent Garden
神经网络能逼近任何函数的原理很简单,分段线性函数能逼近任何函数,激活函数让神经网络具备了“分段函数”的能力,所以神经网络能逼近任何函数。
没有激活函数,神经网络是线性函数。如果不用激活函数,神经网络每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合(线性函数)。
INFO
基础数学证明,证明任何线性函数的线性组合仍然是线性的
总结 —— “分段”是神经网络能逼近任何函数的关键,其实,你只需要知道2点:
- 任何函数,可以用“分段”线性函数来逼近;
- 激活函数,让线性的神经网络具备了“分段”表达的能力。
激活函数的“截断”能力为“分段”能力提供来源:
激活函数的名字中的“激活”关注了它“打开”的能力,但有开意味着有关,即具有“截断”能力。当然了,最终能够被输出的,是“打开”的部分,所以叫做激活函数。
截断能力最强的是阶跃函数和ReLu函数,其他激活函数可以看成他们的“软化”(折线处变曲线、或变缓)。各种激活函数层数不穷,各有优缺点,看得人头昏眼花,明白了他的本质作用,就不再疑惑。
INFO
更进阶知识:激活函数软化的另一作用:激活函数软化,让分段直线变分段曲线,可能会更好的拟合函数。
TIP
神经网络变宽变深相当于让分段函数能分的“段”的数量更多,大家都知道,分段直线拟合曲线时,每段直线越短,数量越多,拟合程度就越高。这是神经网络变宽变深,模型的精度通常更高的原因。
神经网络能逼近任何函数,也解释了为什么它几乎能学习任何东西,可以理解为神经网络的本质是函数逼近器,可以模拟任何函数,而函数是对世界的建模,所以它几乎能学习任何东西。
TIP
函数是我们用来理解、描述和建模世界上可量化、有规律可循的方面的极其强大和基础的工具/语言。它帮助我们抓住事物之间的联系,进行推理和预测。从这个角度看,说函数是对世界的一种(部分的、基于我们观察和理解的)建模方式是非常恰当的。
神经网络已被证明具有图灵完备性,就像普通计算机一样,能解决所有类型的问题,无论任何语言编写的程序和算法,都能在神经网络上运行,这正式深度学习的核心价值。
图灵完备性意味着网络不仅能逼近函数,还能执行任何可以通过算法完成的计算任务(模拟任何图灵机)。为什么说是几乎能学习任何东西,理论上可以学习任何东西,但现实中的神经网络规模存在物理限制,不可能拥有无限多的神经元,也就无法完美模拟所有事物。
TIP
某些类型的神经网络,特别是在特定假设下,已被证明具有图灵完备性 (Turing Completeness)。
证明这一点的关键人物是 Hava Siegelmann 和 Eduardo D. Sontag。他们在 20 世纪 90 年代初发表了一系列开创性的工作。
关键论文:
Siegelmann, H. T., & Sontag, E. D. (1991). Turing computability with neural nets. Applied Mathematics Letters, 4(6), 77-80.
- 这篇是较早提出并证明这一点的论文之一。
Siegelmann, H. T., & Sontag, E. D. (1995). On the computational power of neural nets. Journal of Computer and System Sciences, 50(1), 132-150.
- 这篇期刊论文通常被认为是更全面、更正式的阐述和证明。你可以通过学术搜索引擎(如 Google Scholar, Semantic Scholar 等)搜索标题或作者来查找这篇论文,它通常可以通过大学图书馆或学术数据库访问。
核心观点和条件:
- 网络类型: 他们的证明主要集中在递归神经网络 (Recurrent Neural Networks, RNNs) 上。RNN 具有内部状态(记忆)和反馈连接,这使得它们能够处理序列信息并进行更复杂的计算,这对于模拟图灵机的无限纸带至关重要。
- 权重精度: 证明的关键假设之一是网络的权重(连接强度)是精确的有理数 (rational numbers),或者在某些模型中甚至是模拟/实数值(具有无限精度)。这一点非常重要,因为现实世界中的数字计算机使用有限精度的浮点数,所以这种理论上的图灵完备性不一定能完全在标准数字硬件上实现。
- 激活函数: 他们使用的激活函数通常是分段线性的,例如饱和线性函数 (saturated linear function),形如
f(x) = 0 if x <= 0, x if 0 < x < 1, 1 if x >= 1
。这种函数足以提供必要的计算能力。 - 资源: 图灵完备性是一个理论概念,它假设有无限的计算资源(如时间和内存/神经元数量)。
与通用逼近定理的区别:
需要注意的是,神经网络的图灵完备性不同于通用逼近定理 (Universal Approximation Theorem)。通用逼近定理表明,具有足够多神经元的前馈神经网络可以以任意精度逼近任何连续函数,但这关注的是函数逼近的能力,而不是计算通用性(即可计算性理论中的图灵完备性)。图灵完备性意味着网络不仅能逼近函数,还能执行任何可以通过算法完成的计算任务(模拟任何图灵机)。
总结:
是的,以 Siegelmann 和 Sontag 的工作为代表,理论上已经证明了带有有理数权重(或模拟状态)的递归神经网络具有图灵完备性,意味着它们在计算能力上等同于图灵机和现代计算机。但需要注意这是在理想化的数学假设下得出的结论。
神经网络的层数与神经元数量
结合上面提到的激活函数与函数逼近器的简答理解:
神经网络变宽变深相当于让分段函数能分的“段”的数量更多,大家都知道,分段直线拟合曲线时,每段直线越短,数量越多,拟合程度就越高。这是神经网络变宽变深,模型的精度通常更高的原因。
其他理论与工程实践的解释:
神经网络之所以采用多层结构,并且在每一层设置一定数量的神经元,是理论指导与工程实践长期发展和优化的结果。这并非单一因素决定,而是为了提升模型的表达能力、学习复杂模式以及在实际应用中取得良好性能的综合考量。
为什么要分那么多层?—— 逐层抽象,提取深层特征
理论指导:层级特征提取与表达能力
- 通用近似定理 (Universal Approximation Theorem): 理论上,一个包含足够多神经元的单隐藏层前馈神经网络就能够以任意精度逼近任意连续函数。然而,这并没有说明需要多少神经元,也没有指出单层网络是最高效的结构。
- 深度学习的核心思想——层次化特征学习: 深度网络(多层网络)的核心优势在于其能够学习数据特征的层次化表示。每一层神经元可以学习到前一层输出特征的更复杂、更抽象的组合。例如,在图像识别中,浅层可能学习边缘、角点等基本特征;中间层可能学习到物体的局部形状、纹理;深层则能学习到更完整的物体概念。这种层次化的特征提取能力被认为是深度学习成功的关键因素之一。研究表明,对于某些类型的复杂函数,深度网络可以用比浅层网络指数级更少的参数来表示。
工程实践:效率与性能的追求
- 参数效率: 实践中发现,对于复杂问题,通过增加网络深度(层数)往往比仅仅增加单层神经元数量(宽度)能更有效地提升模型性能,并且可能需要更少的总参数量。这意味着深层网络在某些情况下学习效率更高。
- 模块化与梯度传播: 多层结构允许信息在网络中逐层处理和转换,这在一定程度上简化了复杂问题的学习过程。虽然深度网络也面临梯度消失或梯度爆炸等训练难题,但诸如残差连接(Residual Connections)、批量归一化(Batch Normalization)等技术的出现,极大地缓解了这些问题,使得训练非常深的网络成为可能。
- 解决非线性问题: 单层感知器只能解决线性可分问题。通过引入非线性激活函数并堆叠多个层,神经网络可以学习和表示高度非线性的复杂关系,这对于现实世界中的绝大多数任务至关重要。
为什么每一层要那么多神经元?—— 保证模型容量,捕捉多样信息
理论指导:模型容量与学习能力
- 模型容量(Model Capacity): 每一层神经元的数量(即层的宽度)直接影响模型的容量。容量指的是模型拟合复杂函数的能力。神经元数量越多,模型能够学习到的模式就越复杂。如果神经元太少,模型可能会欠拟合,无法充分学习数据中的规律。
- 特征维度: 在某些情况下,例如输入层和输出层,神经元的数量是由数据的特性直接决定的。输入层的神经元数量通常对应于输入数据的特征维度,而输出层的神经元数量则取决于任务的类别数量(分类任务)或输出值的维度(回归任务)。
工程实践:经验、试错与权衡
- 信息充分性与冗余: 拥有足够数量的神经元可以确保每一层能够捕捉到足够多样和充分的特征信息,为后续层提供高质量的输入。然而,神经元数量过多也可能导致过拟合(模型学习到训练数据中的噪声而非普适规律),并显著增加计算成本和训练时间。
- 启发式规则与经验: 对于隐藏层神经元的数量,并没有一个普适的精确计算公式。实践中,研究者和工程师常常依赖经验法则、领域知识以及大量的实验来确定合适的神经元数量。常见的做法包括:
- 借鉴已在相似任务上表现良好的成熟网络架构。
- 根据输入层和输出层的大小进行估算(例如,取两者之间的某个值,或输入大小的几倍/几分之一)。
- 从一个较小的网络开始,逐渐增加神经元数量,观察验证集上的性能变化(剪枝和增长策略的反向)。
- 采用自动化机器学习(AutoML)技术来搜索最佳的网络结构参数。
- 计算资源与效率: 神经元数量的增加直接导致模型参数量和计算量的增加,这对硬件资源(如GPU内存和计算能力)以及训练时间提出了更高的要求。因此,在设计网络时需要在模型性能和实际部署的可行性之间进行权衡。
总结:理论为基,实践为王
总而言之,神经网络的层数和每层神经元的数量是理论指导下的工程选择。理论(如通用近似定理、层次化特征学习思想)为我们提供了构建强大模型的基本框架和方向,指明了深度和宽度的重要性。然而,在面对具体问题时,最佳的层数和神经元数量往往无法通过纯理论推导得出。这更多地依赖于大量的工程实践、经验积累、实验验证以及对计算资源和任务需求的综合考量。
深度学习领域仍在不断发展,关于网络结构设计的理论理解也在逐步加深。但目前来看,设计高效的神经网络架构仍然是一门带有一定“艺术性”的工程学科,需要在理论的指引下,结合经验和实验进行探索和优化。
图灵机与图灵完备性
我们来用大白话解释一下“图灵完备性”(Turing Completeness)。
想象一下,世界上有各种各样的计算任务:简单的加减乘除,复杂的像天气预报、玩游戏、或者让机器人认出猫和狗。
图灵完备性就像是一个衡量标准,用来判断一个计算系统(比如一种编程语言、一个计算机、甚至像某些神经网络这样的理论模型)在理论上有多“能干”。
标准是什么呢?
这个标准就是看它能不能模拟一台叫做“图灵机”的理论机器。
什么是图灵机?
图灵机是计算机科学的鼻祖艾伦·图灵想象出来的一种极其简单的理论计算机。它有一条无限长的纸带(用来存储数据,就像内存),一个读写头(可以在纸带上移动、读取、写入符号),以及一套简单的规则(程序),告诉读写头在不同情况下该怎么做。
别看它简单,图灵证明了,任何可以用明确的、一步步的指令(也就是算法)来解决的问题,图灵机最终都能解决(只要给它足够的时间和足够长的纸带)。它代表了算法能解决的问题的极限。
所以,“图灵完备”的意思就是:
如果一个计算系统(比如Python语言)能够模拟一台图灵机的所有行为,换句话说,能用它来实现图灵机能做的所有计算,那么这个系统就被称为“图灵完备”的。
这说明了什么?
- 通用性: 一个图灵完备的系统是通用的。理论上,它能计算任何可计算的问题,它的计算能力和最强大的超级计算机(或者那台理论上的图灵机)是等价的。
- 潜力无限: 只要你有足够的时间和内存,一个图灵完备的系统就能运行任何你能想到的程序(只要那个程序描述的问题是能用算法解决的)。
举几个例子:
大多数编程语言: 像 Python, Java, C++, JavaScript 这些,都是图灵完备的。为什么?因为它们都有:
- 存储数据的方式(变量)。
- 执行基本操作的能力(加减乘除、比较大小)。
- 根据条件做不同事情的能力(
if...else...
语句)。 - 重复执行某些步骤的能力(
for
循环,while
循环)。 有了这些基本构件,你就能组合出任何复杂的算法,模拟图灵机。
你的电脑/手机: 硬件本身加上它的基本指令集,也是图灵完备的。
有点意外的例子:
- 《我的世界》(Minecraft) 里的红石电路: 玩家发现可以用红石搭出逻辑门,理论上可以构建出复杂的计算机,因此它也是图灵完备的(虽然极其不实用)。
- 某些递归神经网络: 正如我们之前讨论的,在特定条件下,它们也被证明是图灵完备的。
图灵完备不代表什么?
- 不代表快: 一个系统可以图灵完备,但运行起来可能慢得要死。
- 不代表好用: 有些极简的图灵完备语言(比如 Brainfuck)写起程序来极其痛苦。
- 不代表能解决所有问题: 有些问题是理论上就无法用算法解决的(比如著名的“停机问题”),图灵完备的系统也解决不了。它只能解决“可计算”的问题。
总结一下:
“图灵完备性”就是一个标签,贴在那些理论计算能力达到了通用计算机水平的系统上。你可以把它理解为:这个系统拥有了实现任何算法所需的最基本的“积木”,理论上“啥都能算”(只要是能算的)。
停机问题的解释
我们来通俗易懂地解释一下“停机问题”(The Halting Problem)。
想象一下,你写了一个电脑程序。有时候,程序运行一会儿就结束了,给出结果(我们说它“停机”了)。但有时候,程序可能因为写得有问题,或者进入了一个无限循环,就永远运行下去,永远不会自己停下来(我们说它“死循环”或“不停机”)。
停机问题问的是:
能不能写出一个通用的“检测”程序(我们叫它
HaltsChecker
),这个程序非常厉害,它可以做到:
- 接收任何一个你想检测的程序 P 的代码。
- 接收程序 P 将要运行的任何输入数据 I。
- 然后,
HaltsChecker
分析一下,就能准确地告诉你:“程序 P 在输入 I 的情况下,最终会停机” 还是 “程序 P 在输入 I 的情况下,会永远运行下去(不停机)”。- 最关键的是,这个
HaltsChecker
程序本身必须保证自己总是能结束运行,并且给出一个明确的“停机”或“不停机”的答案,它自己不能死循环。
听起来好像挺有用的,对吧?如果能有这么个程序,我们就能在运行一个复杂的程序之前,先用它检查一下,看看会不会死循环。
图灵的惊人发现:
计算机科学的先驱艾伦·图灵在1936年证明了:这样的通用 HaltsChecker
程序是不可能存在的!
为什么不可能呢?(一个简化的逻辑思路,类似图灵的证明方法——反证法)
假设存在: 我们先大胆假设,真的有人写出了这个完美的
HaltsChecker
程序。构造一个“捣乱”程序: 现在,我们利用这个假设存在的
HaltsChecker
来构造一个新的、专门捣乱的程序,叫Paradox
。Paradox
程序的工作方式:Paradox
程序也接收一个程序的代码作为输入(奇怪的是,它可以接收自己的代码作为输入)。- 它内部会调用我们假设存在的
HaltsChecker
,问一个问题:“喂,HaltsChecker
,请告诉我,如果我 (Paradox
) 把自己的代码作为输入来运行,我会停机吗?” - 然后
Paradox
程序根据HaltsChecker
的回答来“对着干”:- 如果
HaltsChecker
回答:“是的,你会停机。” 那么Paradox
程序就故意进入一个无限循环(永远运行下去)。 - 如果
HaltsChecker
回答:“不,你会永远运行下去。” 那么Paradox
程序就立刻停机。
- 如果
悖论出现: 现在,最关键的问题来了——如果我们运行
Paradox
程序,并且把Paradox
自己的代码作为输入给它,会发生什么?- 情况一:假设
Paradox
最终会停机。 那么根据Paradox
的设计,它在调用HaltsChecker
时,HaltsChecker
应该回答“是的,你会停机”。但一旦HaltsChecker
这么回答,Paradox
的设计就是故意进入无限循环。所以,“Paradox
会停机”导致了“Paradox
不会停机”。矛盾! - 情况二:假设
Paradox
会永远运行下去。 那么根据Paradox
的设计,它在调用HaltsChecker
时,HaltsChecker
应该回答“不,你会永远运行下去”。但一旦HaltsChecker
这么回答,Paradox
的设计就是立刻停机。所以,“Paradox
不会停机”导致了“Paradox
会停机”。又矛盾!
- 情况一:假设
结论: 无论假设
Paradox
停机还是不停机,都会导出逻辑上的矛盾。这说明我们最初的假设——“存在一个完美的、通用的HaltsChecker
程序”——是错误的。
因此,停机问题是不可判定的(Undecidable)。 不存在一个通用的算法(程序),能够对所有的程序及其输入,都能判断出该程序是否会停机。
这意味着什么?
- 它揭示了计算本身存在固有的局限性。有些看似简单的问题,计算机(或者说任何基于算法的系统)是无法普遍解决的。
- 这并不意味着我们永远无法判断某个特定程序是否会停机(比如一个简单的打印 "Hello World" 的程序显然会停机)。它只是说,不存在一个万能的、适用于所有情况的检测方法。
- 停机问题是计算理论中的一个基础性结果,对理解什么是可计算的、什么是不可计算的有重要意义。
回归 分类 聚类 有监督 无监督
机器学习就是让机器具备找一个函数的能力。如果要找的函数的输出是一个数值或者标量,这种机器学习任务称为回归。
分类任务是让机器做选择题。鉴别垃圾邮件就可以归类为分类问题。只有两个类别的问题称为二分类,有三个及以上的问题称为多分类,比如数字的识别就属于多分类问题。AlphaGo也是一个多分类(19x19的棋盘选项)问题。
如果机器不仅要做选择题或者输出一个数值,还要产生一个有结构的结果,比如一张图,一篇文章等,这种让机器产生有结构的结果的学习过程称为结构化学习。
聚类与分类相似,却又有些不同。它与分类的区别在于数据带不带标签。也有人把标签称为正确答案数据。 比如刚才的垃圾邮件鉴别问题,除了邮件内容以外,数据集中还包含了标记邮件是否为垃圾邮件的数据。聚类的示例:假设在有 100 名学生的学校进行摸底考试,然后根据考试成绩把 100 名学生分为几组,根据分组结果,我们能得出某组偏重理科、某组偏重文科这样有意义的结论。这个考试分数的数据里并没有与分类有关的标签,仅仅包含了编号和分数的数据而已。
使用有标签的数据进行的学习称为有监督学习,与之相反,使用没有标签的数据进行的学习称为无监督学习。回归和分类是有监督学习,而聚类是无监督学习。
机器学习用到的数学科目
机器学习广泛地应用了多个数学分支的知识。以下是机器学习中最核心和最常用的数学领域:
线性代数 (Linear Algebra):
- 核心作用: 线性代数是机器学习的基石之一,尤其是在处理高维数据时。
- 具体应用:
- 数据表示: 数据通常以向量或矩阵的形式表示。例如,一个样本可以是一个特征向量,整个数据集可以是一个样本矩阵。
- 模型表示: 许多机器学习模型(如线性回归、支持向量机、神经网络)的参数和计算都基于矩阵和向量运算。
- 降维: 主成分分析 (PCA) 等降维技术严重依赖于特征值和特征向量的概念。
- 推荐系统: 用户-物品矩阵的分解(如奇异值分解 SVD)是推荐算法的核心。
- 图像处理: 图像可以表示为像素矩阵,各种图像变换和滤波操作都涉及到矩阵运算。
概率论与数理统计 (Probability Theory and Statistics):
- 核心作用: 机器学习本质上是从数据中学习规律和不确定性,概率论和统计学为此提供了理论框架和方法。
- 具体应用:
- 模型构建: 许多机器学习模型本身就是概率模型,如朴素贝叶斯、高斯混合模型、隐马尔可夫模型等。
- 损失函数: 用于衡量模型预测与真实值之间差异的损失函数,其设计往往与概率分布(如最大似然估计)相关。
- 模型评估与选择: 交叉验证、假设检验、置信区间、贝叶斯方法等统计工具用于评估模型的性能并选择最佳模型。
- 特征工程: 理解特征的分布、相关性等统计特性有助于选择和构建有效的特征。
- 生成模型: 如生成对抗网络 (GANs) 和变分自编码器 (VAEs) 的目标是学习数据的潜在概率分布。
- 不确定性量化: 贝叶斯方法可以为模型的预测提供不确定性估计。
微积分 (Calculus - 特别是多元微积分):
- 核心作用: 微积分,尤其是多元微积分,是理解和优化机器学习模型参数的关键。
- 具体应用:
- 梯度下降: 绝大多数机器学习模型的训练都依赖于优化算法,其中最核心的就是梯度下降及其变种(如随机梯度下降、Adam)。计算梯度(即函数对参数的偏导数)是微积分的核心内容。
- 损失函数的最小化: 训练模型的过程就是找到一组参数使得损失函数最小化,这需要求解导数并找到驻点。
- 反向传播算法: 神经网络训练的核心算法——反向传播,本质上是链式法则在复杂函数(神经网络)上的应用,用于高效计算梯度。
- 激活函数: 神经网络中激活函数的导数在反向传播中至关重要。
最优化理论 (Optimization Theory):
- 核心作用: 机器学习的核心目标之一就是找到模型的最佳参数,这本质上是一个最优化问题。
- 具体应用:
- 算法设计: 梯度下降、牛顿法、拟牛顿法、共轭梯度法等都是来自最优化理论的算法,用于训练模型。
- 凸优化: 许多机器学习问题可以被表述为凸优化问题(如支持向量机、逻辑回归),这类问题有成熟的理论和高效的求解方法,可以保证找到全局最优解。
- 正则化: L1、L2 正则化等技术用于防止过拟合,它们是在优化目标中加入惩罚项,也属于最优化范畴。
- 约束优化: 某些模型(如支持向量机)需要在特定约束条件下进行优化。
除了以上四个核心领域,还有一些其他数学分支在特定机器学习领域或更高级的研究中也扮演着重要角色:
- 信息论 (Information Theory):
- 应用: 决策树中的信息增益/基尼指数、损失函数的构建(如交叉熵)、特征选择、数据压缩等。
- 图论 (Graph Theory):
- 应用: 社交网络分析、推荐系统、知识图谱、图神经网络 (GNNs) 等。
- 泛函分析 (Functional Analysis):
- 应用: 在一些更理论的机器学习研究中,如核方法(如支持向量机中的核技巧)、再生核希尔伯特空间 (RKHS) 等。
- 拓扑学 (Topology):
- 应用: 在流形学习、拓扑数据分析 (TDA) 等前沿领域,用于理解高维数据的内在结构。
- 离散数学 (Discrete Mathematics):
- 应用: 虽然不如前几项核心,但在某些算法设计、数据结构(如图、树)以及逻辑推理相关的AI领域中有应用。
线性代数、概率论与数理统计、微积分 是机器学习入门和实践中最基础、最重要的三大数学支柱,而 最优化理论 则提供了训练和求解模型的关键方法。随着学习的深入,其他数学分支的重要性也会逐渐显现。
标量 向量 矩阵 张量
阶梯关系:
- 标量是 0 阶张量 一个单独的数字。
- 向量是 1 阶张量 一列或一行数字。
- 矩阵是 2 阶张量 一个数字表格。
- 张量可以推广到任意高的阶数 n>2 多维数字数组。
无论张量有多少维,它里面存放的基本元素通常都是标量(数字)。在机器学习和深度学习中,“张量”这个词用得非常广泛,通常指代模型处理的多维数据数组。
AI宏观概念
AI、ML、DL、生成式AI的关系。
图片来源:AI course Part 1: Core Principles to Truly Understand AI
传统的机器学习需要人们事先将各种各样的知识教给机器,而对于用神经网络实现的人工智能(深度学习),人们只需要简单地提供数据即可。神经网络接收数据后,会从网络的关系中自己学习并理解。
对于数据的特征,深度学习也就不用手动提取了,都是自己提取自己学习:
神经网络与深度学习:
- 关系: 深度学习是基于神经网络的一种特定方法或领域。可以说,深度学习使用神经网络作为其核心构建块,但它特指那些具有多层(深层)结构的神经网络以及与之相关的训练技术和应用。
- 核心区别: 主要在于网络的深度,也就是隐藏层的数量。
下面详细解释一下:
1. 神经网络 (Neural Networks, NNs)
- 概念: 神经网络是一种受到人脑结构启发的计算模型。它由大量相互连接的节点(称为“神经元”或“单元”)组成,这些节点通常分层排列(输入层、一个或多个隐藏层、输出层)。
- 工作原理: 数据从输入层进入,通过隐藏层进行加权、转换(使用激活函数),最终在输出层产生结果。网络通过“学习”(调整连接权重)来从数据中识别模式,以完成分类、回归等任务。
- 范围: “神经网络”可以指代任何此类结构,无论是只有一个隐藏层(浅层网络)还是多个隐藏层(深层网络)。
2. 深度学习 (Deep Learning, DL)
- 概念: 深度学习是机器学习 (Machine Learning, ML) 的一个子领域,它专门研究和应用具有多个隐藏层(通常远不止一个或两个)的神经网络,这类网络被称为“深度神经网络” (Deep Neural Networks, DNNs)。
- 关键特征:深度。这个深度指的是网络中隐藏层的数量。更多的层允许模型学习数据中更复杂、更抽象的层次化特征表示。例如,在图像识别中,浅层可能学习边缘和纹理,深层则能组合这些特征来识别物体的部分乃至整个物体。
- 优势: 深度学习模型特别擅长处理大规模、高维度的数据(如图像、声音、自然语言),并且能够自动学习有用的特征(减少了传统机器学习中对“特征工程”的依赖)。
- 技术: 深度学习不仅仅是深层网络结构,还包括了一系列使其能够有效训练的技术,如特定的激活函数 (ReLU)、优化算法 (Adam)、正则化方法 (Dropout) 以及利用 GPU/TPU 进行大规模并行计算等。
总结关系与区别:
特征 | 神经网络 (Neural Networks) | 深度学习 (Deep Learning) |
---|---|---|
核心模型 | 使用神经元和连接构成的网络 | 使用深度神经网络 (DNNs),即层数很多的神经网络 |
关系 | 更广泛的概念,可以是浅层或深层 | 神经网络的一个子领域/特定应用,专注于深层结构 |
主要区别 | 层数不限(可以是浅层) | 必须是深层(多个隐藏层) |
能力 | 可处理多种任务,但浅层网络处理复杂模式能力有限 | 擅长从大规模数据中学习复杂、抽象、层次化的特征 |
数据需求 | 可以用较少数据训练浅层网络 | 通常需要大量数据才能有效训练 |
计算需求 | 浅层网络计算量相对较小 | 计算密集,通常需要 GPU/TPU 等硬件加速 |
特征工程 | 浅层网络有时仍需手动设计特征 | 强调自动特征学习(表示学习) |
范围 | 指代一种模型结构 | 指代一个研究领域/方法论,核心是使用深度神经网络 |
可以这样理解:
- 所有的深度学习模型都是神经网络。
- 但并非所有的神经网络都属于深度学习(例如,只有一个隐藏层的简单神经网络就不是深度学习)。
深度学习是神经网络发展到一定阶段,通过增加网络深度并结合相应训练技术,从而在处理复杂问题上取得突破性进展的一个重要分支和方向。
关于AI的幻觉
“AI的幻觉”(Hallucination)听起来很玄乎,但其实很好理解。简单来说,就是 AI 在回答问题或生成内容时,凭空“瞎编”了一些听起来很像那么回事、但实际上不正确或完全不存在的信息。你可以把它想象成 AI 在“胡说八道”,但它自己并不知道自己在胡说,因为它只是根据训练数据中的模式瞎猜,而不是真的“理解”事实。 举个例子:
你问 AI:“昨天火星上发生了什么大事?”
AI 可能会一本正经地回答:“昨天火星上的火山喷发了,科学家发现了外星人留下的遗迹。”
实际上,AI 完全是“脑补”出来的。
这种现象之所以叫“幻觉”,是因为 AI 生成的内容就像人做梦或产生错觉一样,看似真实,但和现实没啥关系。 为什么会发生“幻觉”?
- 数据局限:AI 是靠大量数据训练出来的,但它不可能知道所有事实。如果它没见过某些信息,就会靠“想象”填补- 空白。
- 概率生成:AI(尤其是语言模型)是根据概率预测下一个词的,它更关心句子“通顺”和“合理”,而不是“真实”。
- 缺乏常识判断:AI 没有真正的理解力和判断力,它不会像人那样质疑自己:“这话靠谱吗?”
完全避免“幻觉”很难,但可以采取一些方法尽量减少它:
- 提供更多上下文
如果你给 AI 更多准确的信息作为输入(比如具体问题背景),它瞎编的可能性会降低。比如问“昨天火星上发生了什么大事?”时,加一句“根据 NASA 的最新报告”,AI 就可能老实点。
- 用 RAG 技术
RAG(检索增强生成)是个好办法。它让 AI 先去查真实资料(比如网页、文档),再根据这些资料回答,而不是全靠自己“编”。就像给 AI 一个“事实查询助手”。
- 模型微调
在特定领域的数据上微调模型,能让 AI 在那个领域更靠谱,减少胡编乱造。比如微调一个医学模型,它就不太会瞎说“感冒是因为月亮太圆”。
- 后处理检查
可以让 AI 生成内容后,再用另一个系统(或人)检查一下,看看有没有明显错误。
- 设计约束 在 AI 的提示词(Prompt)里加上“别瞎编”“只说你知道的”之类的限制,虽然不一定完全管用,但能稍微收敛一点。
即使用了这些方法,“幻觉”也很难彻底消失。因为AI的本质是基于统计的生成工具,不是真的“知道”事情。它可能在某个角落还是会“偷偷编故事”。比如即使有 RAG,如果检索到的资料本身不靠谱,AI 还是会出错。
AI 的“幻觉”就像一个能说会道的朋友,嘴上跑火车但不一定靠谱。想减少它,可以给它“查资料的工具”(RAG)、“专业训练”(微调),或者“多问几句”核实一下。但要完全避免,短期内还不太可能,毕竟 AI 不是人,没法像我们一样分辨真假。
可解释AI
视频资料:https://www.youtube.com/watch?v=D2ibL6z_Cns
AI背后的工作机制往往对人类来说是不透明的,这种不透明性可能导致对信任、公平性和责任追溯等方面的考量。因此,提出了可解释 AI 的概念,即 AI 能够解释其决策过程,使人们更容易信任和理解 AI 的决策。SHAP(SHapley Additive exPlanations)和 LIME(Local Interpretable Model-agnostic Explanations),它们通过局部解释和全局解释的方式,帮助用户理解 AI 的决策过程。Anthropic
公司目前对AI的可解释性比较重视,也走在研究的前沿。
模型与大模型
语言模型 (Language Model): 这个词听起来有点学术,但其实就是指 “理解和生成人类语言的模型”。 你可以把它看作是一个 “语言专家”,它学习了海量的文字资料,掌握了语言的规律和技巧,能够理解我们说的话,也能像模像样地写文章、聊天。
大语言模型(Large Language Model):一个经过海量文本数据训练,拥有庞大参数规模的,能够理解和生成人类语言的超级语言模型。
LLM特长:
- 理解能力强: LLM 可以理解非常复杂的语言,包括各种不同的表达方式、语境、甚至是隐含的含义。 你跟它说话,它能比较准确地理解你的意图。
- 生成能力强: LLM 不仅能理解语言,还能生成高质量的文本,包括:
- 写文章、写邮件、写代码: 只要你给它一个主题或者指令,它就能帮你快速生成内容。
- 翻译: 它可以进行多种语言之间的翻译。
- 聊天对话: 它可以跟你进行自然的对话,回答你的问题,甚至跟你闲聊。
- 总结、改写: 它可以帮你总结文章内容,或者把文章改写成不同的风格。
生活中的LLM应用:
- 智能聊天机器人: 我们现在用的很多智能客服、聊天机器人,背后都可能使用了 LLM 技术。
- 文本生成工具: 很多写作助手、内容创作工具,可以帮助我们快速生成文章、文案等等。
- 代码生成工具: 一些编程助手可以根据你的自然语言描述,自动生成代码。
- 搜索引擎: 一些搜索引擎也在尝试使用 LLM 来提升搜索结果的质量和相关性。
- 翻译工具: 更高级的翻译工具,可以利用 LLM 来进行更准确、更自然的翻译。
模型的进化
语言模型经历了从规则模型
到统计模型
,再到神经网络模型
的发展历程,逐步从呆板的机械式问答程序成长为具有强大泛化能力的多任务智能模型。
大模型的本质
LLM是一个复杂的数学函数,它能预测任何文本的下一个单词(准确说是token,即词元)。
神经元只不过是数学表达式,神经网络的本质是函数近似器,或者函数逼近器。与LLM本质是函数的概念是类似。
从数学上看,神经网络是一种用于数据分析的模型,这个模型是由权重和偏置确定的。像权重和偏置这种确定数学模型的常数称为模型的参数。
大模型参数与函数参数
将大语言模型比作一个函数,是一个很好的理解角度!从这个角度来看,大语言模型的参数和传统数学函数的参数确实有相似之处,但意义和性质上也有显著的区别。它们是类比,但不完全一模一样。
相似之处(都是影响函数输出结果的“设定值”)
- 定义函数的行为: 就像数学函数
f(x) = ax + b
中的a
(斜率) 和b
(截距) 决定了这个直线函数的具体形态和输出结果一样,大语言模型的参数(主要是神经网络中的权重和偏置项)也决定了模型在接收输入(Prompt 和上下文)时,会如何处理信息并生成输出(预测下一个 Token 的概率分布,最终形成文本)。它们是模型数学结构中固定下来(在推理阶段)的数值集合,这些数值共同定义了模型的具体功能和行为。
显著的区别(“设定值”的来源、数量、含义和修改方式不同)
- 来源和含义:
- 数学函数的参数(如
a
和b
)通常是人为设定的数值,它们的数学意义非常清晰直接。 - 大语言模型的参数则是通过在海量数据上进行预训练和可能的微调过程自动学习得到的。这些参数编码了模型从数据中学到的关于语言的模式、语法、语义以及世界知识。它们共同构成了模型庞大的“知识”和“经验”体系。源材料提到,模型的参数存储着学到的各种概念,上下文学习就是通过示例来“锚定”这些预训练学到的相关概念。模型编辑技术也直接表明,修改参数可以精准地更新模型内部存储的特定知识点。
- 数学函数的参数(如
- 数量和复杂性:
- 简单数学函数的参数数量很少,函数结构相对简单。
- 大语言模型的参数数量极为庞大,达到亿级别乃至万亿级别。它们分布在模型复杂的多层神经网络结构中。这种巨大的参数规模是其强大能力(比如上下文学习能力的涌现)的基础。
- 动态性(训练与编辑):
- 一旦数学函数定义确定,其参数通常是固定不变的,除非你改变函数本身。
- 大语言模型的参数在训练过程中是不断调整和优化的。即使预训练完成,模型的参数也可以通过微调或模型编辑技术进行局部或定向修改,以适应特定任务需求、纠正错误信息或去除偏见/毒性。这就像一个函数在运行过程中,它的内部设定值还可以根据新的学习或指令进行调整。
打个比方:
如果把大语言模型比作一个极其复杂的、能够根据你输入的指令(Prompt)和例子(上下文学习)来完成任务的智能机器:
- 数学函数的参数 (a, b): 就像一个简单计算器上的固定按钮功能或者电路设定。比如按"+"键就是执行加法,按"-"键就是执行减法。这些功能是设计时就固定下来的,参数(电路)决定了输入 2 和 3 时,输出是 5。
- 大语言模型的参数: 就像这个智能机器内部无数个可以微调的“齿轮”、“开关”和“连接点”。这些“齿轮”和“开关”不是一开始就设定好的,而是在机器“阅读”了海量书籍、网页等信息后,自己通过学习调整出来的。它们共同决定了机器看到“猫”这个词时,会激活哪些相关的概念(比如毛茸茸、会叫、喜欢鱼),看到“写一首诗”的指令时,会按照什么样的韵律和结构去组织文字。这些“设定”是如此复杂和庞大,以至于修改其中一部分(模型编辑),就能改变机器对某个特定事实的认知(比如斑马皮肤的颜色),或者影响它在特定情境下的推理过程(思维链)。这种复杂的、学习得来的“设定”是传统数学函数参数所不具备的。
结论:
大语言模型的参数是模型内部学习到的、海量的数值化知识和模式的载体,它们定义了模型如何处理信息。虽然它们在形式上都是决定函数输出的数值,但与简单数学函数的参数相比,它们数量巨大、意义复杂(编码学到的知识)、来源于数据学习,并且可以在事后被修改和调整。所以,它们是功能上的类比,而非意义和性质上的完全等同。
大参数与海量数据投喂
大语言模型(LLM)之所以被称为“大”,主要就是因为两方面:模型规模(参数量)大和训练数据规模大(海量数据)。“大数据 + 大模型 → 新智能”,这种结合能带来能力增强和扩展。
1. 大模型是如何存储那么多参数的?
想象一下,一个语言模型就像一个极其复杂的“大脑”。这个大脑不是由生物细胞构成,而是由无数数字组成的网络构建的。这些数字就是模型的参数。
- 参数是什么? 你可以把这些参数想象成这个“大脑”里的无数个可以调整的“旋钮”或“权重”。当信息(比如文字)流经这个数字网络时,这些旋钮会影响信息的处理方式,决定哪些信息更重要,哪些信息应该被加强或减弱。它们是模型从数据中学习到的“经验”或“规则”的体现。
- 为什么参数这么多? 源材料提到,像基于 Transformer 这样的先进架构,为了捕捉语言中极其复杂、细微的模式、语法、语义和世界知识,需要非常多的这些“旋钮”来精细地调整信息处理流程。参数量达到亿级别甚至万亿级别时,模型才可能涌现出像上下文学习 这样强大的能力。
- 参数存储在哪里? 这些参数本质上是一堆巨大的数字矩阵或张量,它们是模型数学结构的一部分。在实际操作中,这些数字是存储在计算机的内存中,特别是在用于训练和推理的专业硬件(如 GPU)的显存中。
- 通俗比喻: 把模型想象成一个巨大的图书馆,参数不是书本身,而是决定了如何索引、关联、检索和组合这些书里的信息的**索引系统。这个系统就是数字化的参数,存储在图书馆的管理系统中,系统越复杂越精细,才能处理海量的书籍(也就是投喂给大模型的数据)。
2. 海量的数据是怎么投喂给大模型的?
大模型需要海量数据(比如巨大的文本语料库)进行预训练。这个过程就像一个学生在短时间内阅读并记住一个国家的图书馆藏书。
- 原始数据: 大量的文本,可能来自书籍、网页、新闻、论文等等。这些是模型学习的基础。
- 数据准备(不是直接“读”文字): 计算机无法直接理解文字,所以需要一个“翻译”过程。
- 分词 (Tokenization): 首先,原始文本会被切分成一个个基本的单元,叫做 Token。一个 Token 可能是一个词、一个符号,或者一个常用词的一部分。比如,“干脆面”可能被分成一个 Token,而“浣熊”可能需要两个 Token来表示。这个过程的目的是把复杂的文本序列变成一个数字序列(每个 Token 对应词表里的一个 ID),同时也能控制词表大小,让模型更高效地处理常见词。
- 嵌入 (Embedding): 接着,每个 Token ID 会被转化成一个固定大小的数字向量(表征向量)。你可以把这个向量想象成这个 Token 的“数字指纹”或“编码”。这个转换是通过一个叫做嵌入矩阵 (Embedding Matrix) 的大表格实现的。模型在训练过程中也会学习和调整这个嵌入矩阵,使得意思相近的 Token 在向量空间里也比较接近。
- 投喂过程: 经过分词和嵌入后,原始文本就变成了一串串的数字向量。这些向量序列被送入模型的各层(比如 Transformer 层)进行处理。
- 在预训练阶段,模型通常会学习预测序列中的下一个 Token 是什么。它会接收前面一串 Token 的向量作为输入,然后计算出词表中每个可能的下一个 Token 出现的概率。
- 根据模型预测的概率分布和真实数据中的下一个 Token,计算出一个“错误”或“损失”。
- 这个“错误”信号会通过复杂的算法(反向传播等,源材料提到了 RNN 训练涉及梯度,模型编辑基于梯度)来调整模型内部的无数个参数(旋钮),让模型下次对这个序列的预测更准确。
- 重复与规模: 这个“输入向量序列 → 预测概率 → 计算误差 → 调整参数”的过程会在海量的训练数据上重复无数次。数据量之所以“海量”,是因为需要覆盖尽可能多的语言现象、知识和模式,让模型学会强大的泛化能力。参数量之所以“大”,是因为需要足够的容量来存储这些从海量数据中学到的复杂模式。
通俗比喻: 喂数据就像是给那个巨大的“大脑”(模型)看无数的“卡片”。每张卡片上有一段文字。
- “大脑”先把卡片上的文字编码成自己能理解的“数字脉冲序列”(分词和嵌入)。
- 然后,“大脑”尝试根据前面的脉冲,预测下一个脉冲是什么。
- 它把自己的预测和卡片上实际的下一个脉冲对比。
- 如果预测错了,它就会调整内部的“旋钮”(参数),让下次看到类似脉冲时预测得更准。
- 这个过程在数万亿张卡片上不断重复,直到“大脑”变得非常善于预测各种文本序列,从而掌握了语言的规律和其中的知识。
总结来说,大语言模型的“大”体现在数字形式的参数量巨大和用于训练的数字数据量庞大。参数作为模型内部的数字权重,存储在计算硬件的内存中。海量数据则通过分词和嵌入转换为数字向量序列后,“流”入模型,通过反复的预测和参数调整过程来训练模型。
大模型的上下文学习
想象一下,大语言模型就像一个学识渊博、知识广博的“学生”。在它庞大的预训练过程中,它学习了海量的文本数据,记住了很多概念、语言模式和事实。
上下文学习就是说,当你想让这个“学生”帮你完成一个特定任务时,你不需要重新训练它,也不需要像以前那样专门为了这个任务去“微调”它。你只需要在给它的输入(也就是 Prompt)里,直接包含一些例子或者明确的指令。模型会根据这些输入里的“上下文”来理解你的意图,并完成任务。
为什么它会“上下文学习”呢?
- 这是大语言模型的一种“涌现能力”(Emergent Ability)。这意味着它不是模型一开始就有的,而是当模型的规模变得足够大时,这种能力才突然显现出来的。
- 通常模型的参数数量需要达到亿级别及以上,上下文学习能力才能涌现。而且,模型规模越大,这种能力通常越强。例如,一些上下文学习能力较好的模型,其参数量都在亿级或更高。
- 你可以理解为,模型在海量数据上预训练时已经学会了许多知识,而你在输入里给出的例子或指令,就像是给模型提供了一些“锚点”,帮助它从庞大的知识库中快速定位到完成当前任务所需的那些相关知识和概念。
上下文学习有哪些形式?
三种常见的形式:
- 零样本 (Zero-shot): 你只给模型一个任务的说明或问题,不提供任何完成任务的例子。模型直接根据你的指令和它已有的知识来尝试回答。这种方式简单,但效果可能不如提供例子。
- 单样本 (One-shot): 你给模型一个任务说明,再加上一个例子,告诉模型输入是什么以及对应的期望输出是什么。这有点像人类的“举一反三”。
- 少样本 (Few-shot): 你给模型任务说明,再加上几个例子。通常提供少量的例子(比如几个到十几个)可以显著提升模型在特定任务上的表现。但例子太多会增加模型的计算负担。
什么会影响上下文学习的效果?
很多因素都会影响上下文学习的表现:
- 模型本身: 模型规模越大,能力通常越强。模型的架构和训练方式也很重要。
- 你提供的例子 (演示示例): 例子的质量很重要。比如例子的选择(应该选择与待解决问题相似且具有多样性的例子),例子的格式(比如对于复杂推理任务,在例子中加入推理过程,即“思维链”形式,会有帮助),输入和输出映射的正确性(错误例子会误导模型,而且越大模型对错误越敏感),以及例子的数量和顺序。
- Prompt 质量: 你给模型的任务说明是否明确清晰,上下文信息是否丰富且相关,以及你期望的输出格式是否规范,都会直接影响模型能否准确理解并执行任务。
总而言之,上下文学习就是大语言模型通过理解输入中的指令和示例,来完成特定任务的能力。它是模型规模增大后才出现的“新技能”,让你可以在不重新训练或微调模型的情况下,只通过调整输入(Prompt)就能引导模型做各种事情。
模型微调和RAG
模型微调(Fine-tuning)和 RAG(Retrieval-Augmented Generation,检索增强生成)是两种在不同场景下提升模型性能的技术,它们各有适用场景和特点。以下是详细解答:
什么时候用到模型微调?
模型微调通常在以下情况下使用:
- 特定领域任务优化 当你有一个预训练模型(比如语言模型),但需要它在某个特定领域(如法律、医疗)或特定任务(如翻译、情感分析)上表现更好时,可以通过微调来调整模型。
- 数据分布差异 如果你的目标数据集与预训练模型的训练数据分布差异较大,微调可以帮助模型适配新数据。
- 提高精度或性能 通过在标注数据集上进一步训练,微调可以让模型更精准地捕捉任务中的模式。
- 资源充足 微调需要一定的计算资源和标注数据,适合有条件进行额外训练的场景。
示例:将一个通用语言模型微调为专门回答法律问题的模型,使用法律文档数据集进行训练。
什么时候用到 RAG?
RAG 适用于以下情况:
- 需要外部知识 当模型需要回答的问题涉及最新信息、特定事实或超出其预训练知识范围的内容时,RAG 通过检索外部文档(如网页、数据库)来补充知识。
- 动态更新 如果任务要求模型能够实时利用最新数据,而无需重新训练模型,RAG 是一个很好的选择。
- 避免幻觉(Hallucination) RAG 通过检索真实数据作为上下文,减少模型生成不准确或凭空捏造内容的可能性。
- 资源限制 相比微调,RAG 不需要重新训练整个模型,适合快速部署且计算资源有限的场景。
示例:回答“2025年最新科技趋势是什么?”时,RAG 可以检索当前网络上的最新文章作为上下文生成答案。
它们有什么区别?
特性 | 模型微调 (Fine-tuning) | RAG (Retrieval-Augmented Generation) |
---|---|---|
定义 | 在特定数据集上进一步训练预训练模型,调整参数 | 通过检索外部知识增强生成过程,不改变模型参数 |
核心机制 | 修改模型权重以适配特定任务或领域 | 检索相关文档作为上下文输入给模型 |
知识来源 | 嵌入到模型参数中,依赖训练数据 | 动态从外部数据源检索,实时更新 |
计算成本 | 需要训练过程,成本较高 | 无需训练,检索和推理成本较低 |
更新频率 | 更新需重新微调,周期较长 | 可实时更新外部知识库,无需改动模型 |
适用场景 | 任务固定、数据稳定、需要深度定制 | 知识动态变化、需事实性强或实时性高的回答 |
灵活性 | 对训练数据高度依赖,灵活性较低 | 对新数据适应性强,灵活性高 |
局限性 | 可能过拟合,知识范围受限于训练数据 | 依赖检索质量,检索无关内容可能影响结果 |
总结
微调:适合需要深度定制、任务相对固定的场景,比如打造一个特定领域的专业模型。它更像“教模型记住特定知识”。
RAG:适合需要动态知识、不想频繁重新训练模型的场景,更像“给模型一个实时查阅的百科全书”。
在实际应用中,这两者也可以结合使用:先微调模型以适配任务,再用 RAG 补充外部知识。例如,一个医疗问答系统可以先微调模型掌握医学基础知识,再用 RAG 检索最新的医学研究论文。这样可以兼顾专业性和实时性。你觉得在你的场景中哪个更适合?可以具体聊聊你的需求!
RAG检索增强生成
RAG(Retrieval-Augmented Generation)检索增强生成是指对大型语言模型输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。大型语言模型(LLM)用海量数据进行训练,使用数十亿个参数为回答问题、翻译语言和完成句子等任务生成原始输出。在 LLM 本就强大的功能基础上,RAG 将其扩展为能访问特定领域或组织的内部知识库,所有这些都无需重新训练模型。这是一种经济高效地改进 LLM 输出的方法,让它在各种情境下都能保持相关性、准确性和实用性。
简要解释 RAG 的核心思想,即利用外部知识库增强生成能力。
关于本地知识库与联网功能:
本地知识库和联网功能都是 RAG 系统可以使用的知识来源或数据检索通道。
它们本身不是 RAG 的核心算法或模型,而是 RAG 系统 构建和应用的基础设施。
一个完整的 RAG 系统可以同时利用本地知识库和联网功能,根据不同的应用场景和需求,选择合适的知识来源,以实现更强大、更灵活的生成能力。
因此,说本地知识库和联网功能是 RAG 的一种组成部分是合理的,因为它们为 RAG 提供了必要的数据基础和信息检索能力,使得 RAG 能够有效地利用外部知识来增强语言模型的生成效果。
MCP模型上下文协议
模型上下文协议 (Model Context Protocol, 简称 MCP) 听起来有点专业,但其实用大白话解释,它就像是 AI 模型和外界数据或工具之间沟通和理解对方的 “暗号” 或者 “共同语言”。
MCP 是一种全新的开放标准,旨在弥合 AI 模型与外部数据源之间的鸿沟,从而显著提升 AI 助手响应的质量和相关性。
过拟合与欠拟合
过拟合(Overfitting)是机器学习中的一个常见问题。它指的是模型在训练数据上表现得非常好,但在新的、未见过的数据(测试数据或实际应用数据)上表现很差的现象。
简单来说,模型过于“死记硬背”训练数据的细节和噪声,而没有学习到数据中潜在的、具有普遍性的规律或模式。这导致模型失去了泛化能力,无法很好地适应新的数据。
通常,模型过于复杂或训练数据量不足时,更容易发生过拟合。
过拟合与欠拟合通俗解释:
好的,我们用一个通俗易懂的比喻来解释过拟合 (Overfitting) 和欠拟合 (Underfitting)。
想象一下你在学习如何识别猫。
1. 欠拟合 (Underfitting) - 学得太少、太简单
- 情况: 你只看了几张非常典型的猫的照片(比如,一只黄色的、蹲着的家猫),然后老师就让你去识别各种动物了。你形成的规则可能非常简单,比如“有毛的就是猫”或者“黄色的就是猫”。
- 表现:
- 对于你学习过的那几张黄色蹲着的猫,你可能都认不全(训练效果差)。
- 当你看到一只黑猫、一只站着的猫、一只波斯猫,甚至是一只狗时,你很可能完全认错或者根本认不出来(在新样本上表现也很差)。
- 原因: 模型太简单了(你的规则太粗糙),根本没有学到猫的真正特征。连训练数据里的规律都没学好。
- 简单说: 还没学明白呢,啥都不会。
2. 过拟合 (Overfitting) - 学得太细、太死板
- 情况: 你把一本厚厚的猫咪图册(训练数据)里的每一张照片都背得滚瓜烂熟。你不仅记住了猫有胡须、尖耳朵,还记住了照片A里的猫是橘色带白色条纹,右耳后面有个小黑点,背景是蓝色的沙发;照片B里的猫是纯黑色,眼睛是绿色的,蹲在红色的地毯上…… 你把这些过于具体、甚至无关紧要的细节(比如背景颜色、特定的小斑点)都当作了识别猫的“关键特征”。
- 表现:
- 让你看回那本图册里的照片(训练数据),你几乎能百分之百准确地认出每一只猫(训练效果极好)。
- 但是,当你遇到一本新的猫咪图册(测试数据),里面的猫虽然也是猫,但它们的花纹、姿势、背景都和你背过的不完全一样。因为你太依赖之前背下来的那些“死特征”,你反而认不出这些新猫了,或者把一只很像图册里某张照片的狗错认成猫(在新样本上表现很差)。
- 原因: 模型太复杂了(你的规则太具体、太死板),把训练数据里的噪声和偶然特征都学进去了,失去了泛化能力(在新情况下的适应能力)。
- 简单说: 书呆子,只会死记硬背,一遇到新情况就傻眼。
3. 合适的拟合 (Good Fit) - 学得刚刚好
- 情况: 你学习了足够多、种类足够丰富的猫的照片,并且你总结出了猫的普遍、核心特征(比如特定的脸型、胡须、眼睛形状、身体比例、走路姿态等),而不是去记每张照片的细节。
- 表现:
- 对于你看过的照片(训练数据),你能比较准确地识别(训练效果好)。
- 遇到新的、没见过的猫(测试数据),你也能凭借你掌握的核心特征,比较准确地认出来(在新样本上表现也好)。
- 原因: 模型复杂度适中,抓住了数据背后真正的规律。
- 简单说: 学到了精髓,能够举一反三。
总结一下:
- 欠拟合: 模型太简单,没学好,训练和测试都表现差。就像学生没好好学习。
- 过拟合: 模型太复杂,死记硬背训练数据,训练表现好,但测试表现差。就像学生只会背例题,不会做新题。
- 好拟合: 模型复杂度正好,学到了真本事,训练和测试都表现好。就像学生真正理解了知识点。
Agent 智能体
AI智能体就像一个个小小的智能机器人,它们能够感知、思考、行动,帮助我们完成各种任务,让我们的生活更加方便和智能。 它们是AI技术的重要组成部分,也是未来AI发展的重要方向。
更正式一点的解释是:
AI智能体(Agent) 是一个能够感知环境、通过思考做出决策、并采取行动以达成目标的计算机程序或系统。
生活中有哪些AI智能体的例子:
- 虚拟助手 (Virtual Assistants): 比如 Siri、Alexa、Google Assistant,它们能听懂你的语音指令(感知环境),理解你的意图(思考决策),然后帮你设置闹钟、播放音乐、查询天气(采取行动),目标是让你更方便地使用电子设备和获取信息。
- 聊天机器人 (Chatbots): 比如网站客服机器人,它们能接收你的文字输入(感知环境),理解你的问题(思考决策),然后回复你或者帮你解决问题(采取行动),目标是提供快速的客户服务。
- 推荐系统 (Recommendation Systems): 比如购物网站、视频网站的推荐系统,它们会分析你的浏览历史和喜好(感知环境),预测你可能喜欢什么(思考决策),然后给你推荐商品或视频(采取行动),目标是让你更容易找到感兴趣的内容并促成消费。
- 自动驾驶汽车 (Self-driving Cars): 它们通过摄像头、雷达等传感器感知周围环境(感知环境),分析路况和交通规则(思考决策),然后控制车辆的行驶(采取行动),目标是安全地将你送到目的地。
- 游戏AI (Game AI): 比如电脑游戏里的AI对手,它们能“看到”游戏画面(感知环境),分析游戏局势(思考决策),然后做出游戏操作(采取行动),目标是在游戏中击败玩家或者完成游戏任务。
Agent与工作流
Agent(智能体)本身已经具备思考和规划能力,为什么还需要工作流(Workflow)呢?
简单理解:Agent是AI程序的动态规划能力,工作流是人为制定的静态规划能力。当前AI的动态规划能力还不够,所以需要人为的静态规划去弥补这一弱点。工作流就像是给这个 “智能小助手” 提前设计好的 “任务流程图” 或者 “行动指南”。 我们不信任AI的思考决策能力,但看重它的感知理解能力和执行能力,用工作流去提供AI决策路线,让它去执行。
Agent 和 工作流 的关系:
- Agent 是 “执行者”: Agent 就像一个能力很强的员工,它有思考能力和执行力,可以完成各种任务。
- 工作流 是 “指挥棒”: 工作流就像项目经理给出的任务指令和流程,它告诉 Agent “做什么”、“怎么做”、“按什么顺序做”。
我们的大部分任务很复杂,现在的AI需要执行好任务,很多时候需要工作流指导。举例说明,假设我们要 “制作一份复杂的市场调研报告”。
没有工作流的Agent:
我们直接告诉Agent “去做一份市场调研报告”,Agent可能会自己思考,然后就开始收集数据、分析数据、写报告。但这样容易出现问题:Agent可能不知道调研的重点是什么,收集的数据不全面,报告结构混乱等等。
有工作流的Agent:
我们先设计一个工作流,例如:
- 确定调研目标和范围
- 收集市场数据 (Agent 负责用工具搜索数据)
- 数据清洗和整理 (Agent 负责数据处理)
- 数据分析和挖掘 (Agent 负责分析)
- 撰写调研报告 (Agent 负责写作)
- 报告审核和修改
- 报告发布
然后,我们把这个工作流交给Agent,Agent就会按照工作流的步骤,一步一步地完成任务。这样就能保证调研报告的质量更高、更可靠、更符合我们的需求。
截止到2025年2月,多家公司已经发布了Deep Research,已经初步证明AI的思考决策能力已经达到很高的水平,可能以后就越来越不需要人类静态规划能力的辅助,就可以自主决策并执行,很好地完成目标了。
向量数据库
向量和矢量:
其实“向量”和“矢量”是同一个东西,英文都是 vector。但在中文里,两者的用法有习惯上的差别:
- 矢量:更常见于物理学或几何学,强调“有方向的量”,比如力、速度,带有很强的“箭头”形象(从一点指向另一点)。
- 向量:在数学、计算机领域更通用,指一组数的组合,不一定有物理方向,而是抽象的“多维描述”。
向量数据库里存的这些“向量”,其实是一堆数字(比如 [0.7, 0.2, 0.9]),更多是数学意义上的“多维座标”,而不是物理上的“箭头”。所以用“向量”更符合计算机科学的语境,显得更广义、更抽象。
通俗解释向量数据库:
想象一下,你去超市买东西,货架上每件商品都有一个标签,写着名字、价格、种类,比如“苹果,2块钱,水果”。这就是普通数据库的工作方式:它把数据整理成一张张表格,像超市的清单一样,方便你按名字、价格这种明确规则查找。
现在,假设你不是想找“苹果”,而是想找“有点像苹果的东西”,比如形状圆圆的、吃起来甜甜的水果。你没法直接用普通清单查,因为它不懂“像不像”这种模糊的概念。这时就需要向量数据库登场了。
向量数据库不存名字、价格这种简单标签,而是把东西变成一串数字(叫“向量”),这串数字就像一个“特征指纹”,描述了东西的长相、感觉、特性。比如:
- 苹果可能是 [0.8, 0.3, 0.9](甜度高、圆形、红色)。
- 梨可能是 [0.7, 0.4, 0.6](甜度稍低、形状略扁、颜色淡)。
向量数据库的任务是,通过比较这些“指纹”的相似度,找到和你想要的东西最接近的那个。它擅长处理“像不像”“接近程度”这种问题,而不是“完全一样”。
为什么用在 AI 里?
AI(尤其是像 ChatGPT 这样的语言模型,或图片识别系统)特别喜欢用向量数据库,因为它们处理的数据往往是模糊的、复杂的。比如:
你问 AI:“给我讲个开心的事。” AI 要从一堆故事里找出“开心”的感觉,它得把“开心”变成向量(比如 [0.9, 0.2, 0.1] 表示正能量高),然后去数据库里找类似的。
你给 AI 一张猫的图片,它要把这张图变成向量(描述形状、颜色、毛发),然后在数据库里找最像猫的东西。 这些模糊的“感觉”“相似度”,是 AI 理解世界的方式,而普通数据库压根儿不会干这个。
为什么非向量数据库满足不了?
普通数据库(比如 MySQL、PostgreSQL)就像一个严格的图书管理员,只会按编号、标题、作者这种固定规则找书。你问它“找一本有点像《哈利波特》的书”,它会懵,因为它只会精确匹配,不会算“像不像”。
具体原因有以下几点:
数据类型不同 普通数据库存的是文字、数字、日期这种结构化数据。 AI 需要的是图片、声音、文字意思这种复杂东西的“特征”,这些得用向量表示。
查询方式不同 普通数据库擅长“等于”(比如 price = 2),不擅长“相似”(比如“长得像苹果”)。 向量数据库能算向量之间的距离(比如用欧几里得距离或余弦相似度),专门找“最接近”的东西。
效率问题 如果硬用普通数据库存向量(比如塞一堆数字到表格里),查“相似”的时候得一个一个比,太慢了,像大海捞针。 向量数据库有特殊算法(比如 HNSW、Annoy),能快速从亿万个向量里挑出最像的,效率高得多。
总结:
向量数据库是 AI 的“超级搜索神器”,专门处理复杂、模糊的相似性问题。普通数据库就像老式账本,适合精确查找,但应付不了 AI 那种“找个差不多”的需求。所以在 AI 世界里,向量数据库(像 Pinecone、Milvus、Weaviate)就成了标配,帮 AI 快速找到“最像”的答案。