笔者注
神经网络的前向传播(Forward Propagation)是指输入数据从输入层颠末各隐藏层转达到输出层,逐层盘算激活值的过程。这一过程不涉及参数更新,重要用于天生猜测结果或为反向传播提供中央值。如果觉得明白起来过于抽象,就把这个过程作为为了得到结果所需要做的须要过程好了。
1. 神经网络结构基础
之前笔记先容过
神经网络由多层神经元构成,一样平常有3层结构:
- 输入层:接收原始数据。
- 隐藏层:1个或多个中央层,通过非线性变更提取特性。
- 输出层:天生最终猜测结果。
- 神经元连接:每层神经元通过带权重的边与下一层神经元相连,权重决定输入信号的重要性。
2. 前向传播核心步骤
假设神经网络有L层,第l层的输入为,输出为。每一层的盘算分为两步:
步骤1:线性变更(Linear Transformation)
- 公式:
- :第l层的权重矩阵(维度为 )。
- :第l层的偏置向量(维度为 )。
- :第l-1层的激活值(输入)。
- :第l层的线性组合结果(未激活值)。
步骤2:非线性激活(Non-linear Activation)
- 公式:
- :激活函数(如ReLU、sigmoid、tanh等)。
- 作用:引入非线性,使神经网络能学习复杂模式。
3. 逐层盘算示例
以一个简朴的3层网络(输入层→隐藏层→输出层)为例:
1. 输入层到隐藏层:
- 输入数据 (假设X为样本矩阵,维度为,m为样本数)。
- 盘算 。
- 激活:。
2. 隐藏层到输出层:
- 盘算 。
- 输出层激活(根据任务选择函数):
- 回归任务:线性激活。
- 分类任务:Softmax激活(输出概率分布)。
4. 激活函数的选择
- 常见激活函数:
- Sigmoid:输出范围(0,1),适合二分类。
- ReLU:盘算高效,缓解梯度消失()。
- Softmax:输出层多分类常用,将值归一化为概率分布。
- 选择依据:根据任务类型(分类/回归)和网络深度(制止梯度问题)。
5. 矩阵运算的高效性
- 向量化盘算:通过矩阵乘法同时处理多个样本,制止循环。
- 示例:如有m个样本,每个样本的输入为 ,则 ,矩阵运算可批量盘算全部样本的激活值。
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([[0.1, 0.2], [0.3, 0.4], [0.5, 0.6]]).T
- # 隐藏层神经元数量
- n_hidden = 3
- # 输入层神经元数量
- n_input = X.shape[0]
- # 输出层神经元数量
- 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企服之家,中国第一个企服评测及商务社交产业平台。 |