前言
分类问题是深度学习中的最基本的问题,而分类问题中,我们使用最多的就是利用\(softmax\)函数并结合\(cross \; entropy\)计算最后的损失值\(Loss\)。所以我们有必要对其进行一定的了解,并进行其求导的操作,这里的求导就相当于进行反向传播。
分类问题是深度学习中的最基本的问题,而分类问题中,我们使用最多的就是利用\(softmax\)函数并结合\(cross \; entropy\)计算最后的损失值\(Loss\)。所以我们有必要对其进行一定的了解,并进行其求导的操作,这里的求导就相当于进行反向传播。
前面讲了很多二维平面上的卷积,甚至用代码实现了一个简单的两层二维卷积网络,但是在实际的情况下,我们使用的更多的是三维矩阵,即矩阵的\(shape\)往往是\([height, width, channels]\)。在这种情况下,我们的卷积核就会多出一个参数来和通道\(channels\)参数进行匹配,即,这个时候,我们的卷积核的\(shape\)会变成\([kernel\_height, kernel\_width, channels]\)。所以接下来就是要弄清楚在这种多通道的情况下,卷积是如何进行反向传播的。
在前面的叙述中,我们都是在二维平面上做卷积操作,并在此基础上进行了反向传播算法的推导和计算,但是,如果仅仅限于理论怕是很难验证我们算法的是否是真的可以让结果收敛,因此,这一篇文章中,我们就通过代码来验证一下算法在实际过程中的收敛情况。
必须要说明的是,之前讲解的算法都是十分朴素的,具有很大的改进空间,代码的实现也是基于这种朴素的计算过程,因此,并未对算法进行优化。
在前面的文章中,介绍了二维平面上的卷积及其反向传播的算法,但是,步长为1和2毕竟都是两个比较小的数字,如果换成更大的数字,反向传播的方式是不是还适合呢?所以,我们考虑下面这个十分极端的例子,来验证反向传播算法的有效性。
在之前讨论了步长stride为1的卷积方式的反向传播,但是很多时候,使用的卷积步长会大于1,这个情况下的卷积方式的反向传播和步长为1的情况稍稍有些区别,不过区别并没有想象中那么大,因此下面就对步长stride大于1的情况进行简单的阐述。请注意:这里的所有推导过程都只是针对当前设置的参数信息,并不具有一般性,但是所有的推导过程可以推导到一般的运算,因此以下给出的并不是反向传播算法的严格证明,不涉及十分复杂的公式推导,争取可以以一种简单的方式来理解卷积的反向传播。希望可以很好的帮助理解反向传播算法。
需要注意的是,在本文中,所有的正向传播过程中,卷积的步长stride均固定为2。
近年来,深度学习的快速发展带来了一系列喜人的成果,不管是在图像领域还是在NLP领域,深度学习都显示了其极其强大的能力。而深度学习之所以可以进行大规模的参数运算,反向传播算法功不可没,可以说,没有反向传播算法,深度学习就不可能得以快速发展,因此在此之前,有必要了解一下反向传播算法的具体原理和公式推导。请注意:这里的所有推导过程都只是针对当前设置的参数信息,并不具有一般性,但是所有的推导过程可以推导到一般的运算,因此以下给出的并不是反向传播算法的严格证明,不涉及十分复杂的公式推导,争取可以以一种简单的方式来理解卷积的反向传播。希望可以很好的帮助理解反向传播算法。
在之前曾经见到的说明过全连接层的反向传播,因此,这一次主要是专注于卷积层的反向传播。
需要注意的是,在本文中,所有的正向传播过程中,卷积的步长stride均固定为1。
Update your browser to view this website correctly. Update my browser now