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

笔者注

神经网络的前向传播(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. 总结

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

相关推荐
爱打代码的小林几秒前
基于 OpenCV 与 Dlib 的人脸替换
人工智能·opencv·计算机视觉
无忧智库1 分钟前
某市“十五五“知识产权大数据监管平台与全链条保护系统建设方案深度解读(WORD)
大数据·人工智能
顾北122 分钟前
AI对话应用接口开发全解析:同步接口+SSE流式+智能体+前端对接
前端·人工智能
综合热讯5 分钟前
股票融资融券交易时间限制一览与制度说明
大数据·人工智能·区块链
AEIC学术交流中心5 分钟前
【快速EI检索 | ICPS出版】2026年计算机技术与可持续发展国际学术会议(CTSD 2026)
人工智能·计算机网络
玄同7658 分钟前
Python Random 模块深度解析:从基础 API 到 AI / 大模型工程化实践
人工智能·笔记·python·学习·算法·语言模型·llm
风指引着方向9 分钟前
昇腾 AI 开发生产力工具:CANN CLI 的高级使用与自动化脚本编写
运维·人工智能·自动化
算法狗210 分钟前
大模型面试题:1B的模型和1T的数据大概要训练多久
人工智能·深度学习·机器学习·语言模型
23遇见15 分钟前
CANN与开源生态:如何融入并赋能主流AI框架的NPU后端支持
人工智能