当前位置:主页 > 蜘蛛池 > 如何优化神经网络? (加快培训并提高准确性)

如何优化神经网络? (加快培训并提高准确性)

时间:2020-09-23 03:45  来源:未知  点击

有钱:

自动ML自动调整(20美元/小时,我听说这个调整似乎很耗时......)

2.手动调整:

1)数据输入:

最佳加速性能不仅取决于高速计算硬件,还取决于高效的数据输入管道。为了解决I / O传输问题,有几个方面:SSD,缓冲池,数据读入和处理,以及并行的模型计算。

2)批量大:

为了充分利用大规模集群计算来实现更快的培训,人们不断增加批量大小,因为更大的批量大小允许我们扩展GPU的数量而不降低每个GPU的计算负荷。但是,过度增加批量大小会导致严重的精度损失!这是因为在批量较大的情况下(相对于训练样本的数量),样本的随机性降低,梯度下降的方向趋于稳定,并且训练从SGD接近GD,这使得模型更有可能收敛到初始点附近的某个地方。一种局部最优解决方案,可抵消增加计算能力的好处。

解决方向:学习率自适应

3)防止模型过度拟合:

一个。添加批量标准化层:调整要素的分布,使输出的要素图的分布更加均匀。这种效果通常很好。

湾参数的正则化:防止模型过度拟合的其他策略,例如参数的正则化,包括权重,偏差,BN beta和gamma,可以占模型的所有参数的一小部分,例如在AlexNet模型中。它们仅占总参数的0.02%,并且使这些参数正则化增加了计算量并为模型提供了一些灵活性。

C。辍学:辍学只能在训练集中阻碍网络学习的额外规律性。这种效果相对较强,但如果有太多的丢失层,例如在每层之后添加一个丢失,则会阻碍网络学习规则的强度。也会增加。

4)初始结构

多尺度信息嵌入在Inception结构中,并且聚合各种不同感受域中的特征以实现性能增益。请参阅ResNet变体,GoogLeNet,SENet等。

初始结构

5)重量初始化

权重初始化确定网络开始训练的位置。良好的起始位置不仅可以缩短训练时间,还可以使模型训练更加稳定,并可以避免许多训练问题。例如,垂死的ReLU问题,Relu可能使节点无法激活,那么你需要正确初始化w权重;你也可以用漏水的relu函数来解决。

6)超级参数调整

参数步长从粗到细:首先将调整参数值除以较大的步长,这可以减少参数组合的数量。在确定大的最佳范围之后,逐渐改进调整。例如,在调整学习率时,采取大步测试,发现当学习率lr较大时,收敛速度在早期阶段较快,后期阶段较为平缓。当lr很小时,早期阶段是温和的,后期阶段更快。根据该规则,继续进行微调,最终获得不同间隔的最佳学习。率;

低精度调整:在低精度训练过程中,遇到的最大问题是精度损失问题。通过分析相关数据,放大低精度边值并保证参数的有效性是回归高精度计算的重要方法。 ;

初始化数据调整:随着网络层数的增加,由于激活函数的非线性,初始化参数使得模型不太可能收敛,并且可以像VGGNet一样训练,首先训练浅网络,然后通过浅层网络。该参数逐步初始化深层网络参数,并且还可以根据输入和输出通道的数量范围初始化初始值。通常,输入通道的数量相对常见;对于完全连接的网络层,可以使用高斯分布;对于快捷方式的批量规范,参数gamma初始化为零。

还有其他细节,例如每个时代的随机训练数据等,想要优化神经网络,加快训练,提高准确性,更重要的是,创建更好的网络结构,并有更好的公式。