深度学习之理解神经网络的四个公式

本文深入探讨神经网络的核心算法——反向传播(backpropagation),解释了如何通过偏导数和梯度下降求解权重与偏差,并详细阐述了误差δ在神经元之间的传递以及其在计算代价函数梯度中的作用,以此帮助理解神经网络的学习过程。
摘要由CSDN通过智能技术生成

这篇文章里面,我们探讨了:可以使用偏导值利用梯度下降来求权重w和b,但是我们并没有提,如何求代价函数的偏导,或者说如何对代价函数使用梯度下降。这时候就需要我们的backpropagation出马了。

backpropagaton的历史我就不详谈了(主要是懒),总之呢,现在他已经成了神经网络计算的核心算法了。接下来我们就详细的讲这个算法。

首先我们从基础开始说起,首先定义一个神经网络

在这里,首先需要理解的就是 wljk 的形式。右上角的 l , 代表的是层数,也就是“输入”(可以是直接输入,也可以是上层的输入)与权重 w 结合,作用到的下一层。右下角的 k , 是 l1 层的第k个神经元;右下角 j 的,是 l 层的第j个神经元。

这么写看起来好像比较奇怪,因为直觉上说,k在l之前,才是更符合我们认知的理解方式。但是后面我们可以看到,在这种处理方法之后,我们可以得到一种更简洁的处理式子。比较而言,这种前后稍微颠倒下,也无所谓了,适应下就好了。

除了权重w之外,我们还有b和a:

b是我们的偏差,a是我们的输入向量经过激活函数之后的结果,也就是 a=δ(z) .

在表现形式上,b跟a有这类似的特点:

右上角的值是所在的层数;右下角的值,是所在的第几个神经元。

于是,根据前面的一些式子,我们一结合,就可以写出下面的式子:

alj=σ(kwljkal1k+blj),(23)

这个式子看起来好像复杂,但实际上很简单,而且完全描述了我们刚才说的神经网络的问题,当然,这里的 alj 是其中的一个神经元,它位于第l层的第j个。

这个神经元的得来,就是从前一层l-1层的所有神经元,与与之对应的权重结合之后,所有的相加,经过激活函数得来的。

说点题外话,看到相乘,然后求和的情况,你会想到什么呢?如果你能想到矩阵相乘的话,哎吆,不错奥。

在矩阵中,我们要求的某个值,就是行与列对应位置的值相乘之后相加得到的。在本式子中,k就是那个对应的位置。例如,我们有公式

lij=Kkmiknkj

这个公式就是典型的矩阵相乘求值的公示,那么我们转成矩阵相乘:

li=minj

在(23)中,可以把 alj 理解成第l行第j列的值,那么我们采用矩阵相乘的方法来计算,就得到了:

al=δ(wlal1+bl)

这样,就得到了一个比较简洁的式子。而且我们也可以看到之前说的 ,k和l互相颠倒的优点了。

为了更方便,我们设定

zlwlal1+bl

zlj=kwljkal1k+blj

这样,我们可以方便的得到 al=σ(zl)

然后呢,为了计算backpropagation,我们需要作出两个假设。

首先,我们知道,代价方程的形式为:

C=12nx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值