梦应逍遥 发表于 2025-4-5 22:26:10

吴恩达深度学习复盘(4)神经网络的前向传播

笔者注

神经网络的前向传播(Forward Propagation)是指输入数据从输入层颠末各隐藏层转达到输出层,逐层盘算激活值的过程。这一过程不涉及参数更新,重要用于天生猜测结果或为反向传播提供中央值。如果觉得明白起来过于抽象,就把这个过程作为为了得到结果所需要做的须要过程好了。
1. 神经网络结构基础

之前笔记先容过
 神经网络由多层神经元构成,一样平常有3层结构:
- 输入层:接收原始数据。
- 隐藏层:1个或多个中央层,通过非线性变更提取特性。
- 输出层:天生最终猜测结果。
- 神经元连接:每层神经元通过带权重的边与下一层神经元相连,权重决定输入信号的重要性。
2. 前向传播核心步骤

 假设神经网络有L层,第l层的输入为https://latex.csdn.net/eq?a%5E%7B%28l-1%29%7D,输出为https://latex.csdn.net/eq?a%5E%7B%28l%29%7D。每一层的盘算分为两步:
步骤1:线性变更(Linear Transformation)
 - 公式:https://latex.csdn.net/eq?z%5E%7B%28l%29%7D%20%3D%20W%5E%7B%28l%29%7D%20%5Ccdot%20a%5E%7B%28l-1%29%7D%20+%20b%5E%7B%28l%29%7D
- https://latex.csdn.net/eq?W%5E%7B%28l%29%7D:第l层的权重矩阵(维度为 https://latex.csdn.net/eq?n%5E%7B%28l%29%7D%20%5Ctimes%20n%5E%7B%28l-1%29%7D)。
- https://latex.csdn.net/eq?b%5E%7B%28l%29%7D:第l层的偏置向量(维度为 https://latex.csdn.net/eq?n%5E%7B%28l%29%7D%20%5Ctimes%201)。
- https://latex.csdn.net/eq?a%5E%7B%28l-1%29%7D:第l-1层的激活值(输入)。
- https://latex.csdn.net/eq?z%5E%7B%28l%29%7D:第l层的线性组合结果(未激活值)。
步骤2:非线性激活(Non-linear Activation)
 - 公式:https://latex.csdn.net/eq?a%5E%7B%28l%29%7D%20%3D%20%5Csigma%28z%5E%7B%28l%29%7D%29
- https://latex.csdn.net/eq?%5Csigma%28%5Ccdot%29:激活函数(如ReLU、sigmoid、tanh等)。
- 作用:引入非线性,使神经网络能学习复杂模式。
3. 逐层盘算示例

 以一个简朴的3层网络(输入层→隐藏层→输出层)为例:
1. 输入层到隐藏层:

- 输入数据 https://latex.csdn.net/eq?a%5E%7B%280%29%7D%20%3D%20X(假设X为样本矩阵,维度为https://latex.csdn.net/eq?n%5E%7B%280%29%7D%20%5Ctimes%20m,m为样本数)。
- 盘算 https://latex.csdn.net/eq?z%5E%7B%281%29%7D%20%3D%20W%5E%7B%281%29%7D%20%5Ccdot%20a%5E%7B%280%29%7D%20+%20b%5E%7B%281%29%7D。
- 激活:https://latex.csdn.net/eq?a%5E%7B%281%29%7D%20%3D%20%5Csigma%28z%5E%7B%281%29%7D%29。
2. 隐藏层到输出层:

- 盘算 https://latex.csdn.net/eq?z%5E%7B%282%29%7D%20%3D%20W%5E%7B%282%29%7D%20%5Ccdot%20a%5E%7B%281%29%7D%20+%20b%5E%7B%282%29%7D。
- 输出层激活(根据任务选择函数):
- 回归任务:线性激活https://latex.csdn.net/eq?a%5E%7B%282%29%7D%20%3D%20z%5E%7B%282%29%7D。
- 分类任务:Softmax激活(输出概率分布)。
4. 激活函数的选择

 - 常见激活函数:
- Sigmoid:输出范围(0,1),适合二分类。
- ReLU:盘算高效,缓解梯度消失(https://latex.csdn.net/eq?%5Csigma%28z%29%20%3D%20%5Cmax%280%2C%20z%29)。
- Softmax:输出层多分类常用,将值归一化为概率分布。
- 选择依据:根据任务类型(分类/回归)和网络深度(制止梯度问题)。
5. 矩阵运算的高效性

 - 向量化盘算:通过矩阵乘法同时处理多个样本,制止循环。
- 示例:如有m个样本,每个样本的输入为 https://latex.csdn.net/eq?x_i,则 https://latex.csdn.net/eq?a%5E%7B%280%29%7D%20%3D%20%5Bx_1%2C%20x_2%2C%20...%2C%20x_m%5D,矩阵运算可批量盘算全部样本的激活值。
6. 前向传播的作用

 - 猜测阶段:输入新数据,逐层盘算输出,得到猜测结果。
- 训练阶段:为反向传播提供中央值(如各层的z和a),用于盘算梯度并更新参数。
7.简朴的算法示例代码

import numpy as np

# 定义激活函数
def sigmoid(z):
    return 1 / (1 + np.exp(-z))

# 前向传播函数
def forward_propagation(X, W1, b1, W2, b2):
    # 输入层到隐藏层的线性变换
    z1 = np.dot(W1, X) + b1
    # 隐藏层的激活函数
    a1 = sigmoid(z1)
    # 隐藏层到输出层的线性变换
    z2 = np.dot(W2, a1) + b2
    # 输出层的激活函数
    a2 = sigmoid(z2)
    return a2

# 示例数据
# 输入特征,假设有3个样本,每个样本有2个特征
X = np.array([, , ]).T
# 隐藏层神经元数量
n_hidden = 3
# 输入层神经元数量
n_input = X.shape
# 输出层神经元数量
n_output = 1

# 初始化权重和偏置
# 输入层到隐藏层的权重
W1 = np.random.randn(n_hidden, n_input)
# 隐藏层的偏置
b1 = np.zeros((n_hidden, 1))
# 隐藏层到输出层的权重
W2 = np.random.randn(n_output, n_hidden)
# 输出层的偏置
b2 = np.zeros((n_output, 1))

# 执行前向传播
output = forward_propagation(X, W1, b1, W2, b2)
print("前向传播的输出结果:")
print(output)
    8. 总结

 前向传播的核心是将输入数据通过层层线性变更和非线性激活,最终映射到输出空间。其数学本质是复合函数的嵌套盘算,而矩阵运算的优化使得这一过程在大规模数据上高效运行。明白前向传播是掌握反向传播、梯度下降等神经网络核心算法的基础。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 吴恩达深度学习复盘(4)神经网络的前向传播