反向传播及softmax算法推导

自己重新整理了一下反向传播算法及softmax算法的推导。

(1)针对通常的反向传播算法,Loss采用差值的绝对值平方和,非线性函数采用sigmoid函数

(2)softmax算法推导是指,采用softmax对输出数据处理,并采用交叉熵作为Loss函数。

两个算法的推导过程都是通过从单一元素出发,扩展到向量的形式。

反向传播算法更详细的推导可参考博客:https://zhuanlan.zhihu.com/p/25416673

两个算法的推导如下两个图所示。



  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RNN(循环神经网络)是一种具有循环连接的神经网络,能够对序列数据进行处理。反向传播算法是一种用于训练神经网络的方法。下面我们来推导一下在Matlab中如何使用反向传播算法来训练RNN。 为了简化计算,我们假设RNN只有一个隐藏层。记输入层的维度为n,隐藏层的大小为m,输出层的大小为k。 首先,我们初始化各层之间的权重矩阵W和偏差向量b,以及对应的偏导数矩阵dW和偏导数向量db。我们还需要定义一个学习率alpha来控制每次更新权重和偏差的大小。 接下来,我们通过前向传播计算来确定各个层的输出。假设我们有一个样本序列X,可以将其表示为一个矩阵,每一列代表一个样本,共有T个时间步。我们同时定义一个隐藏层状态矩阵H,其大小为m x (T+1),其中第一列为初始隐藏状态h0。 在每个时间步t,我们计算隐藏层状态ht和输出层激活值at的值。隐藏层状态的计算公式为: ht = tanh(Wxh * Xt + Whh * ht-1 + bh), 其中Xt是输入矩阵X的第t列,*表示矩阵乘法,tanh是激活函数。 输出层激活值的计算公式为: at = Wo * ht + bo, 其中Wo是隐藏层到输出层的权重矩阵,bo是输出层的偏差向量。 计算好各个时间步的隐藏层状态和输出层激活值后,我们可以将输出层激活值传入softmax函数进行分类预测。 接下来,我们使用反向传播算法来计算各个参数的偏导数,以便进行权重和偏差的更新。首先,我们计算输出层误差deltao: deltao = softmax_backward(Y, a),其中Y为真实标签。 然后,利用deltao计算隐藏层误差deltah: deltah = Wo' * deltao .* (1 - ht.^2),其中Wo'表示Wo的转置。 最后,我们可以根据deltah计算W的偏导数: dWxh = deltah * Xt', dWhh = deltah * ht-1', dbh = deltah * ones(T, 1)。 将上述偏导数累加,然后根据学习率alpha进行更新: Wxh = Wxh - alpha * dWxh, Whh = Whh - alpha * dWhh, bh = bh - alpha * dbh。 同样,我们还可以根据deltao计算Wo的偏导数: dWo = deltao * ht', dbo = deltao * ones(T, 1)。 然后进行更新: Wo = Wo - alpha * dWo, bo = bo - alpha * dbo。 以上就是在Matlab中使用反向传播算法来训练RNN的推导过程
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值