Course 2

1.10 梯度消失与梯度爆炸

梯度函数呈指数级增长或指数级递减,导致训练难度上升

梯度下降算法的步长需要非常小,要花费很长时间来学习

1.11 神经网络的权重随机初始化

当使用ReLU函数时设置初始权重的方差为2/n,使用其他激活函数(如tanh)时可设置方差为1/n,降低梯度消失和爆炸问题

目的是为了训练出权重和梯度不会增长或消失过快的深度网络

1.12 梯度的数值逼近

双边公差为3.0001,单边公差为3.0301,双边误差比单边误差更小

1.13 梯度检验

检查误差的式子中的分母用于预防向量太小或太大

1.14 关于梯度检验实现的注记

使用dropout正则化后很难计算代价函数J,因此不能同时使用dropout正则化和梯度检验

在随机初始化过程中运行梯度检验,然后再训练网络,此时w和b不接近于0,可以更好地确定w和b;若随机初始化值比较小,则反复训练神经网络之后再重新运行梯度检验

2.1 Mini-batch 梯度下降法

mini-batch梯度下降法比batch梯度下降法运行地更快

2.2 理解mini-batch梯度下降法

mini-batch梯度下降曲线的噪声(波动)产生的原因是每个批计算得出的cost不同,可大可小,分批进行计算梯度就会产生这样的波动,总体没问题

mini-batch大小为m(样本总数量)时最终结果最准确,总是向着最小值的方向靠近,但是每次迭代的耗时很长

mini-batch大小为1时即随机梯度下降,最终结果会一直在最小值附近波动但是不会停留在最小值,通过减小学习率可以改善或减少噪声,但是最大缺点是失去了向量化的加速作用

中等大小的mini-batch不会总是向着最小值方向靠近,但是比随机梯度下降更持续地靠近最小值方向,同时通过矢量化加速后训练速度更快

2.3 指数加权平均

第t天的温度为 $V_t=\beta V_{t-1}+(1-\beta)\theta_t$ ,其中$\theta_t$为第t天的温度

$V_t$相当于前$\frac{1}{1-\beta}$天的温度平均值

$\beta$为0.9时为红线,增长速度较恰当

$\beta$为0.98时为绿线,是前50天的温度平均值,因此增长较慢曲线较平缓

$\beta$为0.5时为黄线,前2天的温度平均值,平均的样本太少因此噪音大

2.4 理解指数加权平均

如图所示,上面的坐标图为样本点分布,下面的坐标图为每个$\theta$的系数的分布,根据参数$\beta$可知系数分布呈指数形式$0.1\times (0.9)^{100-t}$。而拟合后的曲线的每个样本点的值则为上方的前$\frac{1}{1-\beta}$个样本点的值分别乘下方的前$\frac{1}{1-\beta}$个样本点的值后的求和。

所有系数之和近似为1。

由于有公式$(1-\epsilon)^{\frac{1}{\epsilon}}=\frac{1}{e}$,因此当$\beta$为0.9时$\epsilon=1-\beta=0.1$,此时往前数第$\frac{1}{\epsilon}=10$天即$V_{90}$的系数值恰好为当天系数值的$\frac{1}{e}$,因此当$\beta=0.9$时$V_t$的值为前10天的温度的平均值。

由此可推出$V_t$相当于前$\frac{1}{1-\beta}$天的温度平均值,这是大致的思考方向而不是数学证明。

实际执行:

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

若$V_0$为0则计算$V_1$和$V_2$时得出的结果会偏小,即如图中紫色曲线所示,刚开始的几个点的值会比绿色线的值小,到了后面才重合。

为了修正偏差,采用公式$\frac{V_t}{1-\beta^t}$对$V_t$进行修正,当t较小时修正效果明显,当t较大时分母趋近于1而计算结果近似于原来的值,因此起到了对刚开始的几个点的值的修正作用。

2.6 动量梯度下降法

因为纵轴方向上的分量的均值接近于0,因此使用指数加权平均后梯度下降曲线在纵轴方向上的波动小了很多,减少了不必要的计算。

同时因为在横轴方向上的分量始终向着最小值方向,因此在横轴方向上下降的速度比使用动量梯度下降法之前要快

比喻:就像一个球在从碗边往下滚,$\beta$相当于摩擦力,$V_{dw}$和$V_{db}$相当于速度,$dw$和$db$相当于加速度。

$\beta =0.9$是很棒的鲁棒数,效果很好

使用梯度下降法或Momentum时通常不会受到偏差修正的困扰,因此无须进行偏差修正

有的论文会删去$dW$的系数$(1-\beta)$,这两种方法效果都很好,只会影响到学习率$\alpha$的最佳值。通常不倾向于这么做,因为调整参数会很麻烦。

2.7 RMSprop

全称为root mean square prop

$S_{dW}=\beta S_{dW}+(1-\beta)(dW)^2$

$S_{db}=\beta S_{db}+(1-\beta)(db)^2$

$W:=W-\alpha\times\frac{dW}{\sqrt{S_{dW}}}$

$b:=b-\alpha\times\frac{db}{\sqrt{S_{db}}}$

若$dW$较小而$db$较大,则得出的W较大而b较小,结果就是纵轴(b方向)上摆动较小而横轴(W方向)上继续推进,这样就可以用一个更大的学习率$\alpha$来加速学习。

实际上$dW$和$db$都是高纬度向量,但是RMSprop算法始终能够去掉那些有摆动的方向。

实际中要在分母加上一个很小的值$\epsilon$,防止分母为0,$\epsilon$为多少没关系。

2.8 Adam 优化算法

该算法被证明能够有效适用于不同神经网络

参数默认值如下:

image-20251010153150451

需要调整学习率$\alpha$,其余的通常选择默认值。

2.9 学习率衰减

image-20251010153535402

本质在于在学习初期,能够承受较大的步伐,但当开始收敛的时候,小一些的学习率能够让步伐小一些去靠近最优值。

image-20251010154125675

$\alpha=\frac{1}{1+DecayRate*EpochNum}\times\alpha_0$

其他衰减方式:

image-20251010154510983

2.10 局部最优问题

image-20251010155803803

plateaus 平稳期

image-20251010160021291

3.1 调试处理

image-20251022191432063

要调试的参数重要性(用方框颜色表示):红>黄>紫

image-20251022191755861

image-20251022191842236

随机取值

从粗糙到精细,缩小范围进行搜索

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

image-20251022192423508

数轴上取值的过程,不用随机均匀取值法,要按图中的方法

在图中最小值的对数为a,最大值的对数为b

image-20251022193137997

原因:当参数$\beta$接近1即$(1-\beta)$接近0时灵敏度会变化,即使参数值变化很小,所以要给接近1的区间分配更多搜索资源

3.3 超参数训练的实践:Pandas VS Caviar

image-20251022193812336

3.4 正则化网络的激活函数

输入特征值X常被归一化为均值为0方差为1,而我们可能可以希望可以自由选择隐藏单元被归一化后的均值和方差

image-20251022194854865

通过赋予$\gamma$和$\beta$来构造含其他平均值和方差的隐藏单元值,其中$Z_{norm}^{(i)}$矩阵中的元素均值为0方差为1

注意,这里的$\beta$跟momentum和Adam中的$\beta$没有关系,两者完全不同

3.5 将 Batch Norm 拟合进神经网络

image-20251022195630808

注意,这里的$\beta$跟momentum和Adam中的$\beta$没有关系,两者完全不同

image-20251022200507528

因为在对$Z^{[l]}$归一化减去均值的时候会把参数$b^[l]$消去,所以可以把参数$b^[l]$省略

总体算法流程:

image-20251022200910716

3.6 Batch Norm 为什么奏效?

image-20251022203515434

1、batch归一化限制了在前层的参数更新,影响数值分布的程度,使得中间参数的数值分布更稳定,因此batch归一化减少了输入值改变的问题。

它减弱了前层参数的作用与后层参数的作用之间的联系,使得网络每层都可以自己学习,稍稍独立于其他层,有助于加速整个网络的学习。

2、batch归一化有轻微的正则化效果,因为给隐藏单元的参数添加了微小的噪音,这迫使后层的单元不过分依赖于任何一个隐藏单元。

可以将batch归一化和dropout一起使用

如果使用了batch-size较大的batch会轻微减少正则化效果,这是dropout一个奇怪的性质

不要把batch归一化当做正则化的方式,用来加速学习了会有意想不到的副作用

3.7 测试时的 Batch Norm

image-20251022210236767

$\theta$为对应隐藏层的Z的均值的估值,X_{i}为第i个mini-batch对应的输入特征值

可以根据每个mini-batch训练出的结果用指数加权平均来追踪求得在对应层的$\sigma^2$和$\mu$的值

根据训练集估算$\mu$和$\sigma^2$,然后在测试集对隐藏单元的Z值进行调整

3.8 Softmax 回归

image-20251023092140897

最后一层softmax的输出$a^{[l]}$为结果是各个类别的可能性

特殊性:输入一个向量,最后输出一个向量

image-20251023092630003

图中为Softmax分类器没有隐藏层的情况下的分类结果,决策边界均为线性,使用含有隐藏层的神经网络可以学习更复杂的非线性决策边界。

3.9 训练一个 Softmax 分类器

image-20251023093318564

Hardmax:最大的元素输出为1,其他的输出为0

image-20251023093908453

3.10 深度学习框架

image-20251023095339418