深度学习笔记(8) 实践层面(三)

深度学习笔记(8) 实践层面(三)


1. 归一化 / 标准化输入

训练神经网络,特征必须要在0到1之间
此时就只能加速训练的方法就是归一化输入:

在这里插入图片描述
在使用正则化的情况下,必须使用标准化
在这里插入图片描述
因为不用正则时,损失函数只是仅仅在度量预测与真实的差距
加上正则后,损失函数除了要度量上面的差距外,还要度量参数值是否足够小
而参数值的大小程度或者说大小的级别是与特征的数值范围相关的

标准化需要两个步骤:零均值归一化方差
希望无论是训练集和测试集都是通过相同的 μ μ μ σ σ σ2 定义的数据转换,这两个是由训练集得出来的

  • 零均值化:
    在这里插入图片描述
    它是一个向量, x x x 等于每个训练数据 x x x 减去 μ μ μ ,即移动训练集,直到完成零均值化
  • 归一化方差:
    在这里插入图片描述
    它也是一个向量,每个特征都有相似的方差,此时已零均值化, x x x 2就是方差

在这里插入图片描述
归一化特征后直观理解是代价函数会更圆一些,而且更容易优化,前提是特征都在相似范围内,而不是从1到1000,0到1的范围,而是在-1到1范围内或相似偏差,这使得代价函数J优化起来更简单快速
在这里插入图片描述
如果假设特征x1范围在0-1之间,x2的范围在-1到1之间,x3范围在1-2之间,相似范围,所以也会表现得很好


2. 权重初始化

训练神经网络,尤其是深度神经所面临的一个问题就是梯度消失或梯度爆炸
也就是导数或坡度有时会变得非常大,或者非常小,甚至于以指数方式变小,这加大了训练的难度

假设所有权重矩阵都是1.5倍的单位矩阵,计算结果就是 y ^ \hat{y} y^ ,也就是等于 1.5(L-1) x x x
如果对于一个深度神经网络来说L值较大,那么 y ^ \hat{y} y^ 的值也会非常大
实际上呈指数级增长的,增长的比率是1.5L
因此对于一个深度神经网络,y的值将爆炸式增长

假设所有矩阵都是0.5倍的单位矩阵,计算结果就是 y ^ \hat{y} y^
也就是等于0.5L x x x ,激活函数的值将以指数级下降

为了预防z值过大或过小,可以看到神经元的输入特征数量n越大,希望wi越小,因为z是wi xi的和
如果把很多此类项相加,希望每项值更小,最合理的方法就是设置wi = 1 / n
实际上,要做的就是设置某层权重矩阵w[l] = np.random.randn(shape) * np.sqrt(1 / n[l-1])
n[l-1]就是喂给第 l l l 层神经单元的数量(即第 l l l -1层神经元数量)

如果是用的是Relu激活函数,而不是1/n,方差设置为2/n,效果会更好
其余的tanh函数等依然是 √(1/n[l-1])


3. 梯度检验

梯度检验(grad check)可以帮助调试节省了很多时间
也可以帮助发现backprop实施过程中的bug

但只用于调试
假设 h h hθ ( x ) (x) (x) = θ θ θ0 + θ θ θ1 x x x1 + θ θ θ2 x x x2 + θ θ θ3 x x x3 + ⋯ + θ θ θn x x xn
因为计算所有 i 值的权重导数 d θ dθ dθapprox [ i ] [i] [i] 是一个非常漫长的计算过程,不能与dropout同时使用

首先,要清楚 J J J权重θ的一个函数,也可以将J函数展开为 J J J123,……)
不论权重θ的维度是多少,为了实施梯度检验,要做的就是循环执行
从而对每个i也就是对每个θ组成元素计算 d θ dθ dθapprox [ i ] [i] [i] 的值,使用双边误差,也就是
在这里插入图片描述
只对 θi 增加ε,ε的值很小,如0.01,其它项保持不变
另一边一样,只不过是减去ε,θ其它项全都保持不变

这个值( d θ dθ dθapprox [ i ] [i] [i] )应该逼近代价函数的偏导数 d θ [ i ] dθ[i] dθ[i] = ∂J / ∂θi(注意代价添加正则项)需要验证
计算这两个向量的距离, d θ dθ dθapprox [ i ] [i] [i] - d θ [ i ] dθ[i] dθ[i] 的欧几里得范数,误差平方之和,然后求平方根,得到欧式距离在这里插入图片描述
然后向量长度归一化,使用向量长度的欧几里得范数,分母用于预防这些向量太小或太大,使得方程式变成比率
实际执行方程式时ε可能为10-7 ,如果发现计算的值为10-7 或更小,导数逼近很有可能是正确的
在10-5 范围内,再次检查这个向量的所有项,查找不同的 i 值,确保没有一项误差过大
在10-3 范围内,需要检查所有θ项


想要降低预测误差,即提高预测精度,往往会采用这些手段:

手段效果
采集更多的样本错误的认为样本越多越好,其实数据多并不是越好
降低特征维度可能去掉了有用的特征
采集更多的特征增加了计算负担,也可能导致过拟合
进行高次多项式回归过高的多项式可能造成过拟合
调试正规化参数 λ,增大或者减少 λ增大或者减少都是凭感觉

参考:

《神经网络和深度学习》视频课程


相关推荐:

深度学习笔记(7) 实践层面(二)
深度学习笔记(6) 实践层面(一)
深度学习笔记(5) 深层神经网络
深度学习笔记(4) 浅层神经网络
深度学习笔记(3) 向量化逻辑回归


谢谢!

氢键H-H CSDN认证博客专家 机器人软件 运动控制 深度学习
一位永远相信美好的事情即将发生,从事自动化机器人软件开发,不忘初心,牢记使命,为实现中华民族伟大复兴而奋斗的社会主义接班人。
©️2020 CSDN 皮肤主题: 我行我“速” 设计师:Amelia_0503 返回首页
实付 49.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值