01.03-Agent学习记录-深度学习

上一篇《机器学习》介绍了模型怎样利用样本和训练目标调整判断,也区分了训练与推理。接下来可以继续往里看:模型接收到数据以后,里面究竟在进行什么样的计算?

舒翱移动端 / 全栈 / Agent 应用

把图片变成计算输入

机器学习有不同的模型和方法。深度学习是其中一条重要技术路线,主要使用多层神经网络,从数据中学习多层次的计算与表示方式。英文叫 Deep Learning,简称 DL。深度学习与机器学习的关系

这里先放下“深度”和“神经网络”这两个名称,从一个熟悉的任务开始:让电脑识别手写数字。

假设你在纸上写了一个“3”,拍成照片交给电脑。人可以根据形状认出它,但程序首先得到的是图片数据。对于一张灰度图,可以把它看成由许多小格子组成,每个格子对应一个表示亮暗的数值,这些小格子叫“像素”。

为了便于计算,假设我们把图片处理成 28 行、28 列,就有 784 个像素数值。它们描述了哪里较亮、哪里较暗。我们希望模型根据这些数值,判断图片更像数字 0 到 9 中的哪一个。这只是一个便于理解的输入设计,实际系统可以采用其他图片尺寸和处理方式。图像数值如何进入神经网络

神经元与网络层

怎样把这一组数字变成一个判断,就涉及神经网络的计算结构。

先看一种简单的神经网络。其中的一个“神经元”,可以理解为一个简单的计算单元。它接收若干输入,给不同输入乘上不同的权重,再把结果相加,并加上一个可训练的数,这个数叫“偏置”。权重和偏置会影响计算结果,是常见的模型参数。

这样的计算单元可以有很多个。把一组单元安排在同一个计算阶段,就形成了一层。这一层接收输入,输出一组新的数值;下一层再把这组数值作为自己的输入,继续计算。神经网络这个名字受生物神经系统启发,但这里讨论的是数学计算结构。

模型最前面的输入部分通常叫“输入层”,最后产生任务输出的部分叫“输出层”。中间用于处理信息的层叫“隐藏层”。“隐藏”指它们位于输入与最终输出之间,产生的是内部中间结果,这些数值仍然可以被程序读取和检查。神经元与隐藏层

在一个简单的手写数字识别网络中,整个过程可以这样理解:

图片的像素数值 → 一层中间计算 → 再一层中间计算 → 生成各数字类别的分数

例如,最后可以输出分别对应 0 到 9 的十个分数。如果“3”对应的分数最高,模型这次就选择“3”。这里的分数并不自动等于概率;即使经过转换得到预测概率,数值很高也不保证结果一定正确。

深度与激活函数

深度学习中的“深”,主要指输入到输出之间具有多个中间计算层。后一层接着处理前一层的结果,使网络能够学习多层次的变换。

在同一层增加计算单元,主要是在增加这一层的“宽度”;沿着计算过程增加层次,则是在增加“深度”。层数更多,意味着数据要经过更多阶段的计算,并不表示系统像人一样进行了更深入的思考。

不过,仅仅把加权相加重复很多层,还不够。单纯由这类线性计算叠加起来的网络,整体仍然只能表达相应的线性关系。为了处理更复杂的输入与输出关系,网络通常还会加入“激活函数”这样的非线性变换。

激活函数也可以很简单。例如,有一种常用变换会把负数变成 0,而让非负数保持原值,它叫 ReLU。不同数值经过这一步,会受到不同处理。将这样的非线性变换与多层计算组合起来,网络就能表达比单纯加权相加更复杂的关系。激活函数为什么重要

模型的内部表示

再回到手写数字。第一层接收像素,后面的层接收前面计算出的数值。对后面的计算来说,这些数值就是图片的一种“内部表示”:原来由像素描述的内容,经过网络计算,变成了另一组可继续使用的数字。

训练会改变各层的计算方式,使这些中间结果更有利于最终任务。例如,原本容易混淆的两种数字,可能在经过多层变换后,更容易被输出部分区分。

但我们不能直接规定,每一层都必然对应一个人能说清楚的步骤,例如“第一层认笔画,第二层认结构,第三层认数字”。这些说法有时可以辅助理解特定模型,但不能代替对实际网络的分析。中间某个数值的作用,也可能需要结合许多其他数值一起理解。

深度学习的一个重要特点,就是这些用于处理和表示信息的多层计算,可以共同从数据中学习。人仍然需要选择输入、准备数据、设计网络结构和训练目标,但许多中间变换不必由人逐项写成判断规则。

前向传播与反向传播

这些层又是怎样学会配合的?

仍然使用上一篇提到的训练过程。训练程序把一张已知类别的图片交给网络,计算出各类别分数,再根据已知答案计算损失。如果图片标签是“3”,模型却更偏向“8”,当前计算结果就与训练目标不够一致。

从输入开始,依次经过各层得到输出,这个方向的计算叫“前向传播”。在训练中,程序还会从损失出发,沿着计算关系向更靠近输入的层计算:参数发生一点变化,会怎样影响损失?相关的变化敏感程度,用“梯度”描述。

反向传播负责高效计算这些梯度,优化器再根据梯度、学习率等设置更新参数。 它们配合起来,让多个层的可训练参数能够根据同一个任务目标一起调整。具体怎样计算,后面学习训练过程时再单独展开。神经网络的反向传播训练

经过多次训练,网络中的参数发生变化,同一张图片经过各层时产生的中间结果和最终分数也会随之变化。模型训练好后,识别新图片通常是在使用已有参数进行计算,并不会因为又识别了一张图片,就自动再训练一次。

新数据、资源与 Agent

这也延续了机器学习中需要注意的问题:模型可能过拟合,样本可能标错,新的输入也可能与训练数据差别很大。训练时分数变好,还需要通过独立数据检查它在新场景中的表现。

深度学习也需要考虑任务与资源之间的取舍。模型层数、每层宽度、数据质量和训练方法都会影响效果,增加层数本身不保证能力提高。模型规模变大时,计算和存储需求通常也会增加;对于一些简单或数据有限的任务,其他机器学习方法可能更合适。

现在再看几个概念的关系,就更具体了:机器学习研究怎样利用数据获得完成任务的能力;深度学习采用多层神经网络来实现其中一类方法;大语言模型则是深度学习在语言建模中的一类模型。

以后构建大模型 Agent 时,我们使用的语言理解和生成能力,通常来自已经训练好的深度学习模型。Agent 应用再将模型与工具、任务状态和控制流程组织起来,处理具体任务。学到这里,我们是在认识模型内部的计算基础,还没有进入完整 Agent 的执行设计。

接下来进入 01.04:大语言模型 LLM,继续看文字怎样成为模型能够处理的数据,以及常见语言模型怎样根据已有内容生成后续内容。


当前学习编号:01.03 深度学习 DL。
下一学习编号:01.04 大语言模型 LLM。后续还有其他学习编号。

关联分支:07.01 神经网络与可训练参数、07.02 前向传播、07.03 反向传播与自动微分、07.04 梯度下降与优化器、07.05 学习率与学习率调度、04.09 过拟合与欠拟合。其中,神经元、权重、偏置、隐藏层和激活函数属于神经网络的关联知识。

系列阅读

本篇学习编号:01.03 深度学习 DL。

上一篇: 01.02 机器学习 ML 。

后续还有:01.04 大语言模型 LLM,将在本系列后续发布。

延伸阅读

返回全部文章

搜索项目和文章

输入关键词,查找项目或文章。

使用 Tab 选择结果,按 Esc 关闭。