网站忘了怎么办啊,杭州工业设计,wordpress 去除logo,中国建设银行网站首页joy1. 计算图和导数
计算图的概念 计算图#xff08;Computation Graph#xff09;是一种有向无环图#xff0c;用于表示数学表达式中的计算过程。每个节点表示一个操作或变量#xff0c;每条边表示操作的依赖关系。通过计算图#xff0c;可以轻松理解和实现反向传播。
计算…1. 计算图和导数
计算图的概念 计算图Computation Graph是一种有向无环图用于表示数学表达式中的计算过程。每个节点表示一个操作或变量每条边表示操作的依赖关系。通过计算图可以轻松理解和实现反向传播。
计算图的意义
直观地展示复杂计算过程。支持自动微分通过链式规则计算导数。应用于神经网络中梯度的高效计算。
例如对于函数 z ( x y ) ⋅ w z (x y) \cdot w z(xy)⋅w 其计算图包括三个节点加法、乘法、输入变量和两条边。
2. 计算代价函数的偏导 - 单神经元
代价函数的定义 代价函数衡量模型输出与真实值之间的差距例如平方误差 L 1 2 ( y − y ^ ) 2 L \frac{1}{2} (y - \hat{y})^2 L21(y−y^)2
其中 y ^ \hat{y} y^ 是模型输出 y y y 是目标值。
单神经元的导数推导 假设输出为 y ^ σ ( w x b ) \hat{y} \sigma(wx b) y^σ(wxb) 其中 σ \sigma σ 是激活函数如 Sigmoid导数计算如下 对于权重 w w w ∂ L ∂ w ∂ L ∂ y ^ ⋅ ∂ y ^ ∂ z ⋅ ∂ z ∂ w \frac{\partial L}{\partial w} \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z} \cdot \frac{\partial z}{\partial w} ∂w∂L∂y^∂L⋅∂z∂y^⋅∂w∂z 对于偏置 b b b ∂ L ∂ b ∂ L ∂ y ^ ⋅ ∂ y ^ ∂ z ⋅ ∂ z ∂ b \frac{\partial L}{\partial b} \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z} \cdot \frac{\partial z}{\partial b} ∂b∂L∂y^∂L⋅∂z∂y^⋅∂b∂z
意义 通过计算偏导数可以更新参数 w w w 和 b b b 以最小化损失函数。
3. 链导法则求导
链导法则是反向传播的核心其定义如下 ∂ L ∂ x ∂ L ∂ y ⋅ ∂ y ∂ x \frac{\partial L}{\partial x} \frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial x} ∂x∂L∂y∂L⋅∂x∂y
步骤
先计算从输出到隐藏层的梯度。再计算从隐藏层到输入的梯度。
例如对于两层网络的损失函数 L f ( g ( x ) ) L f(g(x)) Lf(g(x)) 使用链导法则 ∂ L ∂ x ∂ f ∂ g ⋅ ∂ g ∂ x \frac{\partial L}{\partial x} \frac{\partial f}{\partial g} \cdot \frac{\partial g}{\partial x} ∂x∂L∂g∂f⋅∂x∂g
4. 过程解释
反向传播过程包括以下步骤
前向传播计算网络输出和损失函数。反向传播从输出层开始逐层计算梯度。更新参数使用梯度下降或其变体更新参数。
假设两层网络的权重为 W 1 W_1 W1 和 W 2 W_2 W2 反向传播过程为 计算输出层梯度 δ 2 \delta_2 δ2 δ 2 ∂ L ∂ z 2 ∂ L ∂ y ^ ⋅ σ ′ ( z 2 ) \delta_2 \frac{\partial L}{\partial z_2} \frac{\partial L}{\partial \hat{y}} \cdot \sigma(z_2) δ2∂z2∂L∂y^∂L⋅σ′(z2) 计算隐藏层梯度 δ 1 \delta_1 δ1 δ 1 ( δ 2 ⋅ W 2 T ) ⋅ σ ′ ( z 1 ) \delta_1 (\delta_2 \cdot W_2^T) \cdot \sigma(z_1) δ1(δ2⋅W2T)⋅σ′(z1) 更新权重和偏置 W 2 W 2 − α ⋅ δ 2 ⋅ h 1 T W_2 W_2 - \alpha \cdot \delta_2 \cdot h_1^T W2W2−α⋅δ2⋅h1T W 1 W 1 − α ⋅ δ 1 ⋅ x T W_1 W_1 - \alpha \cdot \delta_1 \cdot x^T W1W1−α⋅δ1⋅xT
5. 神经网络中的反向传播
多层网络中的反向传播 多层网络通过将链导法则逐层应用从输出层反向传播至输入层。每层的梯度依赖于后一层的梯度。
实现代码示例
import numpy as np# 定义激活函数及其导数
def sigmoid(x):return 1 / (1 np.exp(-x))def sigmoid_derivative(x):return sigmoid(x) * (1 - sigmoid(x))# 前向传播
x np.array([1, 2]) # 输入
w1 np.array([[0.1, 0.2], [0.3, 0.4]]) # 权重
b1 np.array([0.5, 0.5]) # 偏置
z1 np.dot(w1, x) b1
a1 sigmoid(z1)# 反向传播
delta (a1 - 1) * sigmoid_derivative(z1)
grad_w1 np.outer(delta, x)6. 计算代价函数的偏导 - 两层神经网络
两层神经网络的反向传播在单层基础上扩展每层分别计算 ∂ L ∂ W 1 , ∂ L ∂ W 2 , ∂ L ∂ b 1 , ∂ L ∂ b 2 \frac{\partial L}{\partial W_1}, \frac{\partial L}{\partial W_2}, \frac{\partial L}{\partial b_1}, \frac{\partial L}{\partial b_2} ∂W1∂L,∂W2∂L,∂b1∂L,∂b2∂L
总结与意义 反向传播是神经网络训练的核心通过计算梯度并更新参数使得网络能够有效学习复杂的映射关系从而提高模型的泛化能力。