1.1 神经网络:一个可学习的函数

Author

jshn9515

Published

2026-04-23

Modified

2026-04-23

欢迎进入深度学习的世界!在正式进入深度学习的各种模型之前,我们得先退一步,问一个更根本的问题:神经网络到底是什么?

相信很多初学者在刚开始接触深度学习时,都会被神经元、反向传播、梯度下降这些术语吓住,或者认为神经网络是一个神秘的黑盒,让人捉摸不透。但其实,抛开这些复杂的细节,神经网络的本质远比我们想象的简单:它只是一个函数。只不过,和传统机器学习模型一样,这个函数是可学习的,也就是说它的行为可以通过数据来调整。

简单来说,神经网络的核心逻辑就是接收输入、处理信息、输出结果。而所谓的“学习”,就是让这个函数在数据的引导下,慢慢调整自己,最终能够成功完成我们给它的任务。在这一节,我们将彻底抛开框架、代码等具体实现,只从核心概念出发,帮你建立对神经网络的整体认识,为后续的学习打下坚实的基础。

1.1.1 从输入到输出:机器学习的本质是在找映射

要理解神经网络,我们首先要跳出神经网络这个名词本身,先看它所解决的核心问题。其实,绝大多数机器学习任务,本质上都可以归结为同一个问题:

根据给定的输入,得到我们需要的输出。

我们可以通过几个常见的例子,直观感受这种从输入到输出的映射关系:

  • 图像分类任务:输入一张加菲猫的图片,输出“加菲猫”这个类别标签;
  • 情感分析任务:输入一句“为什么今天要上学”,输出“负面情绪”;
  • 时序预测任务:输入过去 7 天的气温数据,输出明天的气温;
  • 机器翻译任务:输入一句英文“I love deep learning”,输出对应的中文“我爱深度学习”。

这些任务看似毫无关联,背后却有着共同的逻辑:我们需要找到一种规则,能够将输入数据转化为我们需要的输出。如果用数学语言来表达这种规则,就是我们熟悉的函数表达式:

\[ y = f(x) \]

这里的 \(x\) 表示输入,\(y\) 表示输出,而 \(f\) 就是我们需要寻找的映射规则,也就是我们常说的“模型”。

所以,机器学习的核心目标,本质上就是找到一个合适的函数 \(f\),让它能够准确地完成从输入到输出的映射。而神经网络,就是实现这个目标的一种自动化工具。

1.1.2 为什么普通函数无法满足需求?

看到这里,你可能会有疑问:既然核心是找函数,那我们用初中、高中所学的一次函数、二次函数,或者简单的分段函数,不也能完成映射吗?为什么还要专门设计神经网络这种复杂的模型?

答案很简单:现实世界的映射关系,远比我们想象的复杂。

对于一些简单问题,比如根据商品单价和数量,计算总价格,我们用一次函数 \(y = kx + b\) 就能解决。但在深度学习所处理的图像、语音、文本等任务中,输入和输出之间的关系是极其复杂的。一张图片的类别,不是由某一个像素决定的,而是由像素之间的空间关系、局部纹理、高层语义(比如狗的尾巴特征,兔子的耳朵形状)共同决定的;一句话的情感倾向,也不是由单个词语决定的,而是依赖于上下文、语序、语气甚至隐含的语义。

具体来说,这些复杂任务的核心难点的在于:

  • 输入维度极高。比如一张 224x224 的彩色图片,输入维度高达150528;
  • 输入与输出的关系是非线性的,无法用简单的线性函数描述;
  • 有效模式是多层次的。比如图像先有边缘,再组成形状,最后形成物体;
  • 规律分布极其复杂。同一类任务的有效特征,可能分散在大量数据中,无法手动提取特征。

此时,我们的简单函数就显得力不从心了。它们只能捕捉最粗糙的趋势,无法刻画这些复杂的模式和关系。因此,我们需要的不是随便找一个函数,而是要找一个表达能力足够强、足够灵活、能够适配复杂映射关系的函数。而神经网络,正是为了解决这个问题而诞生的。

1.1.3 神经网络的本质:可学习的参数化函数

回到我们最初的问题:神经网络到底是什么?

从机器学习的核心视角出发,最简洁、也最精准的定义是:

神经网络本质上是一类参数化函数。

所谓“参数化函数”,就是说这个函数的具体行为(也就是映射规则),不是固定不变的,而是由一组参数决定的。同一个函数形式,只要调整参数,就可以表现出完全不同的映射效果。

因此,我们可以将神经网络的函数形式改写为:

\[ y = f(x; \theta) \]

其中,\(\theta\) 就是神经网络的参数集合,它们共同决定了函数 \(f\) 如何处理输入 \(x\)、最终输出什么样的 \(y\)。我们训练模型的过程,本质上就是不断调整参数 \(\theta\) 的取值,让函数 \(f\) 的输出越来越接近我们希望的输出。

这个定义里,有三个关键词必须牢牢记住,它们是理解神经网络的核心:

  1. 函数:无论神经网络内部结构多复杂,本质上仍然是在做输入到输出的映射,和我们熟悉的普通函数没有本质区别;
  2. 参数化:神经网络不是一套固定的规则,而是一个带参数的函数。参数不同,函数的行为就不同。
  3. 可学习:这些参数不需要我们人工手动设置,而是可以通过数据自主调整。这也是神经网络能学习的核心原因。

很多初学者会陷入一个误区,认为神经网络就是很多神经元堆叠在一起。其实,神经元堆叠只是它的表现形式,而可学习的参数化函数才是它的本质。抓住这个本质,后续的所有知识点(比如反向传播、梯度下降)都会变得容易理解。

1.1.4 “可学习”的真正含义:参数的迭代优化

我们反复强调神经网络是可学习的,那这种“可学习”到底是什么意思?难道是让模型像人一样理解数据、记住规则吗?

其实不然。神经网络的学习,本质上是一个参数迭代优化的过程,和人类的学习理解有着本质区别。我们可以用一个简单的类比,理解这个过程:

把神经网络想象成一个可调的水龙头,参数就是水龙头的旋钮。一开始,我们把水龙头打开(参数随机初始化),水流要么太大、要么太小(输出不准确);我们观察水流的大小(输出结果),和我们期望的水流大小(目标结果)对比,判断旋钮拧得是否到位(计算偏差);然后根据偏差,慢慢调整旋钮(调整参数);反复这个过程,直到水流大小符合我们的期望(输出准确)。

具体来说,神经网络的学习过程可以分为 5 个步骤:

  1. 初始化参数:训练开始前,给参数 \(\theta\) 赋予一组随机值,此时模型的输出是粗糙、甚至无意义的;
  2. 模型预测:将输入 \(x\) 输入模型,根据当前的参数,得到输出 \(y\)
  3. 计算偏差:对比模型输出 \(y\) 和真实目标值,判断模型做得好不好(这一步会用到后续要学的损失函数);
  4. 调整参数:根据偏差的大小和方向,调整参数 \(\theta\) 的取值,让模型的输出更接近目标;
  5. 重复迭代:重复步骤2-4,直到模型的输出足够准确,参数不再需要大幅调整。

所以,神经网络的学习,并不是灌输规则,也不是理解概念,而是通过反复调整参数,让函数逐步逼近我们期望的映射关系。这个视角很重要。因为一旦从“函数”和“参数调整”的角度去看神经网络,我们就能理解后面的很多概念。为什么需要损失函数?因为我们要衡量现在这个函数做得好不好;为什么需要反向传播?因为我们要知道参数该怎么调;为什么会有优化问题?因为参数空间很大,找到更好的函数并不容易。当然,如果现在你还不完全理解这个过程,不用担心,后面我们会通过具体的例子和代码来一步步演示这个过程。

1.1.5 为什么叫“网络”?从生物神经到人工结构

既然神经网络的本质是函数,那为什么要叫“网络”呢?这就要从它的命名起源说起:它的设计灵感,来自于生物神经系统。

在我们的大脑中,有数十亿个神经元,每个神经元都会接收来自其他神经元的信号,经过整合处理后,再将信号传递给下一个神经元。单个神经元的功能很简单,但当大量神经元相互连接、形成一个复杂的网络时,就能够完成感知、思考、记忆等复杂的功能。这就是生物神经网络。

人工神经网络(Artificial Neural Networks, ANNs)就是借鉴了生物神经网络的结构。它将许多简单的计算单元(模拟生物神经元)组织在一起,让前一个计算单元的输出,成为后一个计算单元的输入,形成一个相互连接的网络结构。

需要注意的是,人工神经网络只是借鉴了生物神经的结构理念,并不是完全模仿生物神经的工作机制。现代神经网络和真实的大脑神经还有很大的差距。“神经元”“连接”“激活”这些说法,更多是历史沿用的命名习惯,方便我们理解其结构。

对于我们初学者来说,更重要的不是纠结和生物神经的区别,而是理解“网络”的核心含义:

不是一个不可分割的整体,而是由许多简单的变换单元,通过连接组合而成的结构。

也正因为如此,我们常常会用“层”来描述神经网络。这些相互连接的计算单元,会按阶段组织成若干层,输入数据先经过第一层处理,再传递到第二层,依次递进,最后通过最后一层输出结果。这种分层结构,也是神经网络能够处理复杂任务的关键。

1.1.6 深度的意义:分层处理复杂信息

说完了层,我们来聊聊深度。

很多初学者会误以为,深度就是神经网络的层数多,这其实是表面现象。真正的深度,指的是神经网络能够通过多层连续的变换,将复杂的映射拆分成多个简单的子任务,分层处理信息。

简单来说,深度的核心意义,是提供了一种分层组织信息的方式。面对复杂任务时,我们不需要让模型一步到位完成从输入到输出的映射,而是可以让它分阶段处理:前面的层处理基础、简单的模式,后面的层在前面的基础上,进一步整合、提炼,形成更抽象、更高级的特征,最终完成复杂的映射。

举个例子,在图像分类任务中,神经网络的分层处理过程是这样的:

  • 浅层(前面的层):主要识别图像的基础特征,比如边缘、纹理、颜色;
  • 中层(中间的层):将浅层识别的基础特征组合起来,形成局部形状,比如“小狗的尾巴”“兔子的耳朵”;
  • 深层(后面的层):将中层的局部特征进一步整合,形成对整个物体的认知,比如“这是一只小狗”“这是一只兔子”。

从数学形式上,我们可以将一个多层神经网络表示为:

\[ \hat{y} = f_L(f_{L-1}(\cdots f_2(f_1(x)) \cdots)) \]

其中,\(f_1, f_2, \dots, f_L\) 分别代表每一层的变换函数,\(L\) 就是神经网络的层数(深度)。随着层数的增加,模型能够逐步将原始输入,转化为更适合当前任务的内部表示,从而更好地完成复杂映射。

1.1.7 神经网络真正学到的是什么?

到这里,很多人可能会有一个疑问:模型训练完成后,到底学到了什么?是学到了一套规则,还是学到了某种知识?

一个常见的误解是,神经网络学到了“如果看到 A,就输出 B”这样的显式规则。但实际上,神经网络真正学到的,并不是一份写死的规则列表,而是:

一组最优的参数配置,以及由这组参数所决定的函数行为。

也就是说,训练结束后,模型内部保存的,不是识别猫狗的规则,而是一套经过优化的参数 \(\theta\)。当新的输入(比如一张新的动物图片)到来时,模型会根据这套参数,自动完成输入的变换、特征的提取,最终输出对应的结果。这个过程,不需要人工干预,也不需要模型理解什么是猫什么是狗,只是参数驱动下的函数映射,一套纯数学上的计算。

其实,神经网络是将数据中的统计规律,通过参数编码进了函数本身。比如,在动物图片的训练数据中,“猫有尖耳朵,圆眼睛”这种统计规律,会被转化为参数的取值。当新的图片中出现这些特征时,模型就能通过参数的作用,判断它是猫,而不是狗。这也解释了为什么神经网络有时会犯错。比如,当一张图片中的兔子,有着和猫相似的尖耳朵、圆眼睛时,模型可能会把兔子误判成猫。因为它学到的是参数驱动的特征映射,而不是真正理解了猫和兔子的本质区别。

Tip

B 站上有一个视频,叫《如何分辨柴犬和面包》,用一种搞笑的方式展现了神经网络在图像分类任务中可能会犯的错误。分辨柴犬和面包对人类来说轻而易举,但对神经网络来说却是一个挑战。感兴趣的读者可以去看看这个视频

理解了这一点,对我们后续学习泛化能力、过拟合等知识点至关重要。我们训练模型,本质上是让它学到数据中的通用规律,而不是记住训练数据本身。如果模型只是记住了训练数据,而没有学到通用规律,就无法处理新的、未见过的数据。这就是过拟合。

1.1.8 神经网络的通用性:为什么能适配多种任务?

既然神经网络本质上只是一个参数化函数,为什么它能被应用在图像、语音、自然语言、推荐系统等这么多不同的领域?

核心原因只有一个:这些任务,都可以被抽象成输入到输出的映射问题。

图像分类是图像到类别的映射,语音识别是语音信号到文本的映射,机器翻译是一种语言到另一种语言的映射,推荐系统是用户和物品信息到偏好预测的映射,等等。无论任务表面上多么不同,核心逻辑都是一样的。

而神经网络的优势,就在于它提供了一种通用的、灵活的函数建模方式:它不需要为每个任务单独设计一套规则,只需要通过调整参数,就能适配不同任务的映射需求。更重要的是,它擅长处理高维、非线性、复杂的映射关系。这正是现实世界中大多数任务的特点。

当然,不同任务之间也有差异,因此需要不同的网络结构。处理图像时,我们需要关注空间特征,会用到卷积神经网络;处理文本时,我们需要关注序列关系和上下文,会用到循环神经网络或注意力机制;处理推荐问题时,我们需要关注用户和物品的特征交互,会用到协同过滤相关的网络结构。

但这些差异,只是函数的具体形式不同,并没有改变神经网络可学习的参数化函数的本质。只要一个任务能够被转化为数据驱动的映射学习,神经网络就有可能成为解决它的有效工具。

1.1.9 本章小结

这一节我们先把神经网络放回到一个最简单的视角里:它本质上就是一个函数。它接收输入,经过一系列计算,最后得到输出。图像分类、情感分析、机器翻译这些任务,表面上差别很大,但都可以理解成从输入到输出的映射问题。

神经网络特殊的地方在于,它不是一个固定不变的函数,而是一个可学习的参数化函数。参数决定了这个函数具体怎么工作,而训练的过程,就是不断根据数据调整这些参数。所谓深度,也可以理解成模型通过多层变换,把原始输入一步步处理成更适合当前任务的表示。

不过,到目前为止,我们只是说模型要输出得更准确,但还没有说明怎么判断准确不准确。模型现在做得好不好,和目标结果差了多少,这需要一个明确的衡量标准。这个标准,就是下一节要讲的损失函数(Loss Function)