神经网络--反向传播(手算)

 

反向传播算法是一种有效的计算神经网络参数梯度的方法,它利用链式法则将输出误差逐层反向传播,最终计算出每个参数的梯度。下面是手动计算梯度的步骤: 假设我们有一个单隐藏层的神经网络,输入为 $x$,输出为 $y$,隐藏层的激活函数为 $f(x)$,输出层的激活函数为 $g(x)$。我们定义损失函数为 $L(y, t)$,其中 $t$ 为目标输出。 1.正向传播:计算出网络的输出 $y$。 $$h = f(wx+b)$$ $$y = g(vh+c)$$ 其中 $w$ 和 $v$ 是权重矩阵,$b$ 和 $c$ 是偏置向量。 2.计算损失函数对输出 $y$ 的梯度 $\frac{\partial L}{\partial y}$。 $$\frac{\partial L}{\partial y} = \frac{\partial L}{\partial t} \frac{\partial t}{\partial y}$$ 其中 $\frac{\partial L}{\partial t}$ 表示损失函数对目标输出的梯度,$\frac{\partial t}{\partial y}$ 表示目标输出对网络输出的导数。对于均方误差损失函数,$\frac{\partial L}{\partial t} = 2(y-t)$。 3.计算损失函数对输出层输入的梯度 $\frac{\partial L}{\partial v}$。 $$\frac{\partial L}{\partial v} = \frac{\partial L}{\partial y} \frac{\partial y}{\partial v}$$ 其中 $\frac{\partial y}{\partial v}$ 表示输出层输入对输出的导数,可以根据输出层的激活函数求出。对于 sigmoid 激活函数,$\frac{\partial y}{\partial v} = y(1-y)$。 4.计算损失函数对输出层偏置的梯度 $\frac{\partial L}{\partial c}$。 $$\frac{\partial L}{\partial c} = \frac{\partial L}{\partial y} \frac{\partial y}{\partial c}$$ 其中 $\frac{\partial y}{\partial c}$ 表示输出层偏置对输出的导数,为 1。 5.计算损失函数对隐藏层输出的梯度 $\frac{\partial L}{\partial h}$。 $$\frac{\partial L}{\partial h} = \frac{\partial L}{\partial y} \frac{\partial y}{\partial h}$$ 其中 $\frac{\partial y}{\partial h}$ 表示输出层输入对隐藏层输出的导数,可以根据权重矩阵和输出层激活函数求出。 6.计算损失函数对隐藏层输入的梯度 $\frac{\partial L}{\partial w}$。 $$\frac{\partial L}{\partial w} = \frac{\partial L}{\partial h} \frac{\partial h}{\partial w}$$ 其中 $\frac{\partial h}{\partial w}$ 表示隐藏层输入对权重矩阵的导数,可以根据输入和隐藏层激活函数求出。 7.计算损失函数对隐藏层偏置的梯度 $\frac{\partial L}{\partial b}$。 $$\frac{\partial L}{\partial b} = \frac{\partial L}{\partial h} \frac{\partial h}{\partial b}$$ 其中 $\frac{\partial h}{\partial b}$ 表示隐藏层输入对偏置向量的导数,为 1。 通过以上步骤,我们可以手动计算出每个参数的梯度,从而更新网络参数以提高模型性能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值