中国科学技术大学管理科学与工程专业在职博士生,就职于中国邮政储蓄银行总行软件研发中心,主要研究方向是大数据技术及其应用。
模型复现涉及到科学研究的可靠性、可复用性和可推广性。模型复现的好处有以下几点:
1. 模型复现可以帮助我们检验和验证已有的研究成果,发现其中的问题和不足,提高研究的质量和水平。
2. 模型复现可以帮助我们学习和掌握前沿的方法和技术,提高自己的理论和实践能力,拓展自己的知识面和视野。
3. 模型复现可以帮助我们利用已有的资源和成果,进行创新和改进,提出新的问题和解决方案,推动研究的进步和发展。
模型复现的挑战和建议也有很多,比如:
1. 模型复现的难度和复杂度取决于模型的类型、规模、结构、参数等因素,不同的模型可能需要不同的数据、环境、工具、技能等条件,我们需要根据具体的情况选择合适的模型和复现方法。
2. 模型复现的可复现性受到很多因素的影响,比如随机种子、数据增强、多线程计算、超参数设置等。要尽可能保证模型的可复现性,需要对这些因素进行控制或固定,以减少随机性的影响。
3. 模型复现的结果和评价也需要注意,不同的模型可能有不同的目的和应用,不同的数据集和评价指标可能反映不同的方面。我们需要根据自己的研究问题和背景,选择合适的模型和评价方法,或者对模型进行错误分析,找出模型的优劣和改进的方向。
1. 模型的可复现性受到很多因素的影响,比如随机种子,数据增强,多线程计算,超参数设置等。要尽可能保证模型的可复现性,需要对这些因素进行控制或固定,以减少随机性的影响。
2. 模型的性能也取决于数据集的质量和数量,以及模型的结构和复杂度。如果数据集不足或者噪声太多,模型可能会出现欠拟合或过拟合的问题。如果模型太简单或者太复杂,也可能无法很好地拟合数据。你可以尝试增加数据集的规模和多样性,或者使用数据增强的技术来提高数据的质量。你也可以调整模型的结构和参数,或者选择另一种性能更好的模型架构。
3. 模型的性能也和评价指标有关,不同的指标可能反映不同的方面。如果你的模型在某些指标上表现很差,但是在其他指标上表现很好,那么可能说明你的模型对某些任务或场景更适合,或者你的模型有一些特定的优势或劣势。你可以根据你的模型的目的和应用,选择合适的指标来评价你的模型,或者对你的模型进行错误分析,找出模型的不足和改进的方向。
对于 AI 模型,用不同的显卡跑,结果很大可能不一样。求偏导的结果可能是不准确的,比如有有限循环小数,然后由于每个显卡精度不一样,导致反向传播和梯度下降的精度不一样。试想一下深度学习中常见的两种问题:梯度爆炸和梯度消失。它们都与神经网络的梯度更新有关。梯度是指损失函数对于网络参数的偏导数,它反映了参数变化对于损失函数的影响。梯度下降是一种优化算法,它根据梯度的方向和大小,不断地调整参数,使得损失函数达到最小值。
梯度爆炸是指在反向传播过程中,梯度的值变得非常大,超过了一个阈值,导致参数的更新不稳定,甚至出现NaN或者溢出的情况。梯度爆炸的原因可能有以下几点:
1.网络层数过深,导致梯度在链式法则中不断累乘,如果梯度的绝对值大于1,那么梯度会呈指数级增长。
2.权重初始化的值过大,导致梯度的放大效应,如果权重的绝对值大于1,那么梯度会随着权重的增加而增加。
3.损失函数的值过大,导致梯度的放大效应,如果损失函数的值远大于1,那么梯度会随着损失函数的增加而增加。
梯度消失是指在反向传播过程中,梯度的值变得非常小,接近于0,导致参数的更新缓慢或者停滞,甚至无法收敛。梯度消失的原因可能有以下几点:
1.网络层数过深,导致梯度在链式法则中不断累乘,如果梯度的绝对值小于1,那么梯度会呈指数级衰减。
2.激活函数的选择不合适,导致梯度的衰减效应,如果激活函数的导数的绝对值小于1,那么梯度会随着激活函数的变化而减小。比如,sigmoid函数和tanh函数在饱和区的导数接近于0,因此容易导致梯度消失。
3.权重初始化的值过小,导致梯度的衰减效应,如果权重的绝对值小于1,那么梯度会随着权重的减小而减小。
模型复现的难点在于,原作者要知道怎么保证模型的确定性,并且公开这部分他的操作。模型复现者要知道怎么保证确定性,并且完全参照这部分操作。
随机种子,数据集处理,数据集的shuffle的确定性,参数初始化的一致性。这些都是基本操作,就是做研究写代码的基本素养。
余下就是容易被人忽略的deterministic和分布式训练时的顺序冲突问题。而这部分框架的文档里都有。我一直使用的都是TensorFlow2,其中单机的确定性,多机分布式的确定性,随机发生器在单机多机的时候的规则都有操作指南。
有了这些操作,就是可以让硬件产生一样的结果的。
一个不一样,微乎其微,但是 1000 多万个参数,都有一点区别,一点点小小的变化会导致最后发生一个很大的变化。
用复现的结果,一定要记住,保存证据,保存你跑出来的模型文件,然后写论文的时候记住,标明一下。
比如:原论文评价指标结果是:score=91,复现后score= 89(它的模型,他论文标明的参数,最好是相同的显卡)。
那我们的模型只要达到score= 90 就行了。这个 90 不需要你和他的参数一致,通过调参来找到自己模型的最优值跟他对比,比如它的 lr =0.05,我们可以是lr=0.005。
“e论文”微信公众号由国内外在职教师组成,是交流科研和论文写作经验的一线平台,已推出250+篇原创推文,每周持续更新,举(协)办了4个在线讲座。非常骄傲我们原创的科研日历被9万+教师和研究生所关注。如果喜欢,请点赞、关注和分享。