打卡1
深度学习的使用层面
1.1 训练/开发/测试集
* 应用深度学习是一个典型的迭代过程
1.2 偏差/方差
1.3 机器学习基础
* high bias (欠拟合)解决方法:尝试规模更大的神经网络
* high variance (过拟合)解决方法:采用更多的数据;正则化
*
打卡2
1.4 正则化
L1正则化可以产生稀疏权值矩阵
L2正则化可以防止模型过拟合
1.5 为什么正则化可以防止过拟合
(略)
打卡3
1.6 Dropout 正则化
dropout 实施方法:常用的是inverted dropput(反向随机失活)
keep-prob表示保留某个隐藏单元的概率
假设
d3
d
3
表示一个三层的dropout向量
a3
a
3
的作用是过滤掉
d3
d
3
中所有等于0的元素
反向激活失活方法通过除以keep-prob确保
a3
a
3
的期望值不变
1.7 理解dropout
1.使用dropout,每次迭代之后,神经网络都会变得比以前更小,因此采用一个较小神经网络和使用正则化的效果是类似。
2.dropout将产生收缩权重的平方范数的效果,和L2正则化类似,实施dropout的结果是它会压缩权重,并完成一些预防过拟合的外层正则化,dropout能被用作为一种正则化的替代形式
3.dropout与L2正则化不同的是,被应用的方法不同,dropout也会有所不同,甚至更实用于不同的输入范围;不同的层可以设置不同的keep-prob
4.dropout是一种正则化方法,主要应用于计算机视觉领域
1.8 其他正则化方法
1.数据扩充:比如猫图片分类器,将图片翻转作为新样本,比如识别数字,将数字做轻微变形来扩充样本等;
2.Early stopping
1.9 正则化输入
- 训练神经网络,其中一个加速训练的方法就是归一化输入
- 归一化输入的两个步骤:
1.零均值化
2.归一化方差
通过归一化后数据分布变化如下:
使用归一化的原因:
*如果使用非归一化数据,其代价函数是细长狭窄的
归一化后代价函数更均称,这样在使用梯度下降时,速度更快,更容易优化
打卡4
1.10 梯度消失与梯度爆炸
- 梯度消失:通常神经网络所用的激活函数是sigmoid函数,这个函数有个特点,就是能将负无穷到正无穷的数映射到0和1之间,并且对这个函数求导的结果是f′(x)=f(x)(1−f(x))。因此两个0到1之间的数相乘,得到的结果就会变得很小了。神经网络的反向传播是逐层对函数偏导相乘,因此当神经网络层数非常深的时候,最后一层产生的偏差就因为乘了很多的小于1的数而越来越小,最终就会变为0,从而导致层数比较浅的权重没有更新,这就是梯度消失。
- 梯度爆炸:梯度爆炸就是由于初始化权值过大,前面层会比后面层变化的更快,就会导致权值越来越大,梯度爆炸的现象就发生了。
1.11 神经网络的权重初始化
* Xavier初始化可以帮助减少梯度弥散问题, 使得信号在神经网络中可以传递得更深。是最为常用的神经网络权重初始化方法。
1.12 梯度数值的逼近
略
1.13 梯度检验
- 梯度检验可以用来检验神经网络实施是否正确
代价函数:
J(W[1],b[1],....,W[l],b[l])=J(θ)
J
(
W
[
1
]
,
b
[
1
]
,
.
.
.
.
,
W
[
l
]
,
b
[
l
]
)
=
J
(
θ
)
分别对W,b求导,得到与
θ
θ
相同维度的
d(θ)
d
(
θ
)
,
通过计算
dθappox
d
θ
a
p
p
o
x
是否约等于
dθ
d
θ
来检验梯度下降结果是否正确;
如果
||dθappox−dθ||2||dθappox||2+||dθ||2
|
|
d
θ
a
p
p
o
x
−
d
θ
|
|
2
|
|
d
θ
a
p
p
o
x
|
|
2
+
|
|
d
θ
|
|
2
约等于比
10−5
10
−
5
则说明梯度下降结果正确,否则存在问题,需要检查所有
θ
θ
项
1.14 关于梯度检验实践
- 不要在训练中使用梯度检验,它只用于调试
- 如果算法的梯度检验失败( dθappox d θ a p p o x 和 dθ d θ 相差很大),要检查所有项;例如:如果发现相对于某些层或某层的 db[i] d b [ i ]
- 在实施梯度检验时,如果使用正则化,请注意正则项;
- 梯度检验不能与dropout同时使用
- 当W和b接近0时,梯度下降的实施是正确的,但是在运行梯度下降时W和b变得更大,可能只有在W和b接近0时,backdrop的实施才是正确的,但是当W和b变大时,它会变得越来越不准确,可以在随机初始化过程中,运行梯度检验,然后再训练网络(不常用)