Tunning Process:
1.都有哪些超参数需要调试呢?
learning_rate(最需要调的***), dropout概率,Momentum beta(一般0.9差不多,但是可以调**), Adam最优化的beta1,beta2(一般这两个分别取0.9,0.999) and (
),层数*,每一层的单元数(**),learning rate decay*,mini-batch size(**速度保证)
2.Don't use a Grid but choose the points randomly
and zoom in to a smaller area then sample more densely
2.Using an appropriate SCALE to pick hyperparameters
Uniformly random(有些时候整数的如层数,num of hidden units 仍然可以用)
Exponentially Uniformly random
Uniformlly 抽取随机整数r , 然后 作为随机数(灵活使用,比如
0.9~0.999之间就用这种方法抽取1-
)
不这么做影响大的地方抽取的太少,影响小的地方抽取的又太多(more efficient)
3.Babysitting one model vs Training Many models in parallel
Babysitting : When you have Limited resources
4.Batch Normalization
Steps:
1) 对于每一层的输出层进行归一化(减均值,然后除方差),得到(注意除以方差的时候加个
防止除0)
2) 将归一化为N(0,1)的数据变成N(
,
)分布的数据(仿佛是上一步的逆向操作一样,但是
和
向量的取值可以是任意值,是梯度下降学习到的,只有当
=
,
的时候是跟原始输出数据是一样的)
Implementing:
1)和
都可以和W参数一样通过梯度下降学习,包括使用momentum和Adam等优化算法方法都是一样的
2) Wx+b中的b在使用batch normalization 的时候不起作用,因为减均值的时候会被减掉,最后的均值由BN参数决定,所以如果使用了BN,可以不用优化b(b==0)
原理:BN为什么能够提高调参效率
1) 最主要原因:改善Covariate Sift 问题,先把分布拉回到一个N(0,1)分布,然后假设每一层的输出服从一个固定的均值为方差为
的分布,从而使每一层Independently学习(该层样本间独立同分布,且这个分布是假定不变的),减少前面层对本层的影响
2) 如同特征输入层归一化一样,使数据从椭圆的分布变成圆的均匀的分布
Testing的时候均值和方差的问题
问题:训练的时候均值和方差是用每个batch的样本计算出来的,可是test的时候可能只有一个样本,没法计算均值和方差
解决方法:BN训练的过程中,对于每个batch的计算的均值和方差求Exponentially Average,最后得到均值和方差的估计值
5.Softmax
1.多分类,generalized logistic regression
最后一层输入层: (
是(C * 1)维度的,C是多分类类别数量)
softmax激活函数:
就是说对每一个元素z_i,变换为,然后除以所有e^z_i的和(归一化为一个概率值)
softmax回归的分类边界也是线性的,只不过有多条线,所以可以处理多分类问题
对比hardmax: (0,0,1,0,0)非1即0,softmax每个元素都有值,只是大小不一样
2.Training
损失函数:
然后梯度下降就行了
网友评论