神经网络数学原理(1)前向传播
神经网络(Neural Networks)是一种模拟人脑神经元连接模式的计算模型,广泛应用于模式识别、机器翻译、语音识别等领域。其基本结构包括输入层、隐藏层和输出层。输入层接收外部数据,隐藏层通过加权连接和激活函数进行特征提取,输出层生成最终的预测结果。核心目的是通过不断调整权重来拟合目标函数,最终实现对未知数据的预测。更具体来说,神经网络通过一系列的计算(前向传播)和优化过程(反向传播)来调整网络中每一层的权重,直到网络能够最小化预测值与实际值之间的误差(通常通过某种损失函数来衡量误差)。
以下是一个简单的过程:
-
前向传播(Forward Propagation):输入数据通过神经网络的各层进行传递,经过每层的加权求和和激活函数处理,输出一个预测结果。
-
损失计算(Loss Calculation):将神经网络的预测结果与实际结果(标签)进行对比,计算出损失值。损失函数通常是均方误差(MSE)、交叉熵等,用于衡量模型预测的准确性。
-
反向传播(Backpropagation):通过梯度下降法或其他优化算法,反向传播损失,计算每一层的梯度,并根据梯度调整各层的权重。
-
权重更新(Weight Update):使用优化算法(如SGD、Adam等)根据梯度信息更新网络的权重,从而减少损失。
通过多次迭代(epoch),网络的权重逐渐调整到一个使得预测结果尽可能接近目标函数的状态,从而实现拟合目标函数的目的。
下图展示MLP网络架构的一个示例:右侧的图由二个隐藏层组成,夹在输入和输层之间。图中的 ”空心圆圈“ 叫做人工神经元或单元,上一层的每个神经元都与下层的每个神经元保持连接。 神经网络的权重定义了神经元之间的连接。
1. 网络结构
- 输入层:3个神经元,输入向量 x=[x1,x2,x3] 。
- 隐藏层:4个神经元,使用ReLU激活函数。
- 输出层:3个神经元,输出类别概率,使用Softmax激活函数。
2. 前向传播
输入层到隐藏层
- 权重矩阵 W1 形状为 4×3。
- 偏置向量 b1=[b11,b12,b13,b14]。
计算线性组合:
应用ReLU激活函数 σ :
a1作为下一个隐藏层的的输入向量。隐藏层1到隐藏层2
- 权重矩阵 W2 形状为 4×4。
- 偏置向量 b2=[b21,b22,b23,b24]。
计算线性组合:
应用ReLU激活函数 σ :
a2作为下一层的输入向量,隐藏层到输出层
- 权重矩阵 W3 形状为 3×4 。
- 偏置向量 b3=[b31,b32,b33,b34] 。
应用Softmax激活函数 :
s就作为输出向量 多分类任务中Softmax 激活函数的作用就是将输出层的线性组合结果 z3 转化为每个类别的 概率。它的核心作用是将一个 实数向量(未归一化的得分)转换成一个 概率分布,每个元素的值介于 0 和 1 之间,并且所有元素的总和为 1。
总结
神经网络中,每个隐藏层的计算过程通常包括线性变换和非线性激活。具体来说,对于第 i 个隐藏层,计算过程如下:
1. 线性变换:
- Wi 是第 i 层的权重矩阵。
- ai−1 是第 i−1 层的激活输出(对于第一个隐藏层,a0 通常是输入数据 x)。
- bi 是第 i 层的偏置向量。
- zi 是第 i 层的线性变换结果。
2. 激活函数:
- σ 是非线性激活函数,比如 ReLU、sigmoid 或 tanh。
- ai 是第 i 层的激活输出,它将作为下一层的输入。
整个过程:
- 线性变换:将前一层的输出通过权重矩阵和偏置向量进行线性组合,得到线性输出 zi 。
- 非线性激活:将线性输出 zi 通过激活函数 σ ,引入非线性,使模型能够学习复杂的模式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库