吴恩达深度学习工程师

##########神经网络和深度学习#################

第一周:深度学习概论

1.3用神经网络进行监督学习

监督学习用于结构化数据(每个特征都有清晰的定义)和非结构化数据(音视频,文本等等)

神经网络能够更好的理解非结构化数据。神经网络改变了监督学习。

1.4为什么深度学习会兴起?

第二周:神经网络基础

2.1二分分类

神经网络中m个样本按列组成X输入

2.2逻辑回归

吴恩达深度学习工程师

希望y是一个0-1的概率值,所以要用sigmoid函数

2.3  logistic回归损失函数

loss function单个样本:

吴恩达深度学习工程师

cost function:    m个样本

吴恩达深度学习工程师

2.4 梯度下降法:

对于logistic回归,参数所有的初始化方法都可以,通常初始化为0。

2.5——2.6导数

2.7计算图

2.8计算图的导数计算

2.9    逻辑回归中的梯度下降法

2.10      m个样本的梯度下降法

2.11——2.12 向量化

2.13 向量化逻辑回归

吴恩达深度学习工程师

2.14  向量化的逻辑回归的梯度输出

吴恩达深度学习工程师

吴恩达深度学习工程师


2.15    python中的广播:

吴恩达深度学习工程师       对矩阵A的列求和

吴恩达深度学习工程师

吴恩达深度学习工程师


2.16  关于numpy向量的说明      

assert(判断条件)

2.17 jupyter和python笔记本的说明

未看

2.18    logistic损失函数解释:

吴恩达深度学习工程师

第三周:浅层神经网络

1,神经网络概览

吴恩达深度学习工程师

2.    神经网络表示:

从第n层到n-1层的第n层的W表示是:W(n层节点数,n-1层节点数)

3.     计算神经网络的输出:

4:多个例子中的向量化: 

5:向量化的解释:

6:**函数

tanh的效果基本总比sigmoid好,只有在输出层,为了使y介于(0,1),使用sigmoid,但他们都有一个缺点:当x很大时,梯度几乎为0,使用relu函数时,梯度下降较快;

7:为什么要用**函数:

只有在输出层可能用到线性函数

8:**函数的导数

吴恩达深度学习工程师

9——10神经网络的梯度下降

吴恩达深度学习工程师

11.随机初始化:

当参数W初始化为0时,无论输入样本是什么,在隐藏层中的结果是一样的,会出现对称性,隐层单元在计算相同的方程

把W初始化为较小的值的原因:因为**函数sigmoid,tanh,relu等,在数大的时候,梯度不明显,降低学习速率

第四周:深层神经网络

4.1深层神经网络

4.2前向传播

4.3核对矩阵维数

dw和w维度是一样的,db和b的维度是一样的

4.4为什么用深层表示

浅层网络要想和深层网络达到同样的效果,节点数要成指数倍增长

4.5搭建深层神经网络快:

吴恩达深度学习工程师

4.6前向传播和反向传播

吴恩达深度学习工程师





第二部分:改善深度神经网络:超参数调试、正则化及优化

第一周:深度学习的实用层面

1.1训练测试开发

样本不均衡的情况下,也即训练所使用的样本质量好,测试的时候的样本质量不好,要:测试机和验证集的分布相同会比较好

1.2偏差和方差

欠拟合:高偏差

过拟合:高方差

关键指标:训练集误差和验证集误差

高偏差并且高方差的情况是模型拟合了个别特殊数据,

吴恩达深度学习工程师

1.3机器学习基础
1.4正则化

解决高方差:增加数据是好的方式,也可以正则化

L1正则化,W最终是稀疏的,理论上可以压缩模型,但是效果并不明显

吴恩达深度学习工程师

1.5为什么正则化可以减少过拟合?

正则化是W减小,减小权重,相当于简化网络

1.6  Dropout正则化

dropout中的方法一:反向随机失活

吴恩达深度学习工程师

测试阶段不能用dropout,不然结果是随机的

1.7  Dropout的理解

对于一个神经元来说,引入dropout后,神经元的所有输入都将变成是一个随机存在的输入,也即每个输入都不变的不可靠,随机消失,这时权重W为了消除这个影响,会减小,也就起到了正则化的效果


吴恩达深度学习工程师

该层的神经元数目越多,可能keep-prob设置的越低。使用dropout的缺点是在交叉验证时,要搜索更多的参数

‘计算机领域中需要大量的数据,但是数据比较少,总是容易过拟合

损失函数没有了明确的定义,不容易训练

1.8  其他正则化方法

数据增强————当数据不够时,水平翻转等等增加训练集,裁剪,竖直反转不推荐

early stop————提早停止梯度下降,但也意味着不再优化代价函数J

1.9  正则化输入

归一化可以提高训练速度

在归一化过程中,测试集用到的平均值和方差应该是由训练集产生的,而不能是测试集产生的

1.10  梯度消失和梯度爆炸

1.11  神经网络权重初始化——应对梯度消失和梯度爆炸

relu函数时,权重初始化2/n开方,tanh时初始化为(1/nl-1)开平方称为Xavier初始化

1.12  梯度的数值逼近

双边误差小于单边误差,选用双边误差

1.13  梯度检验

检验反向传播是否正常运行

1.14  梯度检验实际中的情况

吴恩达深度学习工程师

吴恩达深度学习工程师

第二周:优化算法

2.1    Mini-batch梯度下降法

把训练集分成多个子集

2.2    理解Mini-batch梯度下降法

随机梯度下降噪声很大,消除了向量化带来的加速的效果,因为一次只是处理一个样本

mini-batch在最后不收敛的时候,可以尝试减小学习率

2.3   指数加权平均

可以将Vt看作是1/(1-β)天数的平均,例如:如果β=0.9,那么1/(1-0.9)=10,可以说是当前数值和前面10个的平均值吴恩达深度学习工程师

吴恩达深度学习工程师

2.4   理解指数加权平均
2.5   指数加权平均的偏差修正

让加权平均运算更加正确

吴恩达深度学习工程师

在实际使用中,不会受到偏差的影响,因为10轮迭代后,数据就接近正常预测了

2.6   动量梯度下降法

计算梯度的指数加权平均数,一般的梯度下降在整个过程中是震荡的,所以下降的速度会比较慢,不能用比较大的学习率,不然的话会像紫色线那样,结果偏离函数的范围

吴恩达深度学习工程师

2.7   RMSprop

也可以加速梯度下降,

吴恩达深度学习工程师

2.8   Adam优化算法

在此算法中,学习率α很重要    β1是动量梯度下降用0.9比较好   β2作者用0.999   二恩用10(-8)次方,一般不需要设置

 吴恩达深度学习工程师

2.9   学习率衰减
如果学习率不变的话,从一开始如果学习率设置的大,最后的结果会在最右值附近以之前学习率为根据变化,波动会比较大,用了学习率衰减后,随着训练轮数的增加,最后学习率降下来,最后的结果会在最优值附近较小的范围内波动

吴恩达深度学习工程师

吴恩达深度学习工程师

2.10   局部最优的问题

事实上,之前说的局部最优点,并不正确,因为梯度为0的点并不是局部最优点,而是通常是鞍点,所以在深度神经网络中,陷在局部最优点不太可能,还有一个问题是,在往鞍点下降的过程中,会较慢,因为鞍点附近的梯度基本为0

吴恩达深度学习工程师


第三周:超参数调试

3.1   调试

可以用网格搜索法

3.2   为超参数选择合适的范围

以学习率α为例,当在0.0001——1随机取值时,0.1-1有90%的概率,0.001——0.1之间太少.

吴恩达深度学习工程师

3.3   两种训练方式

一中是熊猫方式,一种是鱼子方式

3.4   正则化网络的**函数

batch归一化,对输入特征归一化,于是也可以对隐层进行归一化,但是我们不希望隐层归一化后的分布为均值0,方差为1的分布,于是对归一化后的隐层加上γ和β,这两个也是训练的参数,作用是可以随意设置Z=γz+β的均值,归一化通常是对z进行的,不是对a进行的

吴恩达深度学习工程师

3.5   将normbatch拟合进神经网络

吴恩达深度学习工程师

对每一层进行Batch归一化,因为z要进行归一化,所以每一层的b参数就没有意义,就算是加上,归一化后又减去,所以没用,就用归一化后β代替

3.6   norm为什么会奏效

吴恩达深度学习工程师

对于每一层运用norm归一化后,把每一层用归一化和γ、β限制起来,方差为1,减小每一层值的变化的范围,同时也能减小来自于别的层的影响,使网络即使是输入的分布变化很大,下一层的变化也只会在归一化后的方差内变化,增强了网络的稳定性。

3.7   测试阶段归一化

在训练的过程中,由指数加权平均算出u和σ,然后只用根据z,就能算出归一化

吴恩达深度学习工程师

3.8   softmax回归
吴恩达深度学习工程师

3.9   训练带有softmax的神经网络