当前位置: 首页 > 后端技术 > Python

100天搞定机器学习-day38反向传播算法推导

时间:2023-03-26 01:57:35 Python

过去回顾100天搞定机器学习|(Day1-36)100天搞定机器学习|Day37没有公式可以理解反向传播算法的本质我们在第一集中学习了反向传播算法的原理,今天我们将深入讲解微积分理论,展示如何理解机器学习中的链式法则。让我们从最简单的网络开始,每一层只有一个神经元。图中的网络由三个权重和三个偏置决定。我们的目标是了解成本函数对这些变量的敏感程度。这样,我们就知道如何调整这些变量,使成本函数下降最快。让我们首先关注最后两个神经元。我们给最后一个神经元一个上标L,表示它在第L层。给定一个训练样本,我们将最终层激活值接近的目标称为y,y的值为0/1。那么这个简单网络对于单个训练样本的成本等于(a(L)?y)2。对于此示例,我们将此成本值表示为C0。前面说过,最后一层的激活值公式:改变标注方式:整个过程是这样的:当然a(L?1)可以上推到另一层,但这并不重要。这些东西都是数字,我们可以想象每个数字都对应着数字线上的一个位置。我们的首要目标是了解成本函数对权重的微小变化有多敏感。换句话说,找到C0对的导数。的微小变化会导致的变化,进而导致,并最终影响成本。我们拆开公式,先求的变化率的变化,即对的导数;对于相同的力,考虑的变化比值的变化,以及c的最终变化与直接变化引起的变化相比。这是链式法则开始单独推导的地方。这只是包含训练样本的成本对的导数。总成本函数是所有训练样本成本的总平均值。该对的导数需要每个训练样本的表达式。平均而言,这只是梯度向量的一个组成部分,它由每个权重和偏差的成本函数的导数组成。当然,对偏差求导是相同的过程。换成一样就可以了,这里也是反向传播的思想,我们可以在方向上应用链式法则来计算代价函数对前面的权重和偏差的敏感度,此时我们可以看到每一层有多个神经元的情况其实并没有太复杂,多写下标就可以了。当每一层中只有一个神经元时,这些方程式与以前基本相同。成本函数也类似。不同之处在于成本函数对(L-1)层激活值的导数。因为此时,激活值可以通过不同的方式影响代价函数,只要计算出倒数第二层代价函数对激活值的敏感度,然后重复上述过程即可。至此,反向传播的介绍就完成了。