神经网络工作原理全面解析
提及人工神经网络,很多人会联想到它与生物神经网络之间的渊源。没错,其设计灵感确实源自我们大脑中神经元的运作机制:当某个神经元兴奋时,它会向邻近的神经元释放化学物质,从而改变后者的电位;一旦电位超过特定阈值,该神经元就会被激活,继续传递信号。而人工神经网络则对这一过程进行了数学抽象——它由大量按层次结
提及人工神经网络,很多人会联想到它与生物神经网络之间的渊源。没错,其设计灵感确实源自我们大脑中神经元的运作机制:当某个神经元兴奋时,它会向邻近的神经元释放化学物质,从而改变后者的电位;一旦电位超过特定阈值,该神经元就会被激活,继续传递信号。而人工神经网络则对这一过程进行了数学抽象——它由大量按层次结构连接的“神经元”构成,能够从输入的计算值中提取特征,并通过分布式并行处理完成信息加工。简单来说,就是通过不断调整内部节点之间的连接权值,来逼近任意复杂的函数,最终实现对真实数据的拟合,从而提升预测的准确性。
听起来有些抽象?没关系,我们先从一个具体的案例入手,完整走一遍神经网络在机器学习中处理数据的全流程。
01 神经网络的实战案例
1.1 案例介绍
实例:训练一个神经网络模型,用于拟合三种广告投放渠道(电视、广播、报纸)与产品销量之间的关系,目标是基于广告投入来预测销量。
样本数据:如下表所示,TV、radio 和 newspaper 是三个特征,sales 是标签(即待预测的值)。
样本数据
1.2 准备数据
#添加引用
import tensorflow as tf
import pandas as pd
import numpy as np
#加载数据
data = pd.read_csv('../dataset/Advertising.csv')
#pd 是数据分析库pandas
# 建立模型 根据tv,广播,报纸投放额 预测销量
print(type(data),data.shape)
### (200, 5)
#取特征 x取值除去第一列和最后一列的值取出所有投放广告的值
x = data.iloc[:,1:-1]#200*3
#y取值最后一列销量的值 标签
y = data.iloc[:,-1] #200*1
1.3 构建神经网络模型
建立顺序模型:Sequential
隐藏层:采用一个多层感知器,包含10个神经元(Dense(10)),输入形状为 (3,),对应三个特征,激活函数选用 ReLU。
输出层:预测一个数值,因此维度为1。
model = tf.keras.Sequential([
tf.keras.layers.Dense(10,input_shape=(3,),activation="relu"),
tf.keras.layers.Dense(1)
])
模型结构如下图所示:
说明:
1)在 Keras 中,Sequential 表示顺序模型。由于层与层之间是全连接的,因此选用这种结构。
2)tf.keras.layers.Dense 是用于添加全连接层的 API。
3)隐藏层共有40个参数:10个神经元,每个神经元有4个参数(w1,w2,w3,b),总计 10×4=40。
4)输出层有11个参数:1个神经元,参数包含10个权重和一个偏置 b,共11个。
5)模型总参数:40+11=51个。
1.4 为模型加入优化器和损失函数
# 优化器adam,线性回归模型损失函数为均方差(mse) model.compile(optimizer="adam",loss="mse")
1.5 启动训练
# 训练模型 model.fit(x,y,epochs=100)
这里 x 是样本特征,y 是样本标签。epochs 是梯度下降中的一个概念:一个完整的数据集通过神经网络一次并返回一次,记为一个 epoch。当数据量较大时,需要将其分成多个小块(batch),这部分将在后面的梯度下降章节详细介绍。
1.6 使用模型进行预测
# 使用该模型在现有数据上预测前10个样本的销量
test = data.iloc[:10,1:-1]
print('测试值',model.predict(test))
以上步骤展示了从构建神经网络模型、训练到预测的完整流程。接下来,我们深入探讨背后的原理。
02 神经元的数学模型
上图展示了一个标准的人工神经元模型。其组成部分包括:
输入 input
(x1, x2, x3) 是来自外部的输入信号,对应一个样本的多个属性或特征——在广告案例中,这代表三种投放方式的费用。
权重 weights
(w1,w2,w3) 是每个输入信号对应的权重值。举例来说,x1 的权重可能是0.92,x2 的权重可能是0.2,x3 的权重可能是0.03,这些权重之和不需要等于1。
偏置 bias
偏置 b 是如何产生的?很多资料会提到表达式 y = wx + b,b 是偏移值,它让直线能够上下移动。从生物学角度理解,脑神经细胞需要一个临界阈值——只有当输入电流/电平大于某个值时,神经元才会兴奋。这个 b 实际上就是该临界值的相反数。换句话说,当 w1*x1 + w2*x2 + w3*x3 >= t 时神经元兴奋,将 t 移到左边,令 b = -t,就得到了 w1*x1 + w2*x2 + w3*x3 + b >= 0。
03 神经网络的训练过程
仍然以广告投放为例。在训练之前先搭建网络,然后填充带有特征和标签的样本数据。训练的核心就是不断更新权重 w 和偏置 b。对于输入层(有10个神经元),每个神经元对应三个特征,因此每个神经元有4个参数(w1,w2,w3,b),全连接时10层共有40个参数。下面是一个单层神经网络(两个神经元)的示意图:
训练流程
整个过程就是反复调整 w 和 b,直到模型的整体误差达到最小。具体流程如下图所示:
04 神经网络相关的核心概念
4.1 反向传播
反向传播算法是一种高效计算数据流图中梯度的技术。其核心思想就是链式法则:每一层的导数等于后一层的导数乘以前一层的输出。误差从输出层反向逐层传播,从而更新参数。
前馈过程:从输入开始,逐层计算每个隐含层的输出,直到输出层。
正向过程
step1:输入层,随机输入第一个 x 值(假设 x=2)。
step2:第一层计算 a = x²。
step3:第二层计算 b = ln(a)。
step4:第三层计算 c = sqrt(b)。
step5:输出层接收 c。
然后开始计算导数并进行反向传播。为了减少计算量,要对已完成的计算结果进行复用。
反向过程
step6:计算 y 与 c 的差值 Δc = c - y,传回 step4。
step7:step4 接收 Δc,计算 Δb = Δc * 2 * sqrt(b)。
step8:step3 接收 Δb,计算 Δa = Δb * a。
step9:step2 接收 Δa,计算 Δx = Δa / (2*x)。
step10:step1 接收 Δx,更新 x(x - Δx),回到 step1 开始下一轮循环。
4.2 梯度下降
梯度下降是机器学习中寻找最优解(曲线最小值)的一种迭代优化算法。它包含两层含义:
梯度:函数当前位置的最快上升方向。
下降:沿着梯度的反方向移动,这样代价函数就会减小。
其中:
θ(n+1):下一个值
θ(n):当前值
-:减号,表示梯度的反方向
η:学习率或步长,控制每一步移动的距离——太大容易错过极值点,太小则收敛过慢
▽:梯度,函数当前位置的最快上升方向
J(θ):函数
梯度下降是迭代过程,需要多次应用该算法才能得到最优结果。欠拟合的状态会随着迭代逐渐改善,最终获得对数据的最佳拟合。
如上图左所示,刚开始学习率较大,下降步长也大;随着接近最小值,学习率自然变小,步长也随之缩小。与此同时,代价函数(也称损失函数)在逐步减小。
在实际应用中,一次性将整个数据集送入计算机往往不现实,因此需要把数据分成小块,逐块送入,每处理完一块就更新一次权重。这就引出了 epoch、batch size 等概念。
epochs
一个完整的数据集通过神经网络一次并返回一次,称为一个epoch。当数据集过大时,就需要拆分成多个小块。
设置 epoch 的个数
完整的数据集需要在同一个网络中多次传递,因为仅仅更新一次(一个 epoch)远远不够。随着 epoch 数量增加,权重的更新次数增多,曲线会从欠拟合逐渐变为过拟合。那么究竟多少个 epoch 才合适?这并没有标准答案,需要根据数据集特性和经验来设定。
batch
当无法一次性通过全部数据时,就把数据集分成几个batch。
迭代
迭代是指完成一个 epoch 所需要的 batch 数。在一个 epoch 中,batch 数等于迭代数。例如,对于2000个训练样本,分成大小为400的 batch(共5个 batch),那么完成一个 epoch 就需要5次迭代。
4.3 损失函数
“损失”是所有样本误差的总和,公式如下(m 为样本数):
常见的损失函数包括:
(1)0-1损失函数
(2)绝对值损失函数
(3)铰链损失函数
(4)对数损失函数
(5)均方差损失函数
(6)交叉熵损失函数
4.4 优化函数
在实例的1.4节中,我们为模型加入了优化器和损失函数:
# 优化器adam,线性回归模型损失函数为均方差(mse) model.compile(optimizer="adam",loss="mse")
这里使用的是 Adam 优化器。神经网络中的优化方法还有很多,下面简要介绍几种常见的:
1) 梯度下降法(Gradient Descent)——最基本也是最重要的方法。
2) 随机梯度下降法(SGD)——每次只用一个样本更新,计算量小但更新不稳定,容易超调。
3) Mini Batch Gradient Descent ——折中方案,每次用一个 batch 计算 loss,batch 大小可自行设定。
4) Momentum ——引入动量,加速梯度下降。
5) Nesterov ——在 Momentum 的基础上先预演一步,提前调整方向。
6) Adagrad ——让每个参数拥有自己的学习率,根据历史梯度平方和自动衰减。优点是训练过程中无需手动调整学习率,缺点是后期学习率过小,可能导致收敛停滞。
7) AdaDelta ——Adagrad 的改进版,解决了后期学习率过小的问题。
8) Adam ——重点介绍。既然不同参数可以拥有不同的学习率,为什么不能拥有不同的动量呢?Adam 正是这样做的:为每个参数同时维护学习率和动量,更新独立性强,既提升了训练速度,又增强了稳定性。
Adam(Adaptive Moment Estimation)公式如下:
通常 ρ1 设为0.9,ρ2 设为0.999。套用一句话:Adam 在实践中表现优秀,胜过了其他自适应方法。
事实上,如果数据比较稀疏,SGD、NAG 和 Momentum 等统一学习率的方法效果往往较差——那些需要快速更新的参数更新慢,而需要慢慢更新的参数可能因数据噪声而波动。因此,稀疏数据更适合使用自适应方法(Adagrad、AdaDelta、Adam)。同样,对于深度或非常复杂的神经网络,使用 Adam 等自适应方法也能更快收敛。
05 总结
最后回顾一下本文的核心内容:
1)人工神经网络灵感来源于生物神经网络,通过增加隐藏层神经元数量,能够按任意精度逼近连续函数,从而提升模型的拟合能力。
2)通过一个完整的实例,展示了如何利用机器学习实现人工神经网络的构建、训练和预测。
3)详细解释了神经网络的训练过程。
4)介绍了反向传播、梯度下降、损失函数、优化函数、epoch、batch size、学习率等关键概念。
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:神经网络工作原理全面解析要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点人工智能行业正从基于测试基准的理论世界转向“真实世界AI”阶段。AI已具备生成、推理与行动能力,下一步需在真实工作流中接收反馈、交付可持续成果,实现从能力展示到生产交付的跃迁。
清华NLP实验室博士毕业生年薪可达600万以上,大厂抢人激烈,甚至建议学生放弃学位直接入职。产业迭代快于教育更新,AI人才缺口达400万。高薪背后,持续产出被看见的成果比文凭更重要,读书与“进厂”并非对立。
DeepSeek与智谱AI被曝秘密自研定制化推理芯片,旨在摆脱对英伟达等厂商的硬件依赖,构建自有算力生态。此举直击AI模型推理成本高、供应受限的痛点,英伟达股价闻讯下跌。国产大模型正从纯算法向软硬一体转型。
黑石旗下QTS终止弗吉尼亚数据中心项目,揭示美国算力中心因电力短缺、配套成本高而频现烂尾。近四成计划项目面临延期。中国“东数西算”统一布局八大枢纽,推动算力高效落地,全球竞争关键转向系统集成能力。
- 日榜
- 周榜
- 月榜
热点快看
