深度学习记录第二天神经网络

来源:互联网 发布:sunday算法 python 编辑:程序博客网 时间:2024/04/29 12:31

在开始第二节之前,先简单回顾一下第一节的内容,第一节讲了如何在给定参数(W,b)和数据集(x(i),y(i))的前提下计算神经网络,最后思考如何找到最优的(W,b),这一节我们紧紧围绕我们的目的即找到最优的(W,b)展开。既然要最优,就要用到最优化的算法,在开始之前先来看一下什么是最优化算法,以及常用的最优化算法。字面意思:能使预测的值与我们想要的结果或者实际值最接近的算法我们称之为最优化算法。比如本例神经网络中我们想要一组参数(W,b),这组参数能使函数这里写图片描述的值与实际值y的差距最小(二分之一平方代价函数的值最小,即代价最小),那么我们认为这组参数是最优的(W,b),找到这组最优参数的算法是解决我的问题的最优化算法。
常用的最优化算法有:梯度下降法、随机梯度下降法、批量随机梯度下降法、梯度上升法、随机梯度上升法、批量随机梯度上升法等这里只列举以上几个算法,因为我们后面要用到。(梯度上升法和梯度下降法本质上是一样的只不过一个像是爬山的时候怎么样爬的快,一个是下山的时候怎么样下的快)
正式开始第二节:
假设我们有一个固定样本集这里写图片描述,它包含 m 个样例。我们可以用批量梯度下降法来求解神经网络。具体来讲,对于单个样例(x,y),其代价函数为:


这里写图片描述


这是一个(二分之一的)方差代价函数。给定一个包含 m 个样例的数据集,我们可以定义整体代价函数为:


这里写图片描述


以上公式中的第一项 这里写图片描述是一个均方差项。第二项是一个规则化项(也叫权重衰减项),其目的是减小权重的幅度,防止过度拟合。
【注:通常权重衰减的计算并不使用偏置项这里写图片描述,比如我们在这里写图片描述 的定义中就没有使用。一般来说,将偏置项包含在权重衰减项中只会对最终的神经网络产生很小的影响。如果你在斯坦福选修过CS229(机器学习)课程,或者在YouTube上看过课程视频,你会发现这个权重衰减实际上是课上提到的贝叶斯规则化方法的变种。在贝叶斯规则化方法中,我们将高斯先验概率引入到参数中计算MAP(极大后验)估计(而不是极大似然估计)。]
权重衰减参数这里写图片描述用于控制公式中两项的相对重要性。在此重申一下这两个复杂函数的含义:这里写图片描述是针对单个样例计算得到的方差代价函数;这里写图片描述是整体样本代价函数,它包含权重衰减项。
以上的代价函数经常被用于分类和回归问题。在分类问题中,我们用 y = 0 或 1,来代表两种类型的标签(回想一下,这是因为 sigmoid激活函数的值域为[0,1];如果我们使用双曲正切型激活函数,那么应该选用 -1 和 +1 作为标签)。对于回归问题,我们首先要变换输出值域(译者注:也就是y),以保证其范围为 [0,1] (同样地,如果我们使用双曲正切型激活函数,要使输出值域为 [-1,1])。
我们的目标是针对参数 W 和 b 来求其函数 J(W,b) 的最小值。为了求解神经网络,我们需要将每一个参数这里写图片描述初始化为一个很小的、接近零的随机数,之后对目标函数使用诸如批量梯度下降法的最优化算法。因为 J(W, b) 是一个非凸函数,梯度下降法很可能会收敛到局部最优解;但是在实际应用中,梯度下降法通常能得到令人满意的结果。最后,需要再次强调的是,要将参数进行随机初始化,而不是全部置为0。如果所有参数都用相同的值作为初始值,那么所有隐藏层单元最终会得到与输入值有关的、相同的函数。
梯度下降法中每一次迭代都按照如下公式对参数W 和 b 进行更新:


这里写图片描述


其中这里写图片描述是学习速率。其中关键步骤是计算偏导数。从上面的公式可以看出要计算上述的两个偏导不容易,或者说直接求导基本不可能实现。但是肯定有方法,并且数学不好的同学不用怕,数学大神门已经帮我们求好了。现在我们来讲一下反向传播算法,它是计算偏导数的一种有效方法。

我们首先来讲一下如何使用反向传播算法来计算 这里写图片描述这里写图片描述,这两项是单个样例(x,y) 的代价函数 J(W,b;x,y) 的偏导数。一旦我们求出该偏导数,就可以推导出整体代价函数 J(W,b) 的偏导数:


这里写图片描述


以上两行公式稍有不同,第一行比第二行多出一项,是因为权重衰减是作用于W 而不是 b。

0 0