从神经元到深度网络:神经网络为什么能起作用

一个神经元可以做什么

神经元是神经网络的基本计算单元。一个神经元接收多个输入,每个输入带有权重,神经元把这些输入加权求和,再加上偏置,然后通过一个激活函数输出结果。

单个神经元的计算过程可以用如下公式表示:

其中,加权求和部分为:

tex 复制代码
z = w₁x₁ + w₂x₂ + ... + wₙxₙ + b = Σᵢ₌₁ⁿ wᵢxᵢ + b

经过激活函数后,神经元的最终输出为:

tex 复制代码
y = f(z) = f(Σᵢ₌₁ⁿ wᵢxᵢ + b)

单个神经元本质上是一个线性分类器。它可以在输入空间中画出一条决策边界,把数据分成两类。例如,给定一组带有标签的点,一个神经元可以学习一条直线,把正类和负类分开。这就是逻辑回归的数学形式。当使用 Sigmoid 激活函数时,输出可以表示为:

tex 复制代码
y = σ(w·x + b) = 1 / (1 + e^(-(w·x + b)))

一个神经元能完成的任务包括:

  • 二分类:判断一封邮件是否为垃圾邮件、一个样本是否属于某个类别。
  • 线性回归:拟合一条直线,预测连续数值,比如根据面积预测房价。
  • 特征组合:对输入做加权求和,相当于把多个特征组合成一个新的得分。

但单个神经元的能力有限。它只能处理线性可分的问题。如果数据在原始空间中无法用一条直线分开,单个神经元就无能为力。经典的异或(XOR)问题就是反例:四个点无法用一条直线分成两类。

一层神经元可以做什么

一层神经元由多个神经元并列组成,每个神经元都接收相同的输入,但各自有不同的权重和偏置。这一层可以同时输出多个结果,相当于在输入空间里画出多条决策边界。

一层神经元可以完成:

  • 多分类:每个输出神经元对应一个类别,取得分最高的作为预测结果,这就是 Softmax 分类器的思想。
  • 多输出回归:同时预测多个数值,比如同时预测温度、湿度和风速。
  • 特征变换:把原始输入映射到新的特征空间,为后续处理提供更丰富的表示。

然而,一层神经元仍然只能表达线性决策边界。无论这一层有多少个神经元,它们组合起来依然是输入的线性函数。对于非线性可分的数据,比如螺旋形分布、环形分布,一层网络依然无法正确分类。

为什么要多层

多层神经网络在输入和输出之间加入一个或多个隐藏层,每一层的输出作为下一层的输入,层与层之间通过非线性激活函数连接。正是这些非线性激活函数,让网络具备了表达复杂函数的能力。

多层网络能解决单层网络无法解决的问题:

  • 非线性分类:隐藏层可以把原始输入变换到新的空间,在新空间中数据变得线性可分。异或问题只需要一个隐藏层就能解决。
  • 特征抽象:浅层学习简单特征,深层学习更抽象的特征。在图像任务中,第一层可能学习边缘,第二层学习纹理,更深层学习物体部件。
  • 函数逼近:通用逼近定理指出,只要隐藏层有足够多的神经元,一个前馈网络就能以任意精度逼近任意连续函数。

层数越多,网络能表达的函数越复杂,但也带来训练难度增加、过拟合风险上升等问题。因此,选择多少层、每层多少神经元,需要在表达能力和泛化能力之间做权衡。

非线性激活函数为什么关键

要理解这个问题,先要弄清楚"线性"和"非线性"到底指什么。所谓线性,是指输出与输入之间满足叠加原理:把两个输入相加后经过函数,等于分别经过函数再相加;把输入放大 k 倍后经过函数,等于函数输出也放大 k 倍。用数学语言说,函数 f 满足 f(a+b)=f(a)+f(b) 且 f(kx)=kf(x) 时,它就是线性的。直线 y=kx+b 是线性函数,平面、超平面也都是线性变换。

非线性则相反:输出与输入之间不满足叠加原理,函数图像是弯曲的。比如 y=x²、y=sin(x)、y=1/(1+e^(-x)) 都是非线性函数,它们的图像是曲线而不是直线。非线性意味着函数可以"拐弯",可以改变方向,因此能表达直线无法表达的复杂形状。

那么激活函数是怎么引入非线性的呢?关键在于它作用在加权求和的结果 z 上,输出 f(z)。如果 f 是线性函数,比如 f(z)=z,那么无论网络有多少层,每一层都只是对输入做一次线性变换,多层叠加后仍然等价于一个线性变换,整体还是直线或平面,表达能力不会增强。但一旦 f 是非线性函数,比如 Sigmoid、Tanh 或 ReLU,每一层的输出就会"弯曲",不再是输入的简单线性组合。层与层之间经过这种弯曲,网络就能逐步把输入空间扭曲、折叠,最终把原本纠缠在一起的数据点分开。

打个比方:线性变换就像用一把直尺去切数据,只能切出直线边界;而非线性激活函数则像一把可以任意弯曲的剪刀,能把数据空间揉捏、拉伸,让原本无法用直线分开的类别,在新的空间里变得可以一刀切开。异或问题之所以单层网络解决不了,就是因为四个点无法用一条直线分开;而加入一个带非线性激活函数的隐藏层后,网络可以把这四个点映射到新的空间,让它们变得线性可分。

激活函数是神经网络中引入非线性的核心手段。如果没有激活函数,无论网络叠加多少层,每一层都只是对输入做线性变换,最终整个网络仍然等价于一个线性模型,表达能力与单层网络没有本质区别。正是非线性激活函数,让多层网络能够逼近任意复杂的函数。

常见的非线性激活函数有以下几种:

  • Sigmoid:输出范围在 0 到 1 之间,适合作为概率输出。但它的导数在两端趋近于 0,容易造成梯度消失,导致深层网络训练困难。
  • Tanh:输出范围在 -1 到 1 之间,均值为 0,比 Sigmoid 更容易收敛。但同样存在两端饱和、梯度消失的问题。
  • ReLU:当输入大于 0 时输出等于输入,小于等于 0 时输出为 0。计算简单、收敛快,是目前最常用的激活函数之一。缺点是负区间梯度恒为 0,可能导致部分神经元"死亡"。
  • Leaky ReLU:在负区间给一个很小的斜率,避免神经元完全失活,缓解了 ReLU 的死亡问题。
  • Softmax:通常用于输出层,把多个神经元的输出转换为概率分布,所有类别的概率之和为 1,适合多分类任务。

非线性激活函数的作用可以从两个角度理解。第一,它让每一层的输出不再是输入的简单线性组合,从而允许网络在特征空间中做更复杂的变换,把原本线性不可分的数据映射到可分的新空间。第二,它保证了多层堆叠的有效性------只有引入非线性,深层网络才能表达比单层更丰富的函数族,这也是通用逼近定理成立的前提。

在实际使用中,激活函数的选择会影响训练的收敛速度和最终效果。隐藏层通常优先考虑 ReLU 及其变体,输出层则根据任务类型选择:二分类用 Sigmoid,多分类用 Softmax,回归任务一般不加激活函数。理解每种激活函数的特性,才能在设计网络时做出合理选择。

关键点:激活函数个神经元引入非线性数值

但是单个神经元无法造出弯曲的决策边界,决策边界依旧是直线,真正得到非线性决策边界,需要一层里面有多个神经元

总结:单个神经元、一层神经元、多层神经元分别起什么作用

把前面几节的内容串起来,可以用一句话概括三者的分工:**单个神经元负责画一条直线,一层神经元负责画多条直线,多层神经元负责把直线弯折成任意形状。**下面分别展开。

  • 单个神经元:本质是一个线性分类器,在输入空间里画出一条决策边界,把数据分成两类。它能做二分类、线性回归和简单的特征组合,但只能处理线性可分的问题。遇到异或这类无法用一条直线分开的数据,单个神经元就无能为力。
  • 一层神经元:由多个神经元并列组成,每个神经元都接收相同的输入,但各自有不同的权重和偏置。这一层可以同时画出多条决策边界,从而完成多分类、多输出回归和特征变换。但无论这一层有多少个神经元,它们组合起来依然是输入的线性函数,决策边界仍然是直线,依然无法处理非线性可分的数据。
  • 多层神经元:在输入和输出之间加入一个或多个隐藏层,层与层之间通过非线性激活函数连接。正是这些非线性激活函数,让网络能把直线弯折、把输入空间扭曲折叠,从而表达任意复杂的函数。多层网络可以解决异或问题、自动学习从低级到高级的特征,并逼近任意连续函数。

所以三者的关系是层层递进的:**单个神经元是基础单元,一层神经元扩展了输出的数量,多层神经元借助非线性激活函数突破了线性表达的天花板。**层数越多,网络能表达的函数越复杂,但训练难度和过拟合风险也随之上升,需要在表达能力和泛化能力之间做权衡。

神经网络为什么能起作用

一句话核心原理:神经网络本质是一个万能函数拟合器。它通过多层非线性变换,在海量数据里学习输入到输出之间的隐藏映射关系。简单说,它在找一个数学公式,把输入(文字、图片)映射成想要的答案,不需要我们手动写规则。

神经网络能起作用,核心在于它通过大量参数拟合数据中的规律,并用梯度下降不断优化这些参数。下面结合数学原理,把训练过程完整展开。

训练的整体流程

训练一个神经网络,本质是在求解一个优化问题:找到一组参数(权重 W 和偏置 b),让损失函数 L 尽可能小。整个过程可以概括为四个步骤的循环:前向传播、计算损失、反向传播、参数更新。下面用一张 图展示整体流程:

第一步:前向传播

前向传播就是让数据从输入层流向输出层,逐层计算。以第 l 层为例,它接收上一层输出 a(l-1),先做线性变换,再经过激活函数:

tex 复制代码
z^(l) = W^(l) · a^(l-1) + b^(l)
a^(l) = f(z^(l))

其中 W(l) 是第 l 层的权重矩阵,b(l) 是偏置向量,f 是激活函数。数据经过每一层都被变换一次,最终在输出层得到预测值 ŷ。整个过程就是一系列矩阵乘法和激活函数的复合,数学上可以写成:

tex 复制代码
ŷ = f^(L)( W^(L) · f^(L-1)( W^(L-1) · ... f^(1)( W^(1) · x + b^(1) ) ... ) + b^(L) )

前向传播本身不改变任何参数,它只是用当前参数把输入映射成输出,为后续计算损失和梯度做准备。

第二步:计算损失

有了预测值 ŷ 和真实标签 y,就需要一个标尺来衡量两者差距,这个标尺就是损失函数。损失函数的选择取决于任务类型:

  • 回归任务:常用均方误差(MSE),L = (1/m) · Σ(ŷᵢ - yᵢ)²,衡量预测值与真实值的平方距离。
  • 二分类任务:常用二元交叉熵,L = -(1/m) · Σ yᵢ·log(ŷᵢ) + (1-yᵢ)·log(1-ŷᵢ)
  • 多分类任务:常用交叉熵损失,L = -(1/m) · Σ Σ yᵢⱼ·log(ŷᵢⱼ),配合 Softmax 输出使用。

损失函数的值越小,说明预测越接近真实标签。训练的目标就是让这个标量 L 不断下降。注意,损失是参数的函数------参数变了,预测变了,损失也随之变化。所以我们可以把 L 看成关于所有 W 和 b 的多元函数,接下来的任务就是找到让 L 最小的那组参数。

第三步:反向传播

反向传播是训练的核心,它解决一个关键问题:损失 L 对每一个参数 W(l)、b(l) 的偏导数(梯度)是多少?有了梯度,才知道每个参数该往哪个方向调、调多少。下面把这一步拆开讲清楚。

**先理解为什么需要链式法则。**前向传播是一层层复合出来的:输入 x 先经过第 1 层得到 a(1),再经过第 2 层得到 a(2),依此类推,最后得到预测值 ŷ,再由 ŷ 算出损失 L。也就是说,L 并不是直接由某一层的 W(l) 决定的,而是经过了一连串的中间变量才传到 W(l) 上。微积分告诉我们,复合函数的导数要用链式法则来求------把这条链上每一段的导数乘起来,就得到损失对某个参数的梯度。

用一个生活中的例子来理解。假设你是一家公司的老板,想弄清楚「顾客满意度」最终对「公司市场估值」有多大影响。这条影响链是这样的:顾客满意度影响产品销量,产品销量影响公司利润,公司利润影响公司市场估值。每一步都是环环相扣的:

  • 顾客满意度 → 产品销量:顾客越满意,回头客越多、口碑越好,产品卖得越多。
  • 产品销量 → 公司利润:卖得越多,收入越高,利润自然越大。
  • 公司利润 → 市场估值:利润越高,投资者越看好,公司估值越高。

现在问题来了:如果顾客满意度提高了 1 分,市场估值会提高多少?你不能直接回答,因为满意度并不直接决定估值,它要经过「销量 → 利润 → 估值」这条长长的链条才能传导过去。正确的做法是:先看满意度每提高 1 分,销量增加多少;再看销量每增加 1 件,利润增加多少;最后看利润每增加 1 元,估值增加多少。然后把这三段变化率乘起来,就得到满意度对估值的总影响。

这正是链式法则的核心思想:**当一个结果要经过多个中间环节才能影响到最终目标时,就把每一段的变化率相乘。**神经网络里的反向传播也是一模一样的道理------损失 L 不直接由某一层的权重 W(l) 决定,而是经过「W(l) → z(l) → a(l) → ... → ŷ → L」这条链传过去的。所以求梯度时,就把链上每一段的导数乘起来,这就是链式法则。

**再看梯度是怎么一层层传回来的。**以第 l 层的权重 W(l) 为例,损失对它的梯度可以分解为三段的乘积:

tex 复制代码
∂L/∂W^(l) = ∂L/∂a^(l) · ∂a^(l)/∂z^(l) · ∂z^(l)/∂W^(l)

这三段各有明确的含义:

  • ∂L/∂a(l):损失对第 l 层输出的梯度。这一项不是在本层算出来的,而是由后一层(第 l+1 层)反向传回来的------这正是"反向"二字的由来。
  • ∂a(l)/∂z(l):激活函数的导数。比如 Sigmoid 的导数是 σ'(z) = σ(z)·(1-σ(z)),这一项只和本层的激活函数有关,计算起来很简单。
  • ∂z(l)/∂W(l) = a(l-1):加权和对权重的导数,恰好等于上一层的输出,在前向传播时就已经算好了,直接拿来用即可。

**关键洞察:计算顺序和前向正好相反。**前向是从输入层往输出层推,反向则是从输出层开始,把误差逐层往回传。每一层只需要知道后一层传来的梯度 ∂L/∂a(l),再乘上本层激活函数的导数和上一层的输出,就能算出自己参数的梯度,然后继续把 ∂L/∂a(l-1) 传给前一层。这种逐层传递的方式,让梯度计算的总计算量与前向传播相当,而不是对每个参数单独求导------如果对几百万个参数逐个求导,计算量会大到无法接受。这正是反向传播让大规模神经网络训练成为可能的原因。

第四步:参数更新(梯度下降)

拿到梯度后,就用梯度下降法更新参数。梯度指向损失函数上升最快的方向,所以参数要沿着梯度的反方向移动,才能让损失下降。更新公式为:

tex 复制代码
W^(l) ← W^(l) - η · ∂L/∂W^(l)
b^(l) ← b^(l) - η · ∂L/∂b^(l)

比如这条曲线在减区间,它的区间上的点梯度是小于0的,减区间上的点继续前移(参数增大)损失会更小

在增区间,区间上的点(待更新参数)梯度大于0,我们需要参数后移,损失就会变小,所以

其中 η 是学习率,控制每一步迈多大。学习率过大会导致震荡甚至发散,过小则收敛缓慢。下面用一张 Mermaid 图展示梯度下降的几何含义:

把四个步骤串起来,一次完整的训练迭代就是:前向传播算出预测,损失函数算出差距,反向传播算出每个参数的梯度,梯度下降更新所有参数。然后带着新参数重复这个过程,几十万甚至上亿次迭代后,损失逐步降到很低,预测越来越接近真实标签。所有学到的知识,最终都存储在权重矩阵 W 和偏置 b 里。

神经网络能起作用的原因可以归纳为以下几点:

  • 非线性表达能力:激活函数引入非线性,使网络能拟合复杂函数。
  • 层次化特征学习:多层结构让网络自动从数据中学习从低级到高级的特征,无需人工设计。
  • 大规模参数与数据驱动:现代网络动辄上亿参数,配合海量数据和强大算力,能捕捉数据中细微的模式。
  • 优化算法的进步:反向传播、动量、自适应学习率等优化方法让大规模训练稳定可行。

需要说明的是,神经网络并非万能。它依赖高质量数据,容易过拟合,且可解释性较差。理解它的能力边界,才能在实际问题中合理使用。

相关推荐
Tangyuewei1 小时前
给老 Spring 项目装个 AI Agent
java·人工智能·spring
工业HMI实战笔记1 小时前
玩具制造HMI:注塑成型的快速换模与质量监控界面
人工智能·学习·交互·制造
樊小肆1 小时前
离谱,每轮请求 25% 的 token,竟在重发模型想完就扔的内心独白
前端·人工智能·agent
游戏智眼1 小时前
HarmonyOS 7 适配升级:NIM SDK 释放端侧 AI 与网络能力
人工智能·harmonyos
智驭未来掌门人1 小时前
一个网关,三种接法,一个能落地的 Agent:llm-api-gateway-cli 项目介绍
人工智能
wordbaby2 小时前
混合检索:两全其美的艺术
人工智能·算法
Amy187021118232 小时前
数据中心电气接点测温:从“被动抢修”到“主动预警”的安全革命
人工智能·安全
jimmyleeee2 小时前
GEN AI安全:威胁全景---从训练到运行的攻防实战
人工智能·安全
阿里云大数据AI技术2 小时前
DataWorks Data Agent 实战课堂(八):数据质量巡检服务
人工智能·agent