Hyper-parameter

参数(Parameter)是我们训练神经网络最终要学习的目标,最基本的就是神经网络的权重 W和偏置b,我们训练的目的,就是要找到一套好的模型参数,用于预测未知的结果。这些参数我们是不用调的,是模型来训练的过程中自动更新生成的。

超参数(Hyperparameter)的定义:在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要训练者人工输入超参数,并作出调整优化,给学习机选择一组最优超参数,以提高学习的性能和效果。

batch_size

是什么:

即一次训练所抓取的数据样本数量。

batch size 指的是数据的个数,batch size = 10 指的是每次扔进神经网络训练的数据是10个。

有啥用:

BATCH_SIZE的大小影响训练速度和模型优化。

最大的好处在于使得CPU或GPU满载运行,提高了训练的速度。

其次是使得梯度下降的方向更加准确。

怎么用:

梯度方差表示:

Var(g)=Var(\frac{1}{m}\sum_{i=1}^{m}g\left ( x_{i},y_{i} \right ))

m为batch_size,m增大使得梯度方差减小,使梯度更准确。

1)若batch_size过大,比如另batch_size=训练集样本数量,相当于直接抓取整个数据集喂给网络(撑死它),首先memory 容易不够用;其次优化能力(training loss降不下去)和泛化能力(generalization gap很大)都会出问题。只适用于小样本训练,但小样本训练会导致过拟合现象,因此不建议如此设置。

        Gradient Descent:所有样本算出的梯度的平均值来更新每一步

2)若batch_size过小,比如另batch_size=1,梯度变化波动大,网络不容易收敛。

        Stochastic Gradient Descent:一个样本算出的梯度来更新每一步

3) batch梯度下降法

神经网络训练技巧讨论:如何选取batch size_batchsize的选择_silent56_th的博客-CSDN博客

 考虑内存/显存/计算资源限制,得到被允许的最大值,选取的batch size不能大于最大值。

  • 考虑数据集的平衡性,尽量使得batch中包含各个类别的样本。
  • 通过loss/metric变化曲线观察收敛稳定性,极度不稳定的情况可以增加batch size或者减小学习率;过于稳定的情况可以考虑减少batch size。
  • 收敛末期,可以考虑逐渐增加batch size,以及逐渐减小learning rate,使得学习结果更接近局部最小值。
  • batch size通常在log scale中调节,常见4的倍数笔者猜测是为了更高效的CUDA计算。

内存溢出(out of memory),因为batch size越大,每次喂给模型训练的数据就越大,从而所需ram内存就越多。

Epoch

是什么:

一个Epoch就是将所有训练样本训练一次的过程。

一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一次epoch。

(也就是说,所有训练样本在神经网络中都进行了一次前向计算和一次反向传播 )

epoch指的是次数,epoch = 10 指的是把整个数据集丢进神经网络训练10次。

有啥用:

随着epoch 数量的增加, 权重更新迭代的次数增多, 曲线从最开始的不拟合状态, 进入优化拟合状态, 最终进入过拟合。

怎么用:

epoch 大小与数据集的多样化程度有关, 多样化程度越强, epoch 越大。

Iteration

指的是次数,iteration = 10 指的是把整个数据集分成10次扔进神经网络。

Learning rate

是什么:

(Learning Rate,LR。常用η表示)事先设定的初始学习率 

它控制着我们在多大程度上调整网络的权重,确保不会超调。值越低,沿着向下的斜率就越慢。虽然这可能是一个好主意(使用低学习率),以确保我们不会错过任何局部最小值;但也有可能意味着我们将耗费很久的时间来收敛——特别是当我们陷入平坦区(plateau region)的时候。

如果使用很高的学习率,训练可能根本不会收敛,甚至会发散。权重的该变量可能会非常大,使得优化越过最小值,导致损失函数变得更糟。

new_weight=existing_weight-η*gradient

怎么用:

详细参考这个

如下图的权重w,在输出之后预测正确与否,若正确则保持权重w不变,若错误则用右边的公式来对权重w进行调整,如下图(👈参考来源)

那一般Learning Rate的取值都在0.0001到0.01之间,这个效果就像你走路的步子,步子迈达了,很容易错过最佳点,而迈小了又需要花更长的时间才能到最佳点。 

 所以,直观上来看,在这最好的办法是:先走快一些(大一些的Learning Rate),然后要到最佳点的时候,再降低Learning Rate来到达最佳点。

Decay_rate

衰减系数  (学习率的衰减系数)

Num_point

作为模型的输入,一般是希望每个点云中点的数量是相同的。采样、选子区域后,不能保证每个点的数量完全一样。假设希望最后每个点云有NUM_POINT=2048个点,当前点云中的点数为num

当采样后点数小于2048时,可以使用:

np.random.choice(num, NUM_POINT, replace=True)

当采样后点数大于2048时,可以使用:

np.random.choice(num, NUM_POINT, replace=False)

Optimizer

一大类方法是SGD及其改进(加Momentum);

另外一大类是Per-parameter adaptive learning rate methods(逐参数适应学习率方法),包括AdaGrad、RMSProp、Adam等。

参考

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值