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

打印 上一主题 下一主题

主题 1295|帖子 1295|积分 3885

笔者注

神经网络的前向传播(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.简朴的算法示例代码

  1. import numpy as np
  2. # 定义激活函数
  3. def sigmoid(z):
  4.     return 1 / (1 + np.exp(-z))
  5. # 前向传播函数
  6. def forward_propagation(X, W1, b1, W2, b2):
  7.     # 输入层到隐藏层的线性变换
  8.     z1 = np.dot(W1, X) + b1
  9.     # 隐藏层的激活函数
  10.     a1 = sigmoid(z1)
  11.     # 隐藏层到输出层的线性变换
  12.     z2 = np.dot(W2, a1) + b2
  13.     # 输出层的激活函数
  14.     a2 = sigmoid(z2)
  15.     return a2
  16. # 示例数据
  17. # 输入特征,假设有3个样本,每个样本有2个特征
  18. X = np.array([[0.1, 0.2], [0.3, 0.4], [0.5, 0.6]]).T
  19. # 隐藏层神经元数量
  20. n_hidden = 3
  21. # 输入层神经元数量
  22. n_input = X.shape[0]
  23. # 输出层神经元数量
  24. n_output = 1
  25. # 初始化权重和偏置
  26. # 输入层到隐藏层的权重
  27. W1 = np.random.randn(n_hidden, n_input)
  28. # 隐藏层的偏置
  29. b1 = np.zeros((n_hidden, 1))
  30. # 隐藏层到输出层的权重
  31. W2 = np.random.randn(n_output, n_hidden)
  32. # 输出层的偏置
  33. b2 = np.zeros((n_output, 1))
  34. # 执行前向传播
  35. output = forward_propagation(X, W1, b1, W2, b2)
  36. print("前向传播的输出结果:")
  37. print(output)
  38.    
复制代码
8. 总结

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦应逍遥

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表