吴恩达深度学习_第二课(3)《超参数调试、Batch正则化和程序框架》

调试处理

需要处理的参数:

参数重要程度
学习率 α★★★★
Momentum(动量梯度下降法)参数 β = 0.9★★★
隐藏单元数量★★★
mini-batch size★★★
网络层数★★
学习衰减率★★
Adam 优化算法的 β1 = 0.9,β2 = 0.999,ε =1e-8
  • 在深度学习领域,常采用在超参数组成的矩阵中,随机选点进行参数搜索(试验了更多的不同的超参数值)
    在这里插入图片描述

  • 由粗糙到精细的策略,从最初的范围筛选,然后集中到可能更优的小区域进行更密集的搜索。

在这里插入图片描述

为超参数选择合适范围

  • 在对数坐标上取值,会更加合理。否则像下面0.0001~1的范围内,就会出现90%的取值出现在0.1 ~ 1 之间,不能合理在 0…0001 ~ 0.1之间取值
    在这里插入图片描述

np.random.rand在(0,1)范围内随机取值,然后乘 -4 ,将其作为指数,最终范围限制在(0.0001~1)之间

β取值(公式在下面图片),用于计算指数的加权平均。 假设β是0.9到0.999之间的某个值。当计算指数的加权平均值时,取0.9就像在10个值中计算平均值,有点儿类似于计算10天的温度平均值,而取0.999就是在1000个值里面取平均。

如果想在0.9到0.999区间搜索,那就不能用线性轴取值,否则还是会产生取值不均匀的问题。最好的方法就是,探究1-β,此值在0.1到0.001区间内,所以会给1-β取值,这是10−1,10−3

所以要做的就是在[-3, -1]里随机均匀的给r取值。用这种方式,你在0.9到0.99区间取到的数量,和在0.99到0.999区间取到的一样多。


在这里插入图片描述


超参数训练实践:Pandas VS Caviar

  • 在数据更新后,要重新评估超参数是否依然合适
  • 没有计算资源,你可以试验一个或者少量的模型,不断的调试和观察效果(熊猫式)
  • 有计算资源,尽管试验不同参数的模型,最后选择一个最好的(鱼卵式)

归一化网络的激活函数

归一化是为了加快训练速度

Batch归一化使你的参数搜索问题变得很容易,使神经网络对超参数的选择更加稳定,超参数的范围会更加庞大,工作效果也很好,也会使你的训练更加容易

对于任意一层的输入,我们通常将 z[i] 归一化,而不是归一化 a[i],也就是在激活前就进行归一化操作。

在这里插入图片描述

这里的Z(i)是第L层的神经元(省略了上标[L] ),计算均值和方差,并使用均值和方差进行归一化操作,得到Z(i)norm,使得本层的每个神经元平均值为0,方差为1。

但是我们不想让每一层的均值都为0,方差为1;也许有不同的层上,使用不同的分布更有意义,加上2个超参数 γ , β,均是学习参数,在梯度下降 / 类似梯度下降的算法(momentum / Adam)中更新,以控制Z~(i)
在这里插入图片描述

这里是上面式子的证明:

当γ和β分别等于Z(i)norm式的分母分子时,就能明显通过γ,β,Z(i)norm这三个参数确定Z~(i)
在这里插入图片描述
所以设置γ和β可以构造含其它均值和方差的隐藏单元值

将 Batch Norm 拟合进神经网络

在这里插入图片描述

先输入X,借助参数w和b计算Z,再使用γ和β进行batch norm操作,得到Z~,再通过激活函数得到a。

此后,网络中参数除了w和b,还应该有各层的γ和β,并且这些γ和β也是通过和w类似的更新策略进行更新。

在这里插入图片描述

如果使用batch归一化,由于每层中每个单元的Z = WX+b中都加了b,回顾上面Z(i)norm的计算公式分子部分,相当于每个都加b,减去均值肯定也加b,等于没加。所以可以不考虑参数b

提醒一下各参数的尺寸,β和γ均为 (n[l] , 1)

为何BN可以生效

  • 原因1: 归一化使得输入特征、隐藏单元的值获得类似的范围,可以加速学习。

经常会出现一个问题:如果已经训练好x到y的映射,这时再更换x的分布,可能需要重新训练。

  • 原因2 : 归一化可以保证,即使输入值变化,但是他们的均值和方差不会发生变化。因为这些值是由上面提到γ 和 β确定的。

作用:
限制了由于前面隐藏层发生参数变化,影响本层输入分布的程度,简单说就是增强了输入改变时的稳定性。
在每一层进行BN就可以使每一层与前一层 or 后一层的相互作用减弱,降低耦合度

同时,BN有轻微正则化效果。

个人理解:正则化通过增加噪声防止过拟合,norm通过调整input的分布来降低训练集改变对后面层的影响,但会带来噪音,所以也有轻微正则化作用

测试时的 Batch Norm

训练时, μ和σ² 是在当前mini-batch上计算。
在这里插入图片描述

但是测试的时候,我们需要对每一个样本进行预测,无法进行均值和方差的计算。同样的道理,就像我们在训练的时候,可以得到权重W和偏置b,但是我们在测试的时候,则是通过这些参数来进行预测,而无法求出测试样本所对应的W和b

你或许不能将一个 mini-batch 中的所有样本同时处理,可能需要逐一处理,需要使用加权平均运算μ和σ²的值。

在这里插入图片描述


在这里插入图片描述


  • 训练集:均值方差只用当前mini_batch计算
  • 测试集:均值方差使用测试集样本的移动加权平均计算

softmax回归

相比softmax,其实之前还有hardmax(是将概率较大直接置1)

在处理多分类问题时,最后根据各个分量的概率,确定是哪个分类,通常使用C表示种类的个数。
在这里插入图片描述

software在最后一层时,左边的a[L]可以理解为g(z[L]),其实这起到归一化效果。根据z输出判断a的结果。右边是一个例子,算得权重分别为:0.842, 0.042, 0.002, 0.114。输出为下标0的分类。

在这里插入图片描述
假设没有隐藏层,直接把坐标输入softmax层,不同的分类个数会产生图中的效果,因为没有中间的隐含层,所以决策边界是线性的。

训练一个softmax分类器

在这里插入图片描述
还是我们上一个例子,左边是softmax计算出来的各类型的概率,右边hardmax算法比较武断,直接置0置1。此外,如果C为2,那么其实就是逻辑回归。

softmax的损失函数

在这里插入图片描述

y是我们训练前的真值情况,意思是这个图片是cat。假设右侧是我们前向传播的预测概率,cat概率只有20%。
由于只有y2是1,所以观察代价函数L,如果期待代价函数变小,y2hat 的 值就要变大,其实也就是往正确的方向走。

TensorFlow

吴恩达老师讲了TensorFlow,但因为实验室不使用,所以无笔记,查看的话是P81

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值