单隐层神经网络反向传播公式推导

构建神经网络的一般方法是

  1. 定义神经网络结构(输入单元的数量,隐藏单元的数量等)。init_layer()

  2. 初始化模型的参数 init_parameters()

  3. 循环:
    实施前向传播 forword_propogation()
    计算损失 loss()
    实现向后传播 back_propogation()
    更新参数(梯度下降)update_parameters()

  4. 预测 predict()

此图为吴恩达神经网络视频课后作业的第二个编程题的反向传播的公式推导,课后题:

https://blog.csdn.net/u013733326/article/details/79827273

在这里插入图片描述

def back_propogation(paremeters,cache, X, Y):
    '''
    反向传播
    :param cache:
    :param paremeters:
    :return:
    '''
    m = X.shape[1]
    Z1 = cache['Z1']
    A1 = cache['A1']
    Z2 = cache['Z2']
    A2 = cache['A2']
    W1 = paremeters['W1']
    W2 = paremeters['W2']
    dZ2 =(1/m) *(A2 - Y)
    dW2 = np.dot(dZ2, A1.T)
    db2 = np.sum(dZ2)  ######为什么要求和
    dZ1 = np.multiply(np.dot(W2.T, dZ2), (1 - np.power(A1, 2)))
    dW1 = np.dot(dZ1, X.T)
    db1 = np.sum(dZ1)
    grads = {
        'dW2':dW2,
        'db2':db2,
        'dW1':dW1,
        'db1':db1
    }
    return grads



def update_parameters(parameters, grads, learning_rate = 1.2):
    '''
    参数更新,即执行梯度下降
    :param cache:
    :param grads:
    :return:
    '''
    W1, W2 = parameters['W1'], parameters['W2']
    b1, b2 = parameters['b1'], parameters['b2']

    dW1, dW2 =
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MLP神经网络反向传播算法公式推导如下: 1. 向传播 首先,对于一个输入样本,我们需要进行向传播,计算出每个神经元的输出值。假设输入层有n个神经元,隐藏层有m个神经元,输出层有k个神经元,则有: 输入层到隐藏层的权重矩阵为W,隐藏层到输出层的权重矩阵为V,输入层的输出为x,隐藏层的输出为h,输出层的输出为y,则有: $$h = f(Wx)$$ $$y = g(Vh)$$ 其中,f和g分别为激活函数,通常为sigmoid函数或ReLU函数等。 2. 反向传播 接下来,我们需要计算误差并进行反向传播,更新权重矩阵。假设样本的真实标签为t,则输出层的误差为: $$\delta_k = (y_k - t_k)g'(net_k)$$ 其中,net_k为输出层神经元的加权输入,g'为激活函数的导数。 隐藏层的误差可以根据输出层的误差和权重矩阵V计算得到: $$\delta_j = g'(net_j)\sum_{k=1}^K \delta_k V_{kj}$$ 其中,net_j为隐藏层神经元的加权输入。 根据误差,我们可以更新输出层到隐藏层的权重矩阵V: $$\Delta V_{kj} = -\eta \delta_k h_j$$ 其中,$\eta$为学习率。 同样地,我们可以根据误差更新输入层到隐藏层的权重矩阵W: $$\Delta W_{ji} = -\eta \delta_j x_i$$ 3. 总结 综上所述,MLP神经网络反向传播算法包括以下步骤: 1. 向传播,计算每个神经元的输出值。 2. 计算输出层的误差,然后根据误差更新输出层到隐藏层的权重矩阵V。 3. 计算隐藏层的误差,然后根据误差更新输入层到隐藏层的权重矩阵W。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值