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

  • 1. 归一化 / 标准化输入
  • 2. 权重初始化
  • 3. 梯度检验

1. 归一化 / 标准化输入

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


在使用正则化的情况下,必须使用标准化

因为不用正则时,损失函数只是仅仅在度量预测与真实的差距
加上正则后,损失函数除了要度量上面的差距外,还要度量参数值是否足够小
而参数值的大小程度或者说大小的级别是与特征的数值范围相关的

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

  • 零均值化:

    它是一个向量, xxx 等于每个训练数据 xxx 减去 μμμ ,即移动训练集,直到完成零均值化
  • 归一化方差:

    它也是一个向量,每个特征都有相似的方差,此时已零均值化,xxx 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)xxx
如果对于一个深度神经网络来说L值较大,那么 y^\hat{y}y^​ 的值也会非常大
实际上呈指数级增长的,增长的比率是1.5L
因此对于一个深度神经网络,y的值将爆炸式增长

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

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

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


3. 梯度检验

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

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

首先,要清楚 JJJ 是权重θ的一个函数,也可以将J函数展开为JJJ(θ123,……)
不论权重θ的维度是多少,为了实施梯度检验,要做的就是循环执行
从而对每个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) 向量化逻辑回归


谢谢!

深度学习笔记(8) 实践层面(三)相关推荐

  1. 深度学习笔记(7) 实践层面(二)

    深度学习笔记(7) 实践层面(二) 1. 正则化 2. dropout 正则化 3. 其他正则化方法 1. 正则化 深度学习可能存在过拟合问题--高方差,在确定模型之后有两个解决方法 正则化 准备更多 ...

  2. 深度学习笔记(6) 实践层面(一)

    深度学习笔记(6) 实践层面(一) 1. 训练,验证,测试集 2. 偏差,方差 3. 学习曲线 1. 训练,验证,测试集 训练神经网络时,需要做出很多决策,例如: 神经网络分多少层:每层含有多少个隐藏 ...

  3. UFLDL深度学习笔记 (三)无监督特征学习

    UFLDL深度学习笔记 (三)无监督特征学习 1. 主题思路 "UFLDL 无监督特征学习"本节全称为自我学习与无监督特征学习,和前一节softmax回归很类似,所以本篇笔记会比较 ...

  4. 深度学习笔记(三)—— 反向传播[Back Propagation] 计算图[Computational Graph]

      这是深度学习笔记第三篇,完整的笔记目录可以点击这里查看.      反向传播就是求梯度值,然后通过梯度下降的方式对损失函数进行迭代优化的过程.在通常情况下,直接对一个复杂的函数一步到位写出其解析导 ...

  5. 深度学习笔记(三):BatchNorm(BN)层

    文章目录 一.背景 二.提出 三.原理 四.计算 五.Scale and Shift 六.BN层实现 学习记录:   深度学习笔记(一):卷积层+激活函数+池化层+全连接层   深度学习笔记(二):激 ...

  6. 神经网络与深度学习笔记汇总三

    神经网络与深度学习笔记汇总三 往期回顾 将之前掘金写的学习笔记所遇困难搬到这里,方便查看复习 遇到问题: 异常值处理 学习内容 1..drop() 返回的是一个新对象,原对象不会被改变. 2.遇到问题 ...

  7. 深度学习笔记(二)图像分类实践

    深度学习笔记(二)图像分类实践 使用keras中的ResNet模型进行图像处理记忆预测 import keras #import tensorflow from keras.applications. ...

  8. 下载量过百万的吴恩达机器学习和深度学习笔记更新了!(附PDF下载)

    今天,我把吴恩达机器学习和深度学习课程笔记都更新了,并提供下载,这两本笔记非常适合机器学习和深度学习入门.(作者:黄海广) 0.导语 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在g ...

  9. 33万字!深度学习笔记在线版发布!

    吴恩达老师的深度学习课程(deeplearning.ai),可以说是深度学习入门的最热门课程,我和志愿者编写了这门课的笔记,并在 github 开源,为满足手机阅读的需要,我将笔记做成了在线版,可以在 ...

最新文章

  1. 电阻存储器为edge-AI提供了仿生架构
  2. 微软小冰发布知乎主题曲,人工智能首次开始接近人类歌手水平
  3. 同样是Java程序员,如何比别人更优秀?
  4. 如何回答性能优化的问题,才能打动阿里面试官?
  5. 如果数组最后一项为空删除最后一项和去前面的逗号_手写数组方法
  6. C++STL笔记(七):forward list详解
  7. 接口说明_接口说明_实时语音识别_智能语音交互-阿里云
  8. NO.109 禅道“红火”新年小礼,祝大家2014红红火火~~
  9. 0成本教你打造属于自己的字体库
  10. Python金融数据挖掘 第11章 复习思考题2 (聚类)选取中华人民共和国第六次人口普查的各地区人口数以及男女比例进行K-Means聚类分析。
  11. 工业和信息化部工业企业问卷调查系统
  12. 数据分析在网络营销中的意义有哪些
  13. 通常在计算机中连接硬盘驱动器的接口为,解决方案:如何在Win10系统中向计算机添加硬盘驱动器...
  14. 结构力学分析属于计算机哪类应用,结构力学 课堂笔记 (大学期末复习资料).doc...
  15. ros学习记录1 Hello World 使用c++
  16. windows 的cmd设置代理方法
  17. Android 疑难杂症系列
  18. 8种常见液相色谱异常峰
  19. 车辆底盘自动集中润滑系统的研究分析
  20. __attribute__ ((__packed__)) 编译通不过

热门文章

  1. 字符集与编码(九)——GB2312,GBK,GB18030
  2. linux 常用技巧脚本分享
  3. javascript代码总结
  4. 华为HCNE专题一:网络基础知识
  5. TransR:实体和关系分开嵌入(知识图谱嵌入)2015 AAAI
  6. 光盘版linux6,光盘上的系统 Slax Linux 6.0.6新版
  7. Linux连接荣耀路由器pro2,荣耀路由pro2和电脑怎么连接?连接一体机方法
  8. 学以致用十-----centos7.2+python3.6+vim8.1+YouCompleteMe
  9. 以云为跳板,疑似中国黑客组织黑进全球知名IT服务公司
  10. MYSQL的随机查询的实现方法