吴恩达深度学习第2课第1周(下)

时间:2021-03-24 20:09:39

1.6其它防止过拟合方法

1.扩增数据,(如果不能获取更多的新数据时,你可以将图片水平翻转,任意裁剪图片,对于光学字符,可以扭曲旋转)

2.early stop

即在测试误差小的一个点时,就停止继续迭代下去,如在下图标记的地方就停止迭代

原理:一开始W很小,接近0,神经网络简单,

吴恩达深度学习第2课第1周(下)

 

early stop的缺点,过早的停止迭代,造成训练误差很大

 

纠正一个点:训练数据集是找到一个合适的算法,以及神经网络架构

验证集也要重新跑一片学习,从b=0开始跑,所以找出验证集也会有cost的函数,只不过一般都会先下降,后增加

 

1.7 初始化输入(归一化输入)

如果输入的特征之间数据的范围差别很大(如吴恩达深度学习第2课第1周(下) ),这样会造成成本函数非常的狭长,非常不利于梯度下降来趋向最优值

归一化方法:

  1. 均值化 吴恩达深度学习第2课第1周(下)
  2. 归一化方差 吴恩达深度学习第2课第1周(下)

注意:验证集,训练集的吴恩达深度学习第2课第1周(下)必须是要一样的,吴恩达深度学习第2课第1周(下)有训练集计算出来,验证集不要再算,用训练集得到的吴恩达深度学习第2课第1周(下)

1.8 梯度消失或梯度爆炸

先从正向传播来看W

假设b=0,吴恩达深度学习第2课第1周(下),则吴恩达深度学习第2课第1周(下)

如果层数够深。即使,一开始初始化的W很小,传递到后面A的输出也会产生巨大的变化,A随着层数的增加呈指数式增长/减小

 

同理应用到反向传播,梯度就会消亡或者爆炸

1.9 随机初始化权重

吴恩达深度学习第2课第1周(下)

当然是希望吴恩达深度学习第2课第1周(下) 的和为1好一点,(x经过归一化处理后,是均值为0,方差为1的矩阵,这样非常有利于抵消梯度消失或者梯度爆炸)所以对于每一个特征分配的权重希望在吴恩达深度学习第2课第1周(下)左右,即W随机出来的值均值为0,方差为吴恩达深度学习第2课第1周(下)

还需要明白一点的是np.random.randn 随机出来的矩阵的元素遵循吴恩达深度学习第2课第1周(下)的高斯分布,根据W的方差要为吴恩达深度学习第2课第1周(下),所以初始化时有这样一个骚操作(改变方差,不知道为什么是乘以一个标准差,有点小不懂)

吴恩达深度学习第2课第1周(下)

吴恩达深度学习第2课第1周(下)的维度是与上一层的输入a对应的,所以后面*的是第l-1层的特征

注意:当使用relu作为激活函数时,由于会去掉负半轴的数据,所以输入想要维持输出的a还在1附近,就在W上动动手,将它的希望值提高一倍,即方差变成吴恩达深度学习第2课第1周(下)

所以对于当第一层的激活函数为relu时,初始化

吴恩达深度学习第2课第1周(下)

1.10 梯度检验

使用双边求差

吴恩达深度学习第2课第1周(下) 它测出来的值与实际导数值误差为遵循吴恩达深度学习第2课第1周(下),即误差值会小于等于选取的吴恩达深度学习第2课第1周(下)的平方函数,亲测真理(也可以去翻一片高数)

如果是单边预测,那么误差会遵循吴恩达深度学习第2课第1周(下),选取的吴恩达深度学习第2课第1周(下)肯定是一个很小的值,在小数范围类,吴恩达深度学习第2课第1周(下)肯定更小

梯度检验作用:验证你的写反向传播时,是否哪里写错了

具体方法:1. 将吴恩达深度学习第2课第1周(下) 喝到一个矩阵里面去,称作吴恩达深度学习第2课第1周(下)

2 吴恩达深度学习第2课第1周(下)表示第i层的参数

for each i:

    吴恩达深度学习第2课第1周(下)

即对于每一个参数都来一个双边求差,并添加到吴恩达深度学习第2课第1周(下) 数组中

然后在于你建立的反向传播算法的吴恩达深度学习第2课第1周(下)比较

吴恩达深度学习第2课第1周(下)吴恩达深度学习第2课第1周(下)值,吴恩达深度学习第2课第1周(下)吴恩达深度学习第2课第1周(下)左右最好

上式:分子是两个矩阵的距离,还要除以一个数,是防止吴恩达深度学习第2课第1周(下)它们本身很大

 

梯度验证执行建议:

  1. 训练的时候不要使用它,是当你程序跑偏需要调试的时候在来用梯度验证,应为梯度验证运行速度太慢了
  2. 如果差值太大,请确认到时哪一个参数
  3. 记得有一个正则项的存在
  4. 当有dropout在时,不要使用梯度验证,应为随机失活,是的J根本不确定。使用梯度验证,请关闭随机失活,
  5. 小概率事件,W,b在小值运行时,是正确的,但W,b大了之后,就有误差了。

    可以在随机初始化时运行梯度检验(不知所云….)