导航:首页 > 网络营销 > 神经网络调参有哪些技巧

神经网络调参有哪些技巧

发布时间:2023-05-14 18:54:49

‘壹’ 用caffe训练cnn怎么调参

这个问题,其实我也是初学,水平有限,说说自己的感觉吧。在潜意识里,我始终觉得神经网络的东西和中医看病有种隐隐的联系,经验(自己的和别谨大人的)、感觉这些谈不上有什么标准化的东西确是挺重要的东西。基于此,调试一个神经网络,就需要首先熟悉网络的每个层、每个参数的作用是什么,为什么要有这样的设置,通常researcher们都基于什么样的原则来悔晌悄设置碧渣?其次,多自己动手设置一下,找找感觉,看看不同的参数设置会产生什么样的效果,为什么会产生这样的效果(定量分析会比较困难,也可以凭着感觉想想为什么这样的设置会产生这样的效果,也可以直接把每层的output解刨出来看看)?最后,熟能生巧吧。。。

相关材料有很多,个人推荐两个大家熟知的可以常翻来看看:
Neural Network: Trick of the Trade Neural Networks: Tricks of the Trade
Practical Recommendations for Gradient-based Training of Deep Architectures http://arxiv.org/abs/1206.5533

‘贰’ 神经网络weight参数怎么初始化

不一定,也含型可设置为[-1,1]之间。事实上,必须要有权值为负数,不然只有激活神经元,没有抑制的也不行。至于为什么在[-1,1]之间就足够了,这是因为归一化和Sigmoid函数输出区间限制这两个原因。一般在编程时,设置一个矩阵为bounds=ones(S,1)*[-1,1]; %权值上下界。

在MATLAB中,可以直接使用net = init(net);来初始化。我们可以通过设定网络参数net.initFcn和net.layer{i}.initFcn这一技巧来初始化一个给定的网络。net.initFcn用来决定整个网络的初始化函数。前馈网络的缺省值为initlay,它允许每一层用单独的初始化函数。设定了net.initFcn ,那么参数net.layer{i}.initFcn 也要设定用来决定每一层的初始化函数。对前馈网络来说,有两种不同的初始化方式经常被用到:initwb和initnw。initwb函数根据每一层自己的初始化参数(net.inputWeights{i,j}.initFcn)初始化权重矩阵和偏置。前馈网络的初始化权重通常设为rands,它使权重在-1到1之间随机取值。这种方式经常用在转换函数是线性函数时。initnw通渣老举常用于转换函数是曲线函数。它根据Nguyen和Widrow[NgWi90]为层产生初始权重和偏置值,使得每层神经元的活动区域能大致平坦的分布在输入空间。如碧

‘叁’ 【阅读笔记】改进卷积神经网络的14个小技巧

原文: https://mp.weixin.qq.com/s/Lh_lJNvV9BGhc6no2ln-_g

原题目误导性太大

1)架构要遵循应用

你也许会被 Google Brain 或者 DeepMind 这些奇特的实验室所发明的那些耀眼的新模型所吸引,但是其中许多在你的用例或者业务环境中要么是不可能实现,要么是实现起来非常不现实。你应该使用对你的特定应用最有意义的模型,这种模型或许比较简单,但是仍然很强大,例如 VGG。

2)网络路径的激增

每年的 ImageNet Challenge 的冠军都会使用比上一届冠军更加深层的网络。从 AlexNet 到 Inception,再到 ResNet,Smith 注意到了“网络中路径数量倍增”的趋势,并且“ResNet 可以是不同长度的网络的指数集合”。

3)争取简单

然而,更大的并不一定是更好的。在名为“Bigger is not necessarily better”的论文中,Springenberg 等人演示了如何用更少的单元实现最先进的结果。参考:https://arxiv.org/pdf/1412.6806.pdf

4)增加对称性

无论是在建筑上,还是在生物上,对称性被认为是质量和工艺的标志。Smith 将 FractalNet 的优雅归功于网络的对称性。

5)金字塔式的形状

你也许经常在表征能力和减少冗余或者无用信息之间权衡。卷积神经网络通常会降低激活函数的采样,并会增加从输入层到最终层之间的连接通道。

6)过度训练

另一个权衡是训练准确度和泛化能力。用类似 drop-out 或者 drop-path 的方法进行正则化可以提高泛化能力,这是神经网络的重要优势。请在比你的实际用例更加苛刻的问题下训练你的网络,以提高泛化性能。

7)全面覆盖问题空间

为了扩展你的训练数据和提升泛化能力,请使用噪声和数据增强,例如随机旋转、裁剪和一些图像操作。

8)递增的特征构造

随着网络结构越来越成功,它们进一部简化了每一层的“工作”。在非常深层的神经网络中,每一层仅仅会递增的修改输入。在 ResNets 中,每一层的输出和它的输入时很相似的,这意味着将两层加起来就是递增。实践中,请在 ResNet 中使用较短的跳变长度。

9)标准化层的输入

标准化是另一个可以使计算层的工作变得更加容易的方法,在实践中被证明可以提升训练和准确率。批量标准化(batch normalization)的发明者认为原因在于处理内部的协变量,但是 Smith 认为,“标准化把所有层的输入样本放在了一个平等的基础上(类似于一种单位转换),这允许反向传播可以更有效地训练”。

10)输入变换

研究表明,在 Wide ResNets 中,性能会随着连接通道的增加而增强,但是你需要权衡训练代价与准确度。AlexNet、VGG、Inception 和 ResNets 都在第一层使用了输入变换以让输入数据能够以多种方式被检查。

11)可用的资源决指引着层的宽度

然而,可供选择的输出数量并不是显而易见的,这依赖于你的硬件能力以及期望的准确度。

12)Summation Joining

Summation 是一种常用的合并分支的方式。在 ResNets 中,使用总和作为连接的机制可以让每一个分支都能计算残差和整体近似。如果输入跳跃连接一直存在,那么 summation 会让每一层学到正确地东西(例如与输入的差别)。在任何分支都可以被丢弃的网络(例如 FractalNet)中,你应该使用这种方式类保持输出的平滑。

13)下采样变换

在池化的时候,利用级联连接(concatenation joining)来增加输出的数量。当使用大于 1 的步长时,这会同时处理连接并增加连接通道的数量。

14)用于竞争的 Maxout

Maxout 被用在你只需要选择一个激活函数的局部竞争网络中。使用求和以及平均值会包含所有的激活函数,所以不同之处在于 maxout 只选择一个“胜出者”。Maxout 的一个明显的用例是每个分支具有不同大小的内核,而 Maxout 可以包含尺度不变性。

1)使用调优过的预训练网络

“如果你的视觉数据和 ImageNet 相似,那么使用预训练网络会帮助你学习得更快”,机器学习公司 Diffbot 的 CEO Mike Tung 解释说。低水平的卷积神经网络通常可以被重复使用,因为它们大多能够检测到像线条以及边缘这些模式。将分类层用你自己的层替换,并且用你特定的数据去训练最后的几个层。

2)使用 freeze-drop-path

Drop-path 会在训练的迭代过程中随机地删除一些分支。Smith 测试了一种相反的方法,它被称为 freeze-path,就是一些路径的权重是固定的、不可训练的,而不是整体删除。因为下一个分支比以前的分支包含更多的层,并且正确的内容更加容易近似得到,所以网络应该会得到更好的准确度。

3)使用循环的学习率

关于学习率的实验会消耗大量的时间,并且会让你遇到错误。自适应学习率在计算上可能是非常昂贵的,但是循环学习率不会这样。使用循环学习率(CLR)时,你可以设置一组最大最小边界,在边界范围内改变学习率。Smith 甚至还在论文《Cyclical Learning Rates for Training Neural Networks》中提供了计算学习率的最大值和最小值的方法。参考:https://arxiv.org/pdf/1506.01186.pdf

4)在有噪声的标签中使用 bootstrapping 

在现实中,很多数据都是混乱的,标签都是主观性的或者是缺失的,而且预测的对象可能是训练的时候未曾遇到过的。Reed 等人在文章《TRAINING DEEP NEURAL NETWORKS ON NOISY LABELS WITH BOOTSTRAPPING》中描述了一种给网络预测目标注入一致性的方法。直观地讲,这可以奏效,通过使网络利用对环境的已知表示(隐含在参数中)来过滤可能具有不一致的训练标签的输入数据,并在训练时清理该数据。参考:https://arxiv.org/pdf/1412.6596

5)采用有 Maxout 的 ELU,而不是 ReLU

ELU 是 ReLU 的一个相对平滑的版本,它能加速收敛并提高准确度。与 ReLU 不同,ELU 拥有负值,允许它们以更低的计算复杂度将平均单位激活推向更加接近 0 的值,就像批量标准化一样参考论文《FAST AND ACCURATE DEEP NETWORK LEARNING BY EXPONENTIAL LINEAR UNITS (ELUS)》,https://arxiv.org/pdf/1511.07289.pdf。如果您使用具有全连接层的 Maxout,它们是特别有效的。

‘肆’ 你有哪些炼丹神器深度学习(rnn、cnn)调参的经验

对于 rnn 和 cnn 这种深度学习模型,常掘局明用的炼丹神器可能包括:

‘伍’ 神经网络调参技巧-From Andrej Kapathy

Andrej Kapathy 是计算机视觉和深度带早学习领域的专家之一,毕业于斯坦福人工智能实验室,博士师从李飞飞教授,在谷歌大脑、DeepMind 实过习,与吴恩达桥辩一起共事。Karpathy乐于而且善于分享自己的经验和见解,在推特和博客上非常活跃,有 AI “网红” 之称。近日,Karpathy将他训练神经网络的经验倾囊相授,获得大量好评: 《A Recipe for Training Neural Networks》

另外,还有一蠢消雀些常见经验:

‘陆’ 调参(网络超参数自动化搜索)

我们都知道神经网络训练是由许多超参数决定的,例如网络深度,学习率,卷积核大小等等。

而我们有四种主要的策略可用于搜索最佳配置。

照看法被称为试错法或在学术领域称为研究生下降法。这种方法 100% 手动,是研究员、学生和业余爱好者最广泛采用的方法。

该端到端的工作流程非常简单:学生设计一个新实验,遵循学习过程的所有步骤(从数据收集到特征图可视化),然后她按顺序迭代超参数,直到她耗尽时间(通常是到截止日期)或动机。

取自命令式指令“Just try everything!”的网格搜索——一种简单尝试每种可能配置的朴素方法。

工作流如下:

网格搜索和随机搜索之间唯一真正的区别在于策略周期的第 1 步 - 随机搜索从配置空间中随机选取点。

图像通过在两个超参数空间上搜索最佳配置来比较两种方法。它还假设一个参数比另一个参数更重要。这是一个安全的假设,因为开头提到的深度学习模型确实充满了超参数,并且研究员/科学家/学生一般都知道哪些超参数对训练影响最大。

从每个图像布局顶部的曲线图可以看出,我们使用随机搜索可以更广泛地探索超参数空间(特别是对于更重要的变量)。这将有助于我们在更少的迭代中找到最佳配置。

总结:如果搜索空间包含 3 到 4 个以上的维度,请不要使用网格搜索。相反,使用随机搜索,它为每个搜索任务提供了非常好的基准。

贝叶斯优化在不知道目标函数(黑箱函数)长什么样子的情况下,通过猜测黑箱函数长什么样,来求一个可接受的最大值。和网格搜索相比,优点是迭代次数庆手少(节省时间),粒度可以到很小,缺点是不容易找到全局最优解。

此搜索策略构建一个代理模型,该模型试图从超参数配置中预测我们关注的指标。

在每次新的迭代中,代理人将越来越自信哪些新的猜测可以带来改进。就像其他搜索策略一样,它也有相同的终止条件。

我们训练的模型越多,代理人对下一个有希望采样的点就越有信心。以下是模型经过 8 次训练后的图表:

贝叶斯优化的目的是找到当x等于某个值的时候y得到最大. 我们随机选取的10个点x=1..10里很可能没有包含那个值(对y=x*x来说就是0),那么我们需要找下一个点x, 获得其对应的采样点y. 这“下一个x”,是基于我们对前面10个点的多变量高斯分布的假设以及最大化AF而得到的,现目前为止我们认为的y的最大值最可能出现的位置

比如现在我们找到x=0.8为“下一个x”, 那么现在我们就有11个采样点,x=0.8,1,2...10 和他们对应的y值。这时候这11个点服从多变量高斯分布,我们再次最大化AF(每一次最大化AF,都需要多变量高斯分布的信息),得到"下一个x",如x=0.5,经过一定数量的迭代,我们可能可以得到y最大点在x=0.1之类。

常见的采集函数有下面三种,UCB,PI,EI,先介绍最李数好理解的UCB。

,k为调节参数,直观地理解誉扰嫌为上置信边界。

超参数 用于调节exploitation与exploitation, 更倾向于收敛到 附近, 表示正态累计分布函数, 表示现有的最大值。

其原理就是找到未知点的函数值比 大的概率,取这些点中概率最大的点,具体比 大多少不考虑,这里通过Z-scores标准化法,让每个未知点函数值大于 的概率可以进行比较。

Z-scores标准化法, ,x为观察点, 为所有观察点的均值, 为所有观察点标准差, 的概率密度函数符合标准正态分布。

为正态累计分布函数, 为正态概率密度函数, 表示现有的最大值。EI函数解决了PI未考虑未知点,比已知最大点大多少的问题,EI函数求的是未知点函数值比 大的期望

target:黑箱函数
x:自变量取值范围
Y:可以接受的黑箱函数因变量取值

x:贝叶斯优化器猜测的最大值的x值
target(xnew):贝叶斯优化器猜测的最大值的函数值

但是,跟所有工具一样,它们也有缺点:

提前终止不仅是一项着名的正则化技术,而且在训练错误时,它还是一种能够防止资源浪费的机制。

前三个标准显而易见,所以我们把注意力集中在最后一个标准上。

通常情况下,研究人员会根据实验类别来限定训练时间。这样可以优化团队内部的资源。通过这种方式,我们能够将更多资源分配给最有希望的实验。

‘柒’ 深度学习调参有哪些技巧

深度学习调参有哪些技巧?


下面就分享一些自己的深度学习模式调试技巧(主要是CNN)。

最后,让我谈谈我的感受。 卷积神经网络自从2012年在ImageNet竞赛中作为AlexNet模型出现以来,已经成为图像识别领域的标准。 即使是文字和音频领域也开始使用卷积神经网络进行建模。 然而,以卷积神经网络为代表的深度神经网络被批评为“黑盒子”,给行业DL模型的应用和推广带来一些障碍。

‘捌’ 深层神经网络的超参数调试、正则化及优化

训练集  ( Training set )

       作用是用来拟合模型,通过设置分类器的参数,训练分类模型。后续结合验证集作用时,会选出同一参数的不同取值,拟合出多个分类器。

验证集  ( Dev set )

       作用是当通过训练集训练出多个模型后,为了能找出效果最佳的模型,使用各个模型对验证集数据进行预测,并记录模型准确率。选出效果最佳的模型所对应的参数,即用来调整模型参数。如svm中的参数c和核函数等。

测试集 ( Test set )

       通过训练集和验证集得出最优模型后,使用测试集进行模型预测。用来衡量该最优模型的性能和分类能力。即可以把测试集当做从来不存在的数据集,当已经确定模型参数后,使用测试集进行模型性能评价。

一个有助于理解的形象比喻:

        训练集 ——  课本,学生根据课本里的内容来掌握知识。

        验证集 —— 作业,通过作业可以知道 不同学生学习情况、进步的速度快慢。

        测试集 ——  考试,考的题是平常都没有见过,考察学生举一反三的能力。

        训练集  直接参与了模型调参的过程,显然不能用来反映模型真实的能力(防止课本死记硬背的学生拥有最好的成绩,即防止 过拟合 ) 。

        验证集  参与了人工调参(超参数)的过程,也不能用来最终评判一个模型(刷题库的学生不代表其学习能力强)。

       所以要通过最终的考试 (测试集) 来考察一个学生(模型)真正的能力。

       如何将只有一个包含m个样例的数据集D,产生出训练集S和测试集T(验证集可以省略)?主要有以下三种方法:

自助法 ( bootstrapping )

       给定m个样本的数据集D,我们对它进行采样产生数据集D',每次随机从D中挑选一个样本,将其拷贝入D',然后再将样本放回原始数据集D。显然,该样本在下次采样时任然有可能被采到。这个过程重复m次后,我们就得到了含有m个样本的数据集D',这就是自助采样的结果。         样本有重复采样,也有一次也没有被采到的。从未采到的结果是 ,取极限得到

                                           

因此,使用自助法约有1/3的数据集没有被选中过,它们用于测试,这种方式叫“外包估计”。

       自助法在数据集小,难以划分训练集、测试集的时候有很大的效果,如果数据集足够大的时候,留出法和交叉验证是更好的选择。

留出法 ( hold-out )

       将整个数据集D划分为两个互斥的集合,其中一个作为训练集S,另一个作为测试集T。即,D=S∪T,S∩T=∅。在S上训练出模型,T作为测试集,来评估模型效果。

       当样本数据量较小(10000条左右及以下)时,通常取其中70%作为训练集,30%作为测试集;或60%作为训练集,验证集和测试集各20%。

交叉验证法 ( cross validation )

       如图所示,交叉验证法的实现流程大致如下:

       (1) 将整个数据集分成k个大小相似的子集,即D=D1∪D2∪...∪Dk,Di∩Dj=∅(故又称k折交叉验证法,通常取k=10 )。

       (2) 对于每一个模型Mi,算法执行k次,每次选择一个Sj(1≤j≤k)作为测试集,其它作为训练集来训练模型Mi,把训练得到的模型在Sj上进行测试,这样一来,每次都会得到一个误差E,最后对k次得到的误差求平均,就可以得到模型Mi的泛化误差。

       (3) 算法选择具有最小泛化误差的模型作为最终模型,并且在整个训练集上再次训练该模型,从而得到最终的模型。

       交叉验证的主要的目的是 为了选择不同的模型类型(比如一次线性模型、非线性模型) ,而 不是为了选择具体模型的具体参数 。比如在BP神经网络中,其目的主要为了选择模型的层数、神经元的激活函数、每层模型的神经元个数(即所谓的超参数),每一层网络神经元连接的最终权重是在模型选择(即K折交叉验证)之后,由全部的训练数据重新训练。

       假设这就是数据集,显然用简单分类器(如逻辑回归)并不能很好地拟合上述数据。这种情况称为  欠拟合  。

       相反地,如果采用一个非常复杂的分类器(如深度神经网络或含有隐藏单元的神经网络),拟合效果会非常好。但与此同时,模型的复杂度也会过高,这种称为 过拟合  。

       在两者之间,可能会存在一些复杂程度适中、数据拟合适度的分类器,拟合结果较为合理,称为 适度拟合 。

       如上图所示,训练集误差和验证集误差均较高时为 高偏差(欠拟合)  情况;训练集误差较高,验证集误差较高低时为  高方差(过拟合)  情况。

(1) 如何减小偏差(防止欠拟合)

       ① 增大神经网络规模。

(2) 如何减小方差(防止过拟合)

       ① 增加数据集样本数量;

       ② 正则化。

        参数   是指神经网络中由数据驱动并进行调整的变量,如𝑊和𝑏。

        超参数   是指无需数据驱动,而是在训练前或者训练中人为进行调整的变量。例如算法中的learning rate 𝑎(学习率)、iterations(梯度下降法循环的数量)、𝐿(隐藏层数目)、𝑛[𝑙](隐藏层单元数目)、choice of activation function(激活函数的选择)等都需要人为设置,这些数字实际上控制了最后的参数𝑊和𝑏的值,所以它们被称作超参数。

       神经网络中的超参数主要分为三类:网络参数、优化参数、正则化参数。

​网络参数

       可指网络层与层之间的交互方式(相加、相乘或者串接等)、卷积核数量和卷积核尺寸、网络层数(也称深度)和激活函数等。

优化参数

       一般指学习率(learning rate)、批样本数量(batch size)、不同优化器的参数以及部分损失函数的可调参数等。

正则化参数

       权重衰减系数,随机失活比率(dropout)等。

       正则化有利于减小训练集和验证集准确率的方差,防止过拟合。在无法增加样本数量或增加样本数量的成本过高时,正则化是一种行之有效的方法。

        一般将任意 维向量  的 - 范数定义为

                                                              

       根据定义:

       当 时, 的 范数为 ,表示向量 中非0元素的个数。

       当 时, 的 范数为 ,等于向量 中所有元素的绝对值之和。

        当 时, 的 范数为 ,等于向量 中所有元素的平方和开根号。

       正则化(Regularization) 的主要目的是控制模型复杂度,减小过拟合。最基本的正则化方法是在原目标(代价)函数 中添加惩罚项,对复杂度高的模型进行“惩罚”。

       对于神经网络模型, 正则化即在其代价函数中添加 正则项:

                                  

其中, 。之后再求解优化问题 即可。

       假设某三层神经网络存在过拟合问题,采用dropout正则化会遍历网络的每一层,并设置消除该层中每一个节点的概率(比如0.5),最后得到一个节点更少、规模更小的网络,然后再用反向传播方法进行训练,就能有效防止过拟合。

       最常用的方法是 inverted dropout(反向随机失活) 。对于一个三层神经网络( ),以第三层为例,实施dropout的步骤如下:

① 定义一个三层dropout矩阵d3:

                                     d3=numpy.random.rand(a3.shape[0],a3.shape[1])

其中,a3表示神经网络第三层的激活函数矩阵。

② 设置 ( )的大小。 表示保留某个隐藏单元的概率。将第①步产生的随机矩阵d3的每个元素与 进行比较,小于置1,大于置0,得到新的d3矩阵(1表示保留该节点,0表示删除该节点)。

③ 将a3与新的d3矩阵相乘(矩阵对应元素相乘),得到新的激活函数矩阵:

                                                       a3 =np.multiply(a3,d3)

④ 将新的a3矩阵除以keep-prob:

                                                              a3 /= keep_prob

目的是保证a3的期望值(均值)不变,从而保证第三层的输出不变。

① 使用dropout可以使得部分节点失活,可以起到简化神经网络结构的作用,从而起到正则化的作用。

② 因为dropout是使得神经网络的节点随机失活,这样会让神经网络在训练的时候不会使得某一个节点权重过大。因为该节点输入的特征可能会被清除,所以神经网络的节点不能依赖任何输入的特征。dropout最终会产生收缩权重的平方范数的效果,来压缩权重,达到类似于 正则化的效果。

① dropout在测试阶段不需要使用,因为如果在测试阶段使用dropout可能会导致预测值产生随机变化(因为dropout使节点随机失活)。而且,在训练阶段已经将权重参数除以keep-prob来保证输出的期望值不变,所以在测试阶段没必要再使用dropout。

② 神经网络的不同层在使用dropout的时候,keep-prob可以不同。因为可能有的层参数比较多,比较复杂,keep-prob可以小一些,而对于结构比较简单的层,keep-prob的值可以大一些甚至为1,keep-prob等于1表示不使用dropout,即该层的所有节点都保留。

      加快训练速度。

       对于一个神经网络模型,考虑其代价函数:

                                               

       如果未归一化输入,其代价函数的形状会较为细长狭窄。在这样的代价函数的限制下,为避免陷入局部最优解,梯度下降法的学习率必须设置得非常小。

       如果归一化输入,代价函数便呈现球形轮廓。这种情况下,不论从哪个位置开始梯度下降法,都能使用较大的学习率,从而更快速、直接地找到全局最优解。

      对于包含n个特征的m个样本的数据集,其输入归一化的过程主要分为两步:

① 零均值化

                                                             

                                                            

② 归一化方差

                                                           

                                                              

其中, 代表第 个样本的特征矩阵。

       训练集、验证集、测试集特征矩阵的平均值 和标准差 要保持一致,确保它们归一化后符合同一分布。

‘玖’ 如何训练神经网络

1、先别着急写代码

训练神经网络前,别管代码,先从预处理数据集开始。我们先花几个小时的时间,了解数据的分布并找出其中的规律。

Andrej有一次在整理数据时发现了重复的样本,还有一次发现了图像和标签中的错误。所以先看一眼数据能避免我们走很多弯路。

由于神经网络实际上是数据集的压缩版本,因此您将能够查看网络(错误)预测并了解它们的来源。如果你的网络给你的预测看起来与你在数据中看到的内容不一致,那么就会有所收获。

一旦从数据中发现规律,可以编写一些代码对他们进行搜索、过滤、排序。把数据可视化能帮助我们发现异常值,而异常值总能揭示数据的质量或预处理中的一些错误。

2、设置端到端的训练评估框架

处理完数据集,接下来就能开始训练模型了吗?并不能!下一步是建立一个完整的训练+评估框架。

在这个阶段,我们选择一个简单又不至于搞砸的模型,比如线性分类器、CNN,可视化损失。获得准确度等衡量模型的标准,用模型进行预测。

这个阶段的技巧有:

· 固定随机种子

使用固定的随机种子,来保证运行代码两次都获得相同的结果,消除差异因素。

· 简单化

在此阶段不要有任何幻想,不要扩增数据。扩增数据后面会用到,但是在这里不要使用,现在引入只会导致错误。

· 在评估中添加有效数字

在绘制测试集损失时,对整个测试集进行评估,不要只绘制批次测试损失图像,然后用Tensorboard对它们进行平滑处理。

· 在初始阶段验证损失函数

验证函数是否从正确的损失值开始。例如,如果正确初始化最后一层,则应在softmax初始化时测量-log(1/n_classes)。

· 初始化

正确初始化最后一层的权重。如果回归一些平均值为50的值,则将最终偏差初始化为50。如果有一个比例为1:10的不平衡数据集,请设置对数的偏差,使网络预测概率在初始化时为0.1。正确设置这些可以加速模型的收敛。

· 人类基线

监控除人为可解释和可检查的损失之外的指标。尽可能评估人的准确性并与之进行比较。或者对测试数据进行两次注释,并且对于每个示例,将一个注释视为预测,将第二个注释视为事实。

· 设置一个独立于输入的基线

最简单的方法是将所有输入设置为零,看看模型是否学会从输入中提取任何信息。

· 过拟合一个batch

增加了模型的容量并验证我们可以达到的最低损失。

· 验证减少训练损失

尝试稍微增加数据容量。

阅读全文

与神经网络调参有哪些技巧相关的资料

热点内容
电视电脑怎么共用一个网络 浏览:725
电信手机卡为什么网络波动大 浏览:760
国内如何使用国际网络 浏览:926
密码在网络空间中省份识别 浏览:609
经常网络错误怎么回事 浏览:911
网络线怎么看多少兆 浏览:853
四会网络营销网络推广系统 浏览:295
室内无线网络规划流程实验报告 浏览:798
手机卡2g网络吗 浏览:762
4g手机遇上5g网络怎么办 浏览:446
换网线后路由器无法连接网络 浏览:423
网络营销应注意的问题 浏览:604
苹果手机网络设置怎么修改 浏览:29
十大手机网络歌曲 浏览:782
戴尔游匣的无线网络开关 浏览:967
账号信息验证在哪个网络 浏览:69
手机软件本地网络错误什么意思 浏览:102
常用网络通信线路分几类都有哪些 浏览:572
电脑不限速的网络怎么设置 浏览:367
不带蜂窝网络的苹果手表 浏览:573

友情链接