目录
  1. 一、超参数的取值
  2. 二、Batch-Normalization(BN)
  3. 2.1 BN的基本思路
  4. 2.2 BN为何有效
  5. 三、Softmax
  6. 3.1 softmax数学表示
  7. 3.2 训练softmax网络

一、超参数的取值

需要处理的参数通常包括:

参数常用取值范围调试重要度
学习率α\alpha0.1最重要
动量0.9重要
优化参数β1,β2,ϵ\beta_1,\beta_2,\epsilonβ1=0.9,β2=0.999,ϵ=108\beta_1=0.9,\beta_2=0.999,\epsilon=10^{-8}一般不修改
层数layers一般
隐藏单元数hidden units重要
学习率衰减learning rate decay一般
批量大小mini-batch size重要

如何调试选择参数:

  1. 首先大范围随机选择参数,根据随机取点测试超参数的效果,确定影响最大的参数是哪个。因为对于实际问题而言,很难确定哪个超参数对结果的影响更大,在众多参数中如果一个一个测试往往找不到需要调试的参数。
  2. 采用由粗糙到精细的策略,找到随机测试中结果较好的参数范围,然后放大这一范围,在其中更密集的取值测试,搜索超参数的最优选择。

如何有效的随机取值

例如在搜索学习率α\alpha的取值,其取值可能范围是0.0001-1。如果使用常规的随机取值,那么取到的值将有90%在0.1-1,只有10%在0.0001-0.1,而实际情况是学习率在后者的可能性更大。

为了解决这个问题,可以采用对数轴。在对数轴上随机取值,这样就可以保证在0.0001-0.1的取值数量大幅增加。

一、超参数的取值

又例如在搜索动量β\beta的值,其取值范围可能是0.9-0.999,但是实际取值肯定会更接近0.9,因此也可以使用上面的方法,通过用上面的方法取1β1-\beta的值[0.001,0.1],来间接取β\beta的值。

关于为什么要采用非线性轴取值?因为超参数在不同的范围,对结果的灵敏度不同,以动量β\beta为例,其在0.9变化为0.9001,比从0.999变为0.9991,对结果的影响要大很多。因此需要更多的在灵敏度高的区间取值,故采用了非线性轴取值方法。

二、Batch-Normalization(BN)

2.1 BN的基本思路

在logistic回归中,我们使用了归一化方法(计算平均值、方差),改善了训练样本,加快了梯度下降的速度。

但在深层网络中,下一层做梯度下降的数据是上一层网络的输出结果。实际中会将上一层的数据,在激活之前进行归一化,然后再激活,传递给下一层。

在神经网络中,假设有一些隐藏单元值z(1)z(m)z^{(1)}\dots z^{(m)},计算:

μ=1miz(i)\mu=\frac{1}{m}\sum_i z^{(i)} σ2=1mi(ziμ)2\sigma^2=\frac{1}{m}\sum_i(z_i-\mu)^2 Znorm(i)=z(i)μσ2+ϵZ^{(i)}_{norm}=\frac{z^{(i)}-\mu}{\sqrt{\sigma^2+\epsilon}}

这样就实现了将每层网络的输出z进行了标准化,这时输出就是平均值0和方差1的数据,我们虽然想通过正则化规范数据,加快梯度下降,但我们不想让它们都服从同样均值和方差的分布,因此有了下面的变式:

z~(i)=γznorm(i)+β\widetilde z^{(i)}=\gamma z_{norm}^{(i)}+\beta

这里的γ,β\gamma,\beta是新的超参数,作用是设置输出z的平均值和方差。

2.2 BN为何有效

BN可以使权重比网络更滞后或更深层。

对于神经网络的某一层而言,其输入数据就是上一层的输出,由于随着参数的更新,上一层的输出是实时变化的,这就导致当前层的训练总是面对不同分布的输入。

使用BN后,可以将上一层的数据归一化到同一分布中,使上一层的输出数据更加稳定,进而保证之后的层有更好的基础。

总而言之,BN减弱了前层参数的作用与后层参数作用之间的联系,使网络每层都可以自己学习,稍微独立于整个网络,这样有助于加速整个网络的学习。

三、Softmax

3.1 softmax数学表示

前面提到的分类方法都是用于二分分类,而softmax回归则适用于多种分类。常用C表示输入类别个数,也等于输出层单元数。

使用时就是将最后一层的激活函数换成softmax。

例如设网络的最后一层为ll,则该softmax层计算过程如下:

计算线性部分: z[l]=w[l]a[l1]+b[l]z^{[l]}=w^{[l]}a^{[l-1]}+b^{[l]}

计算临时变量: t=ez[L]t=e^{z^{[L]}}

计算输出,也就是各个分类的概率: a[l]=titia^{[l]}=\frac{t_i}{\sum t_i}

假设z[l]z^{[l]}是一个(4,1)的向量,那么t,a[l]t,a^{[l]}的维度都是(4,1),其中a[l]a^{[l]}内的四个值就是四种分类的概率。

3.2 训练softmax网络

(1)损失函数

由于softmax的输出与分类个数相同,因此需要新的损失函数。

l(y^,y)=j=1yjlogy^jl(\hat y,y)=-\sum_{j=1}y_jlog\hat y_j

要想让损失函数尽量小,就需要让logy^jlog\hat y_j尽可能大,也就是对应的概率尽可能大。

(2)梯度下降

关键步骤是对softmax层求导:

dz[l]=y^ydz^{[l]}=\hat y-y