研究问题和问题假设存在严重的漏洞,还是缺乏足够的相关工作研究,导致了所谓新瓶装旧酒的新问题。
模型的选择与想解决的问题牛头不对马嘴.
实验的设计是错误的,并没有针对所声称的模型优势来进行实验设计(试图用不合理的实验分析迫使圆圈后退)。比如一篇论文号称可解释性,却以准确性为指标。
1. 花点时间了解你的数据,2. 不要过度地分析数据,3. 确保你拥有足够的数据,4. 和领域内的专家保持交流,5. 好好做文献调研!好好做文献调研!和6. 考虑好要如何部署模型,1. 不要混淆训练和测试数据!,需要用测试集来证明模型的泛化能力。无论在训练集中的表现有多好,都可能只是过拟合。只有在尽可能接近实际场景的测试集中表现合格,才能证明模型的训练是有效的。您的训练集中的数据可以在单一条件下收集,但您的测试集中的数据必须包括各种情况。还有测试集和训练集绝对不能有重合.
根据2. 多尝试几个模型's的“没有免费的午餐”理论,没有一种机器学习方法能在所有领域都表现最佳。所以,当你把机器学习引入自己的领域时,多尝试几个模型,确保你用的是最合适的。当然都不适合你:)
由于3. 不要使用不合适的模型,有太多的机器学习库,机械复制的现象变得越来越普遍。不知道模型的输入输出。我只想用新兴的神经网络来炮轰一切问题。当我看到新型号时,我想使用它。听起来我的血压会升高吗?
4. 好好调参!好好调参!重复了一遍,因为白鹧鸪太懒了,它不喜欢调整参数,需要推动自己。
很多模型都有超参数,超参数对模型的性能影响很大,不同的字段/数据集对超参数有不同的要求。所以,即使是懒,也必须采用一些自动化方法来调参,如网格搜索,既简单又粗暴,吾爱。如果模型较大,训练成本较高,甚至可以使用一些工具包来帮助调整参数。
需要指出的是,虽然经常有一些关于参考调整的批评(类似于“这篇论文的好效果完全取决于参考调整!”投诉),但有必要调整参数。应该避免的是不规范的参数调整和不公正的实验对比。比如不能用测试集数据调整参数;并且,不能只是疯狂的调整自己模型的参数,所有在用的模型都要同样的调整,等等。
5. 注意调参和选择特征的阶段's超级参数调整和功能选择应该是训练的一部分,而不是在训练前说一次一切都会好的。尤其是特征选择,如果对整个数据集进行统一选择,很可能会将测试数据和训练数据中包含的知识混杂在一起,导致测试结果不可靠。因此,最好只对你训练用的那一部分数据进行调参和特征选择. A推荐的方法是嵌套交叉验证,即在交叉验证之外设置一圈验证,以测试不同的超参数和特征选择对模型的影响。
1. 选择合适的测试集可以证明模型的泛化是一个很好的测试集。无论在训练集中的表现有多好,都可能只是过拟合。只有在尽可能接近实际场景的测试集中表现合格,才能证明模型的训练是有效的。您的训练集中的数据可以在单一条件下收集,但您的测试集中的数据必须包括各种情况。还有测试集和训练集绝对不能有重合.
当2. 验证集是有必要的开始机器学习的时候,我还不知道验证集的概念,也不知道为什么要捏出那么多数据作为验证集(甚至有人告诉我验证集是可选的,谢谢!)。验证集主要用于训练过程中比较多个模型的性能。当您需要同时使用不同的超参数设置训练几个模型时,验证集是帮助您选择这些模型的工具。虽然测试集不直接参与模型的训练,但它指导训练方向。验证集就是训练和测试之间的缓冲地带,保证了模型的训练集和测试集没有任何重叠.验证集的另一个好处是,你可以用它来检查你的模型是否真的学会了数据的规律,当你看到糟糕的情况时,你可以趁早停止。如果模型的性能在验证集中先上升后下降,很可能是模型过拟合的迹象。
3. 一个模型多验证几次的机器学习模型有多不稳定?相信用过GAN和RL的人都有话说。在随机抽取训练样本的情况下,模型可以向各种神奇的方向发展,收敛到各种局部最优。这就是为什么我们需要交叉验证的方法,它可以尽可能的保证模型的训练效果,并在一定程度上防止过拟合。需要注意的是,如果数据集中存在类别不平衡,最好确保每个验证组可以包含所有类别。在交叉验证的过程中,强烈建议您记录每轮测试的均值和方差。这些数据将在比较模型性能时发挥重要作用。
4.
留点数据用于最终验证在训练过程中,交叉验证可以很大程度上保证一类模型的训练效果的稳定性,但是,对于训练中的每个模型个体,这样的验证还不够充分,因为每组交叉验证的子集中数据量往往都不大,不一定具有泛化性,说不定,表现最好的模型只是恰好遇到了最简单的验证子集。因此,如果你的数据还算充裕,最好能留一部分数据,在训练结束之后再无偏验证一下模型们的表现。5. 数据不均衡的时候,精度是没有意义的数据采集不均衡的情况很常见。例如,很多的自动驾驶的数据集中,行人、自行车、卡车的数量加起来还没有小轿车多。这种情况下,用模型对交通参与物分类的精度作为衡量模型表现的标准,恐怕意义不大。这种情况下,应当先对不同类别样本的分类精度进行一致性检验,或者采用一些适用于不均衡数据的评估指标,例如Kappa系数,Matthews相关系数等。
1. 不要以为分高了模型就好这真是非常常见的问题:“XX模型精度94%,我们的模型精度95%,所以我们nb”。然而,可能存在几种可能性:两个模型是在不同的数据集上测试的(直接毙了吧);两个模型用的同一个数据集,但是训练和测试集划分并不一样,特别有些论文,直接引用他人模型训练出来的精度,连复现都不带的(危);复现的模型超参数可能和原论文存在出入,或者没有费心去调参。总之,比较模型表现的时候,可能出现各种各样的事故,一定要记得将模型放在同样的起跑线上,进行同样的优化步骤,最后,多测试几次来证明模型的表现确实有显著的进步。
2. 比较模型时,用点统计学看到这一条的时候,实在忍不住想到,现在比较模型的方法,有时甚至不如宝可梦对战。宝可梦好歹还可能因为属性和技能导致的胜负反转。模型之间就列一两个指标,拿着1%的差异说事。还是多用用压箱底的统计学知识吧,例如,比较分类器的时候可以上McNemar检验,检查模型对数据拟合的分布时,可以试试Student's T检验。关于模型到底有没有显著的改进这个问题,这些方法能够提供更有力的理论支撑。
3. 如何正确地比较多个模型如果用了统计学的知识来好好验证模型效果,你需要注意到,比较多个模型的操作有点复杂。进行统计检验时,置信度往往设为95%,那么从统计学上来说,每20次检测就会有1次的结论可能不可信。而模型越多,比较次数越多,出现失误的概率也就越大。为了避免这一风险,比对模型后,应当进行矫正,Bonferroni校正便是一种常用的方法,能够简单地根据测试的数量修正显著性的阈值(这一操作目前仍然存在争议)。
4. 不要盲信benchmark的结果基准测试之所以存在,是希望大家使用统一的数据训练和测试模型,使模型之间更容易比较。但是,即使你自己的模型训练完全符合规范,也不能保证他人是否将测试集用于训练了。实际上,很多表现最好的模型可能只是恰好过拟合了测试集,泛化性未必有保障。总之,一定要谨慎地对待基准测试的结果,不要以为在基准数据集上有一点点性能提升就能证明模型的显著性。
5. 记得考虑集成模型虽然有些人可能很嫌弃,但应用到子领域的的时候,能抓老鼠的就是好猫。缝合怪没有错。有时候,把不同的模型集成成为一个大一统模型,确实能够利用它们各自的特点补齐短板,提升模型在面对多样化场景时的泛化性。比如最近几年兴起的全景分割,目前最流行的操作就是把语义分割和像素分割的模型拼在一起,从而得到对前景中独立个体和背景内容的全面信息。集成模型的难点就是集成,如何结合每个子模型提取的数据特征,如何选择合理的输入和输出格式。我有一位朋友,似乎每天在因为这些问题愁得掉头发。
1. 尽可能透明公开2. 多角度评估表现3. 不要轻易推广结论4. 谨慎地讨论显著性5. 模型:请再多懂我一点<
- 上一篇:怎么区分酒瓶材质,酒瓶材质有哪些
- 下一篇:五粮液酒价,五粮液酒图片大全