【吴恩达深度学习】【神经网络和深度学习】 第三章 第九节 神经网络的梯度下降法

一、梯度下降法

有关什么是梯度下降法,这在之前几周的学习中我们已经掌握了,这里简要分析。

对于一个函数,我们在某一个点的next操作可以认为是跟这个点的导数有关的,因为导数会指引我们走向极值。然后我们每次根据这个点的导数向前走一步的过程中,我们用一个被称作学习率的东西来确定我们的步长。

这种方法我们称之为梯度下降法。、

 

二、浅层神经网络的梯度下降法

浅层神经网络中的梯度下降法和之前提到的那种没有本质上的区别,都是求导然后计算下一个值,这样反复迭代直到我们的cost函数达到很好的表现值。

而对于求导,这就是之前提到的反向传播,按照中国大学通俗的说法就是求导的链式法则,只要我们把输入层的值带入到输出层的导数函数中,一层层的推导就好了。

注意到这里的推导是具有模式化性质的,所以我们可以用同一种方式去处理每一层的导数,也就是说,我们可以用一个矩阵乘法写出输出层某个神经元关于输出层的导数,最终的那个结果矩阵就是系数矩阵。

 

三、听课的想法

可以说这一周的所有课程都是为这节课打下的基础,这节课是浅层神经网络的核心。

而神经网络的难度在学习成本这一块其实不大,主要在编程难度和调参。

显然,对于一个神经网络来说调参的难度是极大的,这需要有敏锐的观察力 过人的耐心 。。。(扯不下去了,反正就是很难啦)

在学mooc的时候想象了一下可能遇到的麻烦,首先就是整个神经网络的模型搭建,需要有多少个隐藏层,需要采用哪种激活函数,这个都需要大量的实验。

其次就是一些符号的问题,几乎所有的地方都能转化成矩阵计算,不管是一组数据内部还是数据之间都有矩阵计算,这对于我们编程的时候想的很清楚(具体有关编程的细节可能会在之后的blog中提到,这篇应该是我写完这门课的作业之后的一个总结)