神经网络前向传播
字数 1106 2025-11-15 10:10:37
神经网络前向传播
-
基础概念
前向传播是神经网络进行预测的核心过程。输入数据从输入层开始,逐层经过加权求和与激活函数处理,最终在输出层生成预测结果。以单个人工神经元为例:- 输入向量 \(x = [x_1, x_2, ..., x_n]\) 与权重向量 \(w = [w_1, w_2, ..., w_n]\) 进行点积运算
- 加上偏置项 \(b\) 得到预激活值:\(z = \sum_{i=1}^{n} w_i x_i + b\)
- 通过激活函数 \(f(\cdot)\)(如 Sigmoid、ReLU)输出最终值:\(a = f(z)\)
-
多层网络的前向传播
在深度神经网络中,前向传播按层顺序进行:- 输入层接收原始数据(如图像像素、文本向量)
- 隐藏层对前一层的输出进行线性变换后应用激活函数,例如第 \(l\) 层的计算:
\(a^{(l)} = f(W^{(l)} a^{(l-1)} + b^{(l)})\)
其中 \(W^{(l)}\) 为权重矩阵,\(a^{(l-1)}\) 为前一层输出 - 输出层根据任务类型选择激活函数(如分类任务用 Softmax,回归任务用线性函数)
-
具体计算示例
以一个三分类任务的神经网络为例:- 输入特征维度为 4,隐藏层有 5 个神经元,输出层 3 个神经元
- 输入数据 \(a^{(0)} = [1.2, -0.5, 2.1, 0.8]\)
- 隐藏层计算(使用 ReLU 激活):
\(z^{(1)} = W^{(1)} a^{(0)} + b^{(1)}\) → \(a^{(1)} = \text{ReLU}(z^{(1)})\) - 输出层计算(使用 Softmax):
\(z^{(2)} = W^{(2)} a^{(1)} + b^{(2)}\) → \(a^{(2)} = \text{Softmax}(z^{(2)})\)
最终输出 \(a^{(2)}\) 表示三个类别的预测概率分布
-
与前向传播相关的特性
- 计算图结构:前向传播构建了从输入到输出的计算路径,为后续反向传播提供基础
- 并行化能力:同层神经元的计算相互独立,可通过 GPU 并行加速
- 数值稳定性:激活函数的选择会影响梯度流动,例如 ReLU 可缓解梯度消失问题
-
实际应用中的优化
- 批量处理:通过矩阵运算同时处理多个样本,提升计算效率
- 内存管理:前向传播需缓存中间结果(如 \(z^{(l)}, a^{(l)}\))供反向传播使用
- 推理优化:在模型部署时,可通过层融合、量化等技术加速前向过程