CS229 6.3 Neurons Networks Gradient Checking

时间:2023-03-09 17:43:29
CS229  6.3 Neurons Networks Gradient Checking

BP算法很难调试,一般情况下会隐隐存在一些小问题,比如(off-by-one error),即只有部分层的权重得到训练,或者忘记计算bais unit,这虽然会得到一个正确的结果,但效果差于准确BP得到的结果。

有了cost function,目标是求出一组参数W,b,这里以CS229  6.3 Neurons Networks Gradient Checking表示,cost function 暂且记做CS229  6.3 Neurons Networks Gradient Checking。假设 CS229  6.3 Neurons Networks Gradient Checking,则 CS229  6.3 Neurons Networks Gradient Checking,即一维情况下的Gradient Descent:

CS229  6.3 Neurons Networks Gradient Checking

根据6.2中对单个参数单个样本的求导公式:

CS229  6.3 Neurons Networks Gradient Checking

可以得到每个参数的偏导数,对所有样本累计求和,可以得到所有训练数据对参数 CS229  6.3 Neurons Networks Gradient Checking 的偏导数记做 CS229  6.3 Neurons Networks Gradient Checking ,CS229  6.3 Neurons Networks Gradient Checking 是靠BP算法求得的,为了验证其正确性,看下图回忆导数公式:

CS229  6.3 Neurons Networks Gradient Checking

可见有:CS229  6.3 Neurons Networks Gradient Checking那么对于任意 CS229  6.3 Neurons Networks Gradient Checking 值,我们都可以对等式左边的导数用:

CS229  6.3 Neurons Networks Gradient Checking来近似。

给定一个被认为能计算 CS229  6.3 Neurons Networks Gradient Checking 的函数CS229  6.3 Neurons Networks Gradient Checking,可以用下面的数值检验公式

CS229  6.3 Neurons Networks Gradient Checking

应用时,通常把CS229  6.3 Neurons Networks Gradient Checking设置为一个很小的常量,比如在CS229  6.3 Neurons Networks Gradient Checking 数量级,最好不要太小了,会造成数值的舍入误差。上式两端值的接近程度取决于 CS229  6.3 Neurons Networks Gradient Checking 的具体形式。假定CS229  6.3 Neurons Networks Gradient Checking 的情况下,上式左右两端至少有4位有效数字是一样的(通常会更多)。

CS229  6.3 Neurons Networks Gradient Checking是一个n维向量而不是实数时,且 CS229  6.3 Neurons Networks Gradient Checking,在 Neorons Network 中,J(W,b)可以想象为 W,b 组合扩展而成的一个长向量 CS229  6.3 Neurons Networks Gradient Checking,现在又一个计算 CS229  6.3 Neurons Networks Gradient Checking的函数 CS229  6.3 Neurons Networks Gradient Checking,如何检验CS229  6.3 Neurons Networks Gradient Checking能否输出到正确结果呢,用CS229  6.3 Neurons Networks Gradient Checking的取值来检验,对于向量的偏导数:

CS229  6.3 Neurons Networks Gradient Checking

根据上图,对 CS229  6.3 Neurons Networks Gradient Checking求导时,只需要在向量的第i维上进行加减操作,然后求值即可,定义 CS229  6.3 Neurons Networks Gradient Checking,其中

CS229  6.3 Neurons Networks Gradient Checking

CS229  6.3 Neurons Networks Gradient Checking 和 CS229  6.3 Neurons Networks Gradient Checking 几乎相同,除了第 CS229  6.3 Neurons Networks Gradient Checking 行元素增加了 CS229  6.3 Neurons Networks Gradient Checking,类似地,CS229  6.3 Neurons Networks Gradient Checking 得到的第 CS229  6.3 Neurons Networks Gradient Checking 行减小了 CS229  6.3 Neurons Networks Gradient Checking,然后求导并与CS229  6.3 Neurons Networks Gradient Checking比较:

CS229  6.3 Neurons Networks Gradient Checking

CS229  6.3 Neurons Networks Gradient Checking中的参数对应的是参数向量中一个分量的细微变化,损失函数J 在不同情况下会有不同的值(比如三层NN 或者 三层autoencoder(需加上稀疏项)),上式中左边为BP算法的结果,右边为真正的梯度,只要两者很接近,说明BP算法是在正确工作,对于梯度下降中的参数是按照如下方式进行更新的:

CS229  6.3 Neurons Networks Gradient Checking

即有 CS229  6.3 Neurons Networks Gradient Checking 分别为:

CS229  6.3 Neurons Networks Gradient Checking

最后只需总体损失函数J(W,b)的偏导数与上述CS229  6.3 Neurons Networks Gradient Checking 的值比较即可。

除了梯度下降外,其他的常见的优化算法:1) 自适应CS229  6.3 Neurons Networks Gradient Checking的步长,2) BFGS L-BFGS,3) SGD,4) 共轭梯度算法,以后涉及到再看。